diff --git a/client/client/src/main.cpp b/client/client/src/main.cpp index 2dbc0660144d2f4b8c193559aae3624b536bfd66..2356891f844d1d0e9ef44eadb25d7ae8c30fcbff 100644 --- a/client/client/src/main.cpp +++ b/client/client/src/main.cpp @@ -15,6 +15,8 @@ void setup() esp_err_t result = espnow_setup(); + esptime::rtc = ESP32Time(); + StaticJsonDocument<96> doc; doc["sensor"] = "gps"; @@ -42,7 +44,7 @@ void loop() // resend_message->send(); // delete resend_message; // } - Serial.println("Current Time: " + (String) esptime::rtc.getMillis()); + Serial.println(esptime::rtc.getMillis()); Serial.println("delaying..."); Serial.flush(); delay(5000); diff --git a/host/fipy/lib/espnow.py b/host/fipy/lib/espnow.py index 1e04f9bd393cff2917770eda5c66997d92442da9..6afe2a8b0c2d766e626dd864c493e6a3dd8ab6e7 100644 --- a/host/fipy/lib/espnow.py +++ b/host/fipy/lib/espnow.py @@ -1,22 +1,25 @@ import network from network import ESPNOW import time -# from lib.rtc_time import RTCTime - +from lib.rtc_time import RTCTime import struct w = network.WLAN() self_mac, sta = w.mac() +peer_list = [] -class Forte_ESPNOW: +class Forte_ESPNOW: def __init__(self): ESPNOW.init() - p = ESPNOW.add_peer("58CF7904412C") # TODO: make management of peers dynamic (line 37) ESPNOW.on_recv(espnow_recv) + + def add_peer(mac): + peer_list.append(ESPNOW.add_peer(mac)) def espnow_respond(mac): - msg = struct.pack("<6sl", self_mac, time.time() * 1000) - print(time.time() * 1000) + msg = struct.pack("<6sl", self_mac, time.time()) + print(int(time.time())) + ESPNOW.send(mac, msg) print("response sent") @@ -26,15 +29,16 @@ def espnow_recv(result): data = bytes_to_data(msg) try: - print(data["amountData"]) - print(data["timestamp"]) - print(data["data"]) + print("amount data: " + str(data["amountData"])) + # print(data["timestamp"]) + # print(data["data"]) except Exception as error: print(error) - # if(result not in ESPNOW.get_peers()): - # ESPNOW.add_peer(mac) + if(peer not in peer_list): + Forte_ESPNOW.add_peer(mac) + espnow_respond(mac) def bytes_to_data(msg): diff --git a/host/fipy/lib/rtc_time.py b/host/fipy/lib/rtc_time.py new file mode 100644 index 0000000000000000000000000000000000000000..d57b3944d0e00847266b988349464009d3e0a971 --- /dev/null +++ b/host/fipy/lib/rtc_time.py @@ -0,0 +1,35 @@ +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 __init__(self, datetime): + self.rtc = RTC() + self.rtc.init(datetime) + + 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 272578419028d88e3fa599a5af01d3d521a6cf4f..020d027e0345c701725c418eade7e55179d05551 100644 --- a/host/fipy/main.py +++ b/host/fipy/main.py @@ -1,12 +1,9 @@ # main.py -- put your code here! -from network import WLAN -from pycom import rgbled # from network import ESPNOW -import binascii -import struct from time import sleep from lib.server_transfer import DataTransferWiFi from lib.espnow import Forte_ESPNOW +from lib.rtc_time import RTCTime # data = DataTransferWiFi() # data.connect("Z", "AbsoluteSandwich") @@ -15,9 +12,8 @@ from lib.espnow import Forte_ESPNOW # ) # data.disconnect() # +rtc_time = RTCTime((2014, 5, 1, 4, 13, 0, 0, 0)) espnow = Forte_ESPNOW() -w = WLAN() while True: - rgbled(0x007f00) sleep(5) pass