74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
import asyncio
|
|
import aioespnow
|
|
from settings import Settings
|
|
from web import web
|
|
from patterns import Patterns
|
|
import gc
|
|
import utime
|
|
import machine
|
|
import time
|
|
import wifi
|
|
|
|
|
|
async def main():
|
|
settings = Settings()
|
|
|
|
patterns = Patterns(settings["led_pin"], settings["num_leds"], selected=settings["pattern"])
|
|
if settings["color_order"] == "rbg": color_order = (1, 5, 3)
|
|
else: color_order = (1, 3, 5)
|
|
patterns.set_color1(tuple(int(settings["color1"][i:i+2], 16) for i in color_order))
|
|
patterns.set_color2(tuple(int(settings["color2"][i:i+2], 16) for i in color_order))
|
|
patterns.set_brightness(int(settings["brightness"]))
|
|
patterns.set_delay(int(settings["delay"]))
|
|
|
|
async def tick():
|
|
while True:
|
|
patterns.tick()
|
|
await asyncio.sleep_ms(1)
|
|
|
|
async def espnow():
|
|
e = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support
|
|
e.active(True)
|
|
async for mac, msg in e:
|
|
print(msg)
|
|
settings.set_settings(msg, patterns)
|
|
print("should not print")
|
|
|
|
async def wifi_connect():
|
|
for i in range(10):
|
|
config = wifi.connect(settings.get("wifi_ssid", ""),
|
|
settings.get("wifi_password", ""),
|
|
settings.get("wifi_ip", ""),
|
|
settings.get("wifi_gateway", "")
|
|
)
|
|
if config:
|
|
print(config)
|
|
break
|
|
await asyncio.sleep_ms(500)
|
|
|
|
w = web(settings, patterns)
|
|
print(settings)
|
|
# start the server in a bacakground task
|
|
print("Starting")
|
|
server = asyncio.create_task(w.start_server(host="0.0.0.0", port=80))
|
|
wdt = machine.WDT(timeout=10000)
|
|
wdt.feed()
|
|
|
|
|
|
asyncio.create_task(wifi_connect())
|
|
asyncio.create_task(tick())
|
|
asyncio.create_task(espnow())
|
|
|
|
while True:
|
|
|
|
#print(time.localtime())
|
|
gc.collect()
|
|
for i in range(20):
|
|
wdt.feed()
|
|
await asyncio.sleep_ms(1000)
|
|
|
|
# cleanup before ending the application
|
|
await server
|
|
|
|
asyncio.run(main())
|