Zeigt strip.current_ma und strip.power_w aus system/info als Sensoren und macht max_milliamps aus system/settings ueber ein Zahlenfeld einstellbar. Schreiben liest wie bei sACN zurueck statt den geschriebenen Wert anzunehmen.
126 lines
3.7 KiB
Python
126 lines
3.7 KiB
Python
"""Echte Nutzdaten zweier Geraete. Bewusst keine Grenzwerte - die stehen in den Tests selbst."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
TOKEN = "a201883d13a570dd3cf1f3b64b5e1df7"
|
|
|
|
HOST_K1Y = "192.168.2.238"
|
|
MAC_K1Y = "b0:81:84:49:ad:4c"
|
|
|
|
# Abgefragt an der Stehlampe (KL-LSC5C3WV2-K1Y, SK6812-RGBW, 60 Pixel).
|
|
STATE_K1Y: dict[str, Any] = {
|
|
"on": True,
|
|
"brightness": 100,
|
|
"power_on_behaviour": "last",
|
|
"fade_in": 500,
|
|
"fade_out": 500,
|
|
"transition_default": 300,
|
|
"wake_on_change": False,
|
|
"preset": 2,
|
|
"preset_modified": False,
|
|
"segment_count": 1,
|
|
"pixel_count": 60,
|
|
}
|
|
|
|
INFO_K1Y: dict[str, Any] = {
|
|
"product": "ninstrip",
|
|
"device_type": "ninstrip-k1y",
|
|
"fw_version": "0.1.0-12-g71a57",
|
|
"build_date": "2026-09-22",
|
|
"mac": MAC_K1Y,
|
|
"name": "",
|
|
"wifi": {"mode": "sta", "ssid": "ninIOT", "rssi": -68, "ip": HOST_K1Y, "error": None},
|
|
"sacn": {"enabled": True, "active": False, "universe": 1, "universes": 1, "multicast": True},
|
|
"uptime": 1459,
|
|
"free_heap": 156848,
|
|
"strip": {
|
|
"chipset": "sk6812_rgbw",
|
|
"color_order": "grb",
|
|
"data_pin": 19,
|
|
"pixel_count": 60,
|
|
"leds_per_pixel": 1,
|
|
"has_white": True,
|
|
"inverted": True,
|
|
"power_scale": 100,
|
|
"max_milliamps": 1800,
|
|
"current_ma": 2500,
|
|
"power_w": 30.0,
|
|
},
|
|
"render": {"fps": 50, "render_us": 900, "show_us": 1800, "dropped_frames": 0},
|
|
"last_ota_error": None,
|
|
}
|
|
|
|
# wifi.source "compiled": das Geraet kennt sein WLAN nur aus der Firmware.
|
|
SETTINGS_COMPILED: dict[str, Any] = {
|
|
"name": "",
|
|
"wifi": {"ssid": "ninIOT", "source": "compiled"},
|
|
"auth_all": False,
|
|
"sacn": {
|
|
"enabled": True,
|
|
"universe": 1,
|
|
"start_slot": 1,
|
|
"on_timeout": "release",
|
|
"channels_per_pixel": 3,
|
|
},
|
|
"strip": {
|
|
"chipset": "sk6812_rgbw",
|
|
"color_order": "grb",
|
|
"data_pin": 19,
|
|
"pixel_count": 60,
|
|
"leds_per_pixel": 1,
|
|
"max_milliamps": 1800,
|
|
"supply_volts": 12,
|
|
"inverted": True,
|
|
},
|
|
}
|
|
|
|
PRESETS_K1Y: dict[str, Any] = {
|
|
"presets": [
|
|
{"id": 0, "name": "Warmweiss", "used": True, "segment_count": 1},
|
|
{"id": 1, "name": "Kaltweiss", "used": True, "segment_count": 1},
|
|
{"id": 2, "name": "Regenbogen", "used": True, "segment_count": 1},
|
|
{"id": 3, "name": "Feuer", "used": True, "segment_count": 1},
|
|
{"id": 4, "name": "", "used": False, "segment_count": 0},
|
|
{"id": 5, "name": "", "used": False, "segment_count": 0},
|
|
{"id": 6, "name": "", "used": False, "segment_count": 0},
|
|
{"id": 7, "name": "", "used": False, "segment_count": 0},
|
|
],
|
|
"active": 2,
|
|
"modified": False,
|
|
}
|
|
|
|
# wifi.source "stored": ueber das Onboarding ins WLAN gebracht, also vom
|
|
# Abbild unabhaengig.
|
|
SETTINGS_STORED: dict[str, Any] = {
|
|
**SETTINGS_COMPILED,
|
|
"wifi": {"ssid": "ninIOT", "source": "stored"},
|
|
}
|
|
|
|
# Ein Segment ueber den ganzen Strip, warmweiss - so kommt ein Geraet aus dem
|
|
# Werkszustand. Farbe und Farbtemperatur stehen nur hier, nicht in state.
|
|
SEGMENTS_K1Y: dict[str, Any] = {
|
|
"segments": [
|
|
{
|
|
"id": 0,
|
|
"name": None,
|
|
"start": 0,
|
|
"end": 59,
|
|
"mode": "white",
|
|
"color_temp": 2700,
|
|
"brightness": 80,
|
|
}
|
|
]
|
|
}
|
|
|
|
# Die Effekttabelle der Firmware (nl_effects.c), gekuerzt auf drei Eintraege.
|
|
EFFECTS_K1Y: dict[str, Any] = {
|
|
"effects": [
|
|
{"id": "rainbow", "name": "Regenbogen", "params": ["speed", "palette"]},
|
|
{"id": "fire", "name": "Feuer", "params": ["speed"]},
|
|
{"id": "chase", "name": "Lauflicht", "params": ["speed", "intensity", "palette"]},
|
|
],
|
|
"palettes": ["rainbow", "warm", "cool"],
|
|
}
|