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