feat(light): Effekte zur Auswahl
Die neun Effekte der Firmware waren in Home Assistant nicht erreichbar -
das Auswahlfeld, das es schon gab, sind die Szenen. Jetzt bietet die
Lichtentitaet sie an:
* Gewaehlt wird ueber den NAMEN aus der Firmware ("Regenbogen"),
geschickt wird die Kennung ("rainbow"). Eine Liste englischer
Kennungen waere in einer deutschen Oberflaeche unnoetig sperrig.
* Ein Effekt laeuft wie eine Farbe in ALLEN Segmenten; angezeigt wird er
nur, wenn alle denselben fahren.
* Eine Kennung, die nicht in der Liste steht (neuere Firmware, aeltere
Liste), wird roh angezeigt statt verschluckt.
* Ein unbekannter Name wird abgelehnt, statt stillschweigend nichts zu
tun.
Die Liste steht fest in der Firmware und wird deshalb einmal geholt,
nicht je Abfragezyklus - erneut erst, wenn sich die Version aendert. Eine
sechste Anfrage je Zyklus fuer etwas, das sich nie aendert, waere
Verschwendung.
Effekt-Parameter (Geschwindigkeit, Intensitaet, Palette) fehlen noch;
dafuer braucht es Entitaeten je Segment.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
9eb7adcdd7
commit
ffcbbdfe4a
@@ -16,6 +16,7 @@ from pytest_homeassistant_custom_component.common import MockConfigEntry
|
||||
from custom_components.ninstrip.api import NinstripClient
|
||||
from custom_components.ninstrip.const import DOMAIN
|
||||
from tests_unit.samples import (
|
||||
EFFECTS_K1Y,
|
||||
HOST_K1Y,
|
||||
INFO_K1Y,
|
||||
MAC_K1Y,
|
||||
@@ -79,6 +80,7 @@ def mock_client(
|
||||
client.get_settings = AsyncMock(side_effect=lambda: deepcopy(strip_settings))
|
||||
client.get_presets = AsyncMock(side_effect=lambda: deepcopy(strip_presets))
|
||||
client.get_segments = AsyncMock(side_effect=lambda: deepcopy(strip_segments))
|
||||
client.get_effects = AsyncMock(side_effect=lambda: deepcopy(EFFECTS_K1Y))
|
||||
|
||||
async def put_segments(segments: list[dict[str, Any]]) -> None:
|
||||
# Wie das Geraet: es nimmt die Liste als Ganzes an und antwortet nur
|
||||
|
||||
Reference in New Issue
Block a user