Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from picamera import PiCamera
- import logging
- import ntplib
- from time import ctime
- import time
- from datetime import datetime
- import socket,datetime
- # Define the IP address and the Port Number
- ip = "127.0.0.1";
- port = 7070;
- camera = PiCamera()
- camera.start_preview()
- class NtpException(Exception):
- pass
- def SyncClockToNtp():
- """Syncs the hardware clock to an NTP server."""
- server = 'europe.pool.ntp.org'
- retries = 2
- RETRY_DELAY=5
- logging.info('Reading time from NTP server %s.', server)
- attempts = 0
- client = ntplib.NTPClient()
- response = None
- while True:
- try:
- response = client.request(server, version=3)
- except (ntplib.NTPException, socket.gaierror) as e:
- logging.error('NTP client request error: %s', str(e))
- if response or attempts >= retries:
- break
- logging.info(
- 'Unable to contact NTP server %s to sync machine clock. This '
- 'machine may not have an IP address yet; waiting %d seconds and '
- 'trying again. Repeated failure may indicate network or driver '
- 'problems.', server, RETRY_DELAY)
- time.sleep(RETRY_DELAY)
- attempts += 1
- if not response:
- raise NtpException('No response from NTP server.')
- now = time.clock_gettime(time.CLOCK_REALTIME)
- print("old time:",ctime(now))
- #print("Offset",response.offset)
- print("tx_time",ctime(response.tx_time))
- #print(response.tx_time)
- time.clock_settime(time.CLOCK_REALTIME, (response.tx_time))
- now = time.clock_gettime(time.CLOCK_REALTIME)
- print("Updated time:",ctime(now))
- if __name__=='__main__':
- try:
- SyncClockToNtp()
- except NtpException:
- print("No response from NTP server. Please check your internet connection")
- listeningAddress = (ip, port)
- print("Listning on ",listeningAddress)
- # Create a datagram based server socket that uses IPv4 addressing scheme
- datagramSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- datagramSocket.bind(listeningAddress)
- try:
- while(True):
- tempVal, sourceAddress = datagramSocket.recvfrom(128)
- print("Time decided by %s is %s"%(sourceAddress, tempVal.decode()))
- response = "Received at: %s"%datetime.datetime.now()
- #print("Response: ",response)
- now = str(time.clock_gettime(time.CLOCK_REALTIME)+1)
- print(now)
- datagramSocket.sendto(response.encode(), sourceAddress)
- while now < tempVal.decode():
- now = str(time.clock_gettime(time.CLOCK_REALTIME)+1)
- print("Server takes picture at: ", now)
- camera.capture('/home/pi/Desktop/image%s.jpg' % ctime(datetime.datetime.now()))
- except keyboardInterrupt:
- print("Exiting Nicely")
- camera.stop_preview()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement