initial commit

This commit is contained in:
Fusselkater 2022-08-10 18:19:07 +02:00
commit 609f3ac2e6
3 changed files with 78 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
config.py

2
boot.py Normal file
View File

@ -0,0 +1,2 @@
import esp
esp.osdebug(None)

75
main.py Normal file
View File

@ -0,0 +1,75 @@
import machine
import neopixel
import config
import ntptime
import time
import webrepl
def set_time(hour, minute):
np_hour = neopixel.NeoPixel(machine.Pin(23), 24, bpp=4)
np_hour[(hour % 12) * 2 + int(minute / 30)] = config.HOUR_COLOR
np_hour.write()
np_minute = neopixel.NeoPixel(machine.Pin(32), 30, bpp=4)
np_minute[int(minute / 2)] = config.MINUTE_COLOR
np_minute.write()
def connect_wifi(ssid, psk):
import network
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
sta_if.active(True)
sta_if.connect(ssid, psk)
while not sta_if.isconnected():
pass
webrepl.start()
return(sta_if.ifconfig())
def sync_ntptime():
try:
print("Syncing time...")
ntptime.settime()
except:
print("Could not sync time")
def check_daylight_saving(current_time):
for day in range(25, 32):
t = time.mktime((current_time[0], 3, day, 2, 0, 0, 0, 0))
if time.localtime(t)[6] == 6:
summer_time = t
break
for day in range(24, 32):
t = time.mktime((current_time[0], 10, day, 2, 0, 0, 0, 0))
if time.localtime(t)[6] == 6:
winter_time = t
break
comp_time = time.mktime(current_time)
if summer_time <= comp_time <= winter_time:
return True
return False
# Main Loop
while True:
# Call connect_wifi to reconnect if connection is lost
connect_wifi(config.WIFI_SSID, config.WIFI_PSK)
current_time = time.localtime()
# Sync time if we are on full hour
if current_time[4] == 0 and current_time[5] == 0 or current_time[0] == 2000:
sync_ntptime()
current_time = time.localtime()
if check_daylight_saving(current_time):
current_time = time.localtime(time.mktime(current_time) + config.TIMEZONE_OFFSET_DAYLIGHT)
else:
current_time = time.localtime(time.mktime(current_time) + config.TIMEZONE_OFFSET)
print("Set Time:", current_time)
set_time(current_time[3], current_time[4])
time.sleep(1)