adafruit / Adafruit_CircuitPython_NTP

Network Time Protocol (NTP) Helper for CircuitPython
MIT License
9 stars 18 forks source link

Does not work with adafruit_esp32spi_socket #27

Closed mattdm closed 2 months ago

mattdm commented 2 years ago

I found #16, which seems somewhat ironic. I have the Adafruit matrix portal, but I want to actually use the NTP server on my local network rather than the web API the example code seems to lean on. As a simple test, I'm doing

import adafruit_esp32spi.adafruit_esp32spi_socket as socket

[... wifi setup and stuff ... ]

ntp = adafruit_ntp.NTP(socket)

while True:
    print(ntp.datetime)
    time.sleep(1)
Traceback (most recent call last):
  File "code.py", line 62, in <module>
  File "adafruit_ntp.py", line 77, in datetime
AttributeError: 'socket' object has no attribute '__exit__'\

(Line 62, which triggers the error, is the ntp.datetime call.)

anecdata commented 2 years ago

Yes, #20 switched it to work with native wifi (CPython-like UDP).

ESP32SPI has esp.get_time(). If there is a connection to the internet, the ESP32 will get the time in the background after (I think) about 15 seconds) and keep it's internal clock up to date. For LAN-only it may not work since the NTP server is probably hard-coded. But you can do an ESP32SPI-compatible UDP NTP implementation from an old version of this library.

anecdata commented 2 months ago

Closed by #32