From bcb77765d2385d3c1cb40d2c45a6064ad34e6e72 Mon Sep 17 00:00:00 2001 From: Zoe Pfister <zoe.pfister@student.uibk.ac.at> Date: Mon, 5 Sep 2022 11:04:24 +0200 Subject: [PATCH] allow rtc time synchronization using NTP. Closes #4 --- host/fipy/lib/rtc_time.py | 28 ++++++++++++++++++++++++++++ host/fipy/main.py | 21 ++++++++++++--------- 2 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 host/fipy/lib/rtc_time.py diff --git a/host/fipy/lib/rtc_time.py b/host/fipy/lib/rtc_time.py new file mode 100644 index 0000000..c957d2f --- /dev/null +++ b/host/fipy/lib/rtc_time.py @@ -0,0 +1,28 @@ +from time import sleep +from machine import RTC + + +class RTCTime: + def __init__( + self, + main_ntp_server: str = "pool.ntp.org", + backup_ntp_server: str = "time.nist.gov", + update_interval_seconds: int = 3600, + ): + self.rtc = RTC() + self._setup_ntp(main_ntp_server, backup_ntp_server, update_interval_seconds) + + def _setup_ntp( + self, main_ntp_server: str, backup_ntp_server: str, update_interval_seconds: int + ): + print("Setting up NTP") + self.rtc.ntp_sync(main_ntp_server, update_interval_seconds, backup_ntp_server) + while not self.rtc.synced(): + print(self.rtc.synced()) + sleep(1) + + def get_time(self): + return self.rtc.now() + + def is_synchronized(self): + return self.rtc.synced() diff --git a/host/fipy/main.py b/host/fipy/main.py index 1735bdb..4f51b3d 100644 --- a/host/fipy/main.py +++ b/host/fipy/main.py @@ -5,6 +5,7 @@ import binascii import struct from time import sleep from lib.server_transfer import DataTransferWiFi +from lib.rtc_time import RTCTime def bytes_to_data(msg): @@ -35,21 +36,23 @@ def espnow_recv(result): print(error) -# data = DataTransferWiFi() -# data.connect("Z", "AbsoluteSandwich") -# data.send( -# "airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.4844531056779361 1661175680\nairSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.65192991869171,co=0.5141876544505826 1661175680\nairSensors,sensor_id=TLM0202 temperature=75.30007505999756,humidity=35.65192991869171,co=0.5141876544505826 1661175680" -# ) +data = DataTransferWiFi() +data.connect("Z", "AbsoluteSandwich") +data.send( + "airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.4844531056779361 1661175680\nairSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.65192991869171,co=0.5141876544505826 1661175680\nairSensors,sensor_id=TLM0202 temperature=75.30007505999756,humidity=35.65192991869171,co=0.5141876544505826 1661175680" +) # data.disconnect() -w = WLAN() +rtc_time = RTCTime() +# w = WLAN() -ESPNOW.init() -p = ESPNOW.add_peer("58cf79043c84") +# ESPNOW.init() +# p = ESPNOW.add_peer("58cf79043c84") -ESPNOW.on_recv(espnow_recv) +# ESPNOW.on_recv(espnow_recv) while True: print("...") sleep(5) + print(rtc_time.get_time()) pass -- GitLab