feat: focus panel on rgb leds and speed boot

This commit is contained in:
2026-05-15 19:01:37 +08:00
parent 4ff64b31d9
commit 9ff66372d3
5 changed files with 89 additions and 13 deletions
+23 -3
View File
@@ -2,6 +2,7 @@
import json
import tempfile
import threading
import urllib.error
import urllib.request
from pathlib import Path
from led_panel import Handler, ThreadingHTTPServer
@@ -34,6 +35,16 @@ def main():
(d2 / 'brightness').write_text('1')
(d2 / 'max_brightness').write_text('1')
(d2 / 'trigger').write_text('[none] timer')
d3 = root / 'green:wlan'
d3.mkdir()
(d3 / 'brightness').write_text('1')
(d3 / 'max_brightness').write_text('1')
(d3 / 'trigger').write_text('[none] timer')
hidden = root / 'sim:en'
hidden.mkdir()
(hidden / 'brightness').write_text('1')
(hidden / 'max_brightness').write_text('1')
(hidden / 'trigger').write_text('[none] timer')
config_path = root / 'config.json'
led_panel.LED_ROOT = root
led_panel.CONFIG_PATH = config_path
@@ -43,7 +54,13 @@ def main():
t.start()
try:
leds = req(port, '/api/leds')
assert leds['ok'] and leds['leds'][0]['name'] == 'blue:wan'
names = [led['name'] for led in leds['leds']]
assert leds['ok'] and names == ['blue:wan', 'green:wlan', 'red:power']
try:
req(port, '/api/brightness', {'name':'sim:en','value':0})
raise AssertionError('hidden LED unexpectedly writable')
except urllib.error.HTTPError as e:
assert e.code == 400
b = req(port, '/api/brightness', {'name':'blue:wan','value':1})
assert b['ok'] and (d / 'brightness').read_text() == '1'
tr = req(port, '/api/trigger', {'name':'blue:wan','trigger':'timer'})
@@ -64,12 +81,15 @@ def main():
assert (d / 'brightness').read_text() == '1'
assert (d / 'delay_on').read_text() == '123'
all_off = req(port, '/api/all-off', {})
assert all_off['ok'] and all_off['changed'] == 2
assert all_off['ok'] and all_off['changed'] == 3
assert (d / 'brightness').read_text() == '0'
assert (d2 / 'brightness').read_text() == '0'
assert (d3 / 'brightness').read_text() == '0'
assert (hidden / 'brightness').read_text() == '1'
assert '[none]' in (d / 'trigger').read_text() or (d / 'trigger').read_text() == 'none'
assert '[none]' in (d2 / 'trigger').read_text() or (d2 / 'trigger').read_text() == 'none'
print('OK: API write + persistence + all-off regression passed')
assert '[none]' in (d3 / 'trigger').read_text() or (d3 / 'trigger').read_text() == 'none'
print('OK: RGB filter + API write + persistence + all-off regression passed')
finally:
httpd.shutdown()