Skip to content

Commit 084d255

Browse files
authored
Merge pull request #43 from tannewt/use_real_ntp
Switch examples for adafruit_ntp 3+
2 parents 3ffbaa6 + aea1fd9 commit 084d255

17 files changed

+136
-154
lines changed

docs/conf.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
autodoc_mock_imports = [
2929
"adafruit_binascii",
3030
"adafruit_logging",
31-
"adafruit_requests",
3231
"adafruit_hashlib",
33-
"adafruit_ntp",
3432
"adafruit_minimqtt",
3533
]
3634

examples/azureiot_esp32spi/azureiot_central_commands.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import busio
77
from digitalio import DigitalInOut
88
import neopixel
9+
import rtc
910
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1011
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
11-
from adafruit_ntp import NTP
1212

1313
# Get wifi details and more from a secrets.py file
1414
try:
@@ -53,11 +53,15 @@
5353

5454
print("Getting the time...")
5555

56-
ntp = NTP(esp)
57-
# Wait for a valid time to be received
58-
while not ntp.valid_time:
59-
time.sleep(5)
60-
ntp.set_time()
56+
# get_time will raise ValueError if the time isn't available yet so loop until
57+
# it works.
58+
now_utc = None
59+
while now_utc is None:
60+
try:
61+
now_utc = time.localtime(esp.get_time()[0])
62+
except ValueError:
63+
pass
64+
rtc.RTC().datetime = now_utc
6165

6266
print("Time:", str(time.time()))
6367

examples/azureiot_esp32spi/azureiot_central_notconnected.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import busio
99
from digitalio import DigitalInOut
1010
import neopixel
11+
import rtc
1112
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1213
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
13-
from adafruit_ntp import NTP
1414

1515
# Get wifi details and more from a secrets.py file
1616
try:
@@ -55,11 +55,7 @@
5555

5656
print("Getting the time...")
5757

58-
ntp = NTP(esp)
59-
# Wait for a valid time to be received
60-
while not ntp.valid_time:
61-
time.sleep(5)
62-
ntp.set_time()
58+
rtc.RTC().datetime = time.localtime(esp.get_time()[0])
6359

6460
print("Time:", str(time.time()))
6561

examples/azureiot_esp32spi/azureiot_central_properties.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import busio
88
from digitalio import DigitalInOut
99
import neopixel
10+
import rtc
1011
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1112
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
12-
from adafruit_ntp import NTP
1313

1414
# Get wifi details and more from a secrets.py file
1515
try:
@@ -54,11 +54,15 @@
5454

5555
print("Getting the time...")
5656

57-
ntp = NTP(esp)
58-
# Wait for a valid time to be received
59-
while not ntp.valid_time:
60-
time.sleep(5)
61-
ntp.set_time()
57+
# get_time will raise ValueError if the time isn't available yet so loop until
58+
# it works.
59+
now_utc = None
60+
while now_utc is None:
61+
try:
62+
now_utc = time.localtime(esp.get_time()[0])
63+
except ValueError:
64+
pass
65+
rtc.RTC().datetime = now_utc
6266

6367
print("Time:", str(time.time()))
6468

examples/azureiot_esp32spi/azureiot_central_simpletest.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import busio
99
from digitalio import DigitalInOut
1010
import neopixel
11+
import rtc
1112
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1213
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
13-
from adafruit_ntp import NTP
1414

1515
# Get wifi details and more from a secrets.py file
1616
try:
@@ -55,11 +55,15 @@
5555

5656
print("Getting the time...")
5757

58-
ntp = NTP(esp)
59-
# Wait for a valid time to be received
60-
while not ntp.valid_time:
61-
time.sleep(5)
62-
ntp.set_time()
58+
# get_time will raise ValueError if the time isn't available yet so loop until
59+
# it works.
60+
now_utc = None
61+
while now_utc is None:
62+
try:
63+
now_utc = time.localtime(esp.get_time()[0])
64+
except ValueError:
65+
pass
66+
rtc.RTC().datetime = now_utc
6367

6468
print("Time:", str(time.time()))
6569

examples/azureiot_esp32spi/azureiot_hub_directmethods.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import busio
77
from digitalio import DigitalInOut
88
import neopixel
9+
import rtc
910
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1011
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
11-
from adafruit_ntp import NTP
1212

1313
# Get wifi details and more from a secrets.py file
1414
try:
@@ -53,11 +53,15 @@
5353

5454
print("Getting the time...")
5555

56-
ntp = NTP(esp)
57-
# Wait for a valid time to be received
58-
while not ntp.valid_time:
59-
time.sleep(5)
60-
ntp.set_time()
56+
# get_time will raise ValueError if the time isn't available yet so loop until
57+
# it works.
58+
now_utc = None
59+
while now_utc is None:
60+
try:
61+
now_utc = time.localtime(esp.get_time()[0])
62+
except ValueError:
63+
pass
64+
rtc.RTC().datetime = now_utc
6165

6266
print("Time:", str(time.time()))
6367

examples/azureiot_esp32spi/azureiot_hub_messages.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import busio
99
from digitalio import DigitalInOut
1010
import neopixel
11+
import rtc
1112
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1213
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
13-
from adafruit_ntp import NTP
1414

1515
# Get wifi details and more from a secrets.py file
1616
try:
@@ -55,11 +55,15 @@
5555

5656
print("Getting the time...")
5757

58-
ntp = NTP(esp)
59-
# Wait for a valid time to be received
60-
while not ntp.valid_time:
61-
time.sleep(5)
62-
ntp.set_time()
58+
# get_time will raise ValueError if the time isn't available yet so loop until
59+
# it works.
60+
now_utc = None
61+
while now_utc is None:
62+
try:
63+
now_utc = time.localtime(esp.get_time()[0])
64+
except ValueError:
65+
pass
66+
rtc.RTC().datetime = now_utc
6367

6468
print("Time:", str(time.time()))
6569

examples/azureiot_esp32spi/azureiot_hub_simpletest.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import busio
99
from digitalio import DigitalInOut
1010
import neopixel
11+
import rtc
1112
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1213
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
13-
from adafruit_ntp import NTP
1414

1515
# Get wifi details and more from a secrets.py file
1616
try:
@@ -55,11 +55,15 @@
5555

5656
print("Getting the time...")
5757

58-
ntp = NTP(esp)
59-
# Wait for a valid time to be received
60-
while not ntp.valid_time:
61-
time.sleep(5)
62-
ntp.set_time()
58+
# get_time will raise ValueError if the time isn't available yet so loop until
59+
# it works.
60+
now_utc = None
61+
while now_utc is None:
62+
try:
63+
now_utc = time.localtime(esp.get_time()[0])
64+
except ValueError:
65+
pass
66+
rtc.RTC().datetime = now_utc
6367

6468
print("Time:", str(time.time()))
6569

examples/azureiot_esp32spi/azureiot_hub_twin_operations.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import busio
88
from digitalio import DigitalInOut
99
import neopixel
10+
import rtc
1011
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
1112
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
12-
from adafruit_ntp import NTP
1313

1414
# Get wifi details and more from a secrets.py file
1515
try:
@@ -54,11 +54,15 @@
5454

5555
print("Getting the time...")
5656

57-
ntp = NTP(esp)
58-
# Wait for a valid time to be received
59-
while not ntp.valid_time:
60-
time.sleep(5)
61-
ntp.set_time()
57+
# get_time will raise ValueError if the time isn't available yet so loop until
58+
# it works.
59+
now_utc = None
60+
while now_utc is None:
61+
try:
62+
now_utc = time.localtime(esp.get_time()[0])
63+
except ValueError:
64+
pass
65+
rtc.RTC().datetime = now_utc
6266

6367
print("Time:", str(time.time()))
6468

examples/azureiot_native_networking/azureiot_central_commands.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
22
# SPDX-License-Identifier: MIT
33

4-
import ssl
54
import time
65

76
import rtc
87
import socketpool
98
import wifi
109

11-
import adafruit_requests
10+
import adafruit_ntp
1211
from adafruit_azureiot import IoTCentralDevice
1312
from adafruit_azureiot.iot_mqtt import IoTResponse
1413

@@ -27,17 +26,13 @@
2726
if time.localtime().tm_year < 2022:
2827
print("Setting System Time in UTC")
2928
pool = socketpool.SocketPool(wifi.radio)
30-
requests = adafruit_requests.Session(pool, ssl.create_default_context())
31-
response = requests.get("https://io.adafruit.com/api/v2/time/seconds")
32-
if response:
33-
if response.status_code == 200:
34-
r = rtc.RTC()
35-
r.datetime = time.localtime(int(response.text))
36-
print(f"System Time: {r.datetime}")
37-
else:
38-
print("Setting time failed")
39-
else:
40-
print("Year seems good, skipping set time.")
29+
ntp = adafruit_ntp.NTP(pool, tz_offset=0)
30+
31+
# NOTE: This changes the system time so make sure you aren't assuming that time
32+
# doesn't jump.
33+
rtc.RTC().datetime = ntp.datetime
34+
else:
35+
print("Year seems good, skipping set time.")
4136

4237
# To use Azure IoT Central, you will need to create an IoT Central app.
4338
# You can either create a free tier app that will live for 7 days without an Azure subscription,

examples/azureiot_native_networking/azureiot_central_notconnected.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33

44
import json
55
import random
6-
import ssl
76
import time
87

98
import rtc
109
import socketpool
1110
import wifi
1211

13-
import adafruit_requests
12+
import adafruit_ntp
1413
from adafruit_azureiot import (
1514
IoTCentralDevice,
1615
IoTError,
@@ -31,17 +30,13 @@
3130
if time.localtime().tm_year < 2022:
3231
print("Setting System Time in UTC")
3332
pool = socketpool.SocketPool(wifi.radio)
34-
requests = adafruit_requests.Session(pool, ssl.create_default_context())
35-
response = requests.get("https://io.adafruit.com/api/v2/time/seconds")
36-
if response:
37-
if response.status_code == 200:
38-
r = rtc.RTC()
39-
r.datetime = time.localtime(int(response.text))
40-
print(f"System Time: {r.datetime}")
41-
else:
42-
print("Setting time failed")
43-
else:
44-
print("Year seems good, skipping set time.")
33+
ntp = adafruit_ntp.NTP(pool, tz_offset=0)
34+
35+
# NOTE: This changes the system time so make sure you aren't assuming that time
36+
# doesn't jump.
37+
rtc.RTC().datetime = ntp.datetime
38+
else:
39+
print("Year seems good, skipping set time.")
4540

4641
# To use Azure IoT Central, you will need to create an IoT Central app.
4742
# You can either create a free tier app that will live for 7 days without an Azure subscription,

examples/azureiot_native_networking/azureiot_central_properties.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
# SPDX-License-Identifier: MIT
33

44
import random
5-
import ssl
65
import time
76

87
import rtc
98
import socketpool
109
import wifi
1110

12-
import adafruit_requests
11+
import adafruit_ntp
1312
from adafruit_azureiot import IoTCentralDevice
1413

1514
# Get wifi details and more from a secrets.py file
@@ -27,17 +26,13 @@
2726
if time.localtime().tm_year < 2022:
2827
print("Setting System Time in UTC")
2928
pool = socketpool.SocketPool(wifi.radio)
30-
requests = adafruit_requests.Session(pool, ssl.create_default_context())
31-
response = requests.get("https://io.adafruit.com/api/v2/time/seconds")
32-
if response:
33-
if response.status_code == 200:
34-
r = rtc.RTC()
35-
r.datetime = time.localtime(int(response.text))
36-
print(f"System Time: {r.datetime}")
37-
else:
38-
print("Setting time failed")
39-
else:
40-
print("Year seems good, skipping set time.")
29+
ntp = adafruit_ntp.NTP(pool, tz_offset=0)
30+
31+
# NOTE: This changes the system time so make sure you aren't assuming that time
32+
# doesn't jump.
33+
rtc.RTC().datetime = ntp.datetime
34+
else:
35+
print("Year seems good, skipping set time.")
4136

4237
# To use Azure IoT Central, you will need to create an IoT Central app.
4338
# You can either create a free tier app that will live for 7 days without an Azure subscription,

0 commit comments

Comments
 (0)