feat: persist led config on debian startup

This commit is contained in:
2026-05-15 15:25:40 +08:00
parent 45aaba0c8a
commit ac75a5f9b7
5 changed files with 203 additions and 44 deletions
+15 -1
View File
@@ -29,7 +29,9 @@ def main():
(d / 'trigger').write_text('[none] timer')
(d / 'delay_on').write_text('500')
(d / 'delay_off').write_text('500')
config_path = root / 'config.json'
led_panel.LED_ROOT = root
led_panel.CONFIG_PATH = config_path
httpd = ThreadingHTTPServer(('127.0.0.1', 0), Handler)
port = httpd.server_address[1]
t = threading.Thread(target=httpd.serve_forever, daemon=True)
@@ -44,7 +46,19 @@ def main():
assert (d / 'trigger').read_text() == 'timer'
delay = req(port, '/api/delay', {'name':'blue:wan','field':'delay_on','value':123})
assert delay['ok'] and (d / 'delay_on').read_text() == '123'
print('OK: API write regression passed')
saved = req(port, '/api/save', {'name':'blue:wan'})
assert saved['ok'] and config_path.exists()
cfg = json.loads(config_path.read_text())
assert cfg['leds']['blue:wan']['delay_on'] == 123
# Simulate reboot/default reset, then apply persisted config.
(d / 'brightness').write_text('0')
(d / 'trigger').write_text('[none] timer')
(d / 'delay_on').write_text('500')
applied = req(port, '/api/apply-saved', {})
assert applied['ok'] and applied['applied'] == 1
assert (d / 'brightness').read_text() == '1'
assert (d / 'delay_on').read_text() == '123'
print('OK: API write + persistence regression passed')
finally:
httpd.shutdown()