69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
import asyncio
|
|
import aioespnow
|
|
import patterns
|
|
from settings import Settings
|
|
from web import web
|
|
from patterns import Patterns
|
|
import gc
|
|
import utime
|
|
import machine
|
|
import time
|
|
import wifi
|
|
import json
|
|
from p2p import p2p
|
|
import espnow
|
|
import network
|
|
|
|
def main():
|
|
settings = Settings()
|
|
print(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"]))
|
|
|
|
sta_if = network.WLAN(network.STA_IF)
|
|
sta_if.active(True)
|
|
|
|
e = espnow.ESPNow()
|
|
e.active(True)
|
|
|
|
wdt = machine.WDT(timeout=10000)
|
|
wdt.feed()
|
|
while True:
|
|
patterns.tick()
|
|
wdt.feed()
|
|
host, msg = e.recv(0)
|
|
if msg:
|
|
try:
|
|
data = json.loads(msg)
|
|
print(data)
|
|
|
|
defaults = data.get("d", {})
|
|
bar = data.get(settings.get("name"), {})
|
|
|
|
patterns.set_brightness(bar.get("brightness", defaults.get("brightness", 100)))
|
|
patterns.set_delay(bar.get("delay", defaults.get("delay", 100)))
|
|
colors = bar.get("colors", defaults.get("colors", ["#000000", "#000000"]))
|
|
patterns.colors = [tuple(int(color[i:i+2], 16) for i in settings.color_order) for color in colors]
|
|
patterns.select(bar.get("pattern", defaults.get("pattern", "off")))
|
|
patterns.n1 = bar.get("n1", defaults.get("n1", 0))
|
|
patterns.n2 = bar.get("n2", defaults.get("n2", 58))
|
|
patterns.on_width = bar.get("on_width", defaults.get("on_width", 1))
|
|
patterns.off_width = bar.get("off_width", defaults.get("off_width", 2))
|
|
patterns.oneshot = bar.get("oneshot", defaults.get("oneshot", False))
|
|
patterns.beat = bar.get("beat", defaults.get("beat", False))
|
|
patterns.beat_mode = bar.get("beat_mode", defaults.get("beat_mode", False))
|
|
patterns.auto = bar.get("auto", defaults.get("auto", True))
|
|
|
|
except:
|
|
print(f"Failed to load espnow data {msg}")
|
|
continue
|
|
|
|
|
|
main()
|