Initial public release
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
|
||||
|
||||
from ha_deconz_bridge.color import Color
|
||||
from ha_deconz_bridge.lights import ChannelSpec, ControllerModeSpec, ControllerSpec, VirtualLightSpec
|
||||
from ha_deconz_bridge.settings import Settings
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def settings() -> Settings:
|
||||
return Settings()
|
||||
|
||||
|
||||
def _rgb_controller(zigbee_id: str) -> ControllerSpec:
|
||||
return ControllerSpec(
|
||||
zigbee_id=zigbee_id,
|
||||
name=f"RGB {zigbee_id}",
|
||||
modes={
|
||||
"rgb": ControllerModeSpec(
|
||||
name="rgb",
|
||||
channels={
|
||||
"r": ChannelSpec("r", Color.from_rgb((1.0, 0.0, 0.0), brightness=0.9)),
|
||||
"g": ChannelSpec("g", Color.from_rgb((0.0, 1.0, 0.0), brightness=1.2)),
|
||||
"b": ChannelSpec("b", Color.from_rgb((0.0, 0.0, 1.0), brightness=0.8)),
|
||||
},
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def _ct_controller(zigbee_id: str) -> ControllerSpec:
|
||||
return ControllerSpec(
|
||||
zigbee_id=zigbee_id,
|
||||
name=f"CT {zigbee_id}",
|
||||
modes={
|
||||
"color_temp": ControllerModeSpec(
|
||||
name="color_temp",
|
||||
channels={
|
||||
"ww": ChannelSpec(
|
||||
"ww",
|
||||
Color.from_color_temp(500, brightness=1.0, temp_range=(153, 500)),
|
||||
),
|
||||
"cw": ChannelSpec(
|
||||
"cw",
|
||||
Color.from_color_temp(153, brightness=1.0, temp_range=(153, 500)),
|
||||
),
|
||||
},
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def rgb_light_spec() -> VirtualLightSpec:
|
||||
return VirtualLightSpec(
|
||||
name="rgb_light",
|
||||
supported_color_modes=("rgb",),
|
||||
controllers={"1": _rgb_controller("1")},
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ct_light_spec() -> VirtualLightSpec:
|
||||
return VirtualLightSpec(
|
||||
name="ct_light",
|
||||
supported_color_modes=("color_temp",),
|
||||
controllers={"2": _ct_controller("2")},
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mixed_light_spec() -> VirtualLightSpec:
|
||||
shared = ControllerSpec(
|
||||
zigbee_id="3",
|
||||
name="Shared",
|
||||
modes={
|
||||
"rgb": ControllerModeSpec(
|
||||
name="rgb",
|
||||
channels={
|
||||
"r": ChannelSpec("r", Color.from_rgb((1.0, 0.0, 0.0), brightness=0.6)),
|
||||
"g": ChannelSpec("g", Color.from_rgb((0.0, 1.0, 0.0), brightness=0.6)),
|
||||
"b": ChannelSpec("b", Color.from_rgb((0.0, 0.0, 1.0), brightness=0.4)),
|
||||
},
|
||||
),
|
||||
"color_temp": ControllerModeSpec(
|
||||
name="color_temp",
|
||||
channels={
|
||||
"ww": ChannelSpec(
|
||||
"ww",
|
||||
Color.from_color_temp(500, brightness=0.9, temp_range=(153, 500)),
|
||||
),
|
||||
"cw": ChannelSpec(
|
||||
"cw",
|
||||
Color.from_color_temp(153, brightness=0.9, temp_range=(153, 500)),
|
||||
),
|
||||
},
|
||||
),
|
||||
},
|
||||
)
|
||||
onoff = ControllerSpec(
|
||||
zigbee_id="4",
|
||||
name="Accent",
|
||||
modes={
|
||||
"onoff": ControllerModeSpec(
|
||||
name="onoff",
|
||||
channels={"w": ChannelSpec("w", Color.from_rgb((1.0, 1.0, 1.0), brightness=0.3))},
|
||||
)
|
||||
},
|
||||
)
|
||||
return VirtualLightSpec(
|
||||
name="mixed_light",
|
||||
supported_color_modes=("rgb", "color_temp"),
|
||||
controllers={
|
||||
"2": _ct_controller("2"),
|
||||
"3": shared,
|
||||
"4": onoff,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def red_only_spec() -> VirtualLightSpec:
|
||||
return VirtualLightSpec(
|
||||
name="red_only",
|
||||
supported_color_modes=("rgb",),
|
||||
controllers={
|
||||
"1": ControllerSpec(
|
||||
zigbee_id="1",
|
||||
name="Red only",
|
||||
modes={
|
||||
"rgb": ControllerModeSpec(
|
||||
name="rgb",
|
||||
channels={
|
||||
"r": ChannelSpec("r", Color.from_rgb((1.0, 0.0, 0.0), brightness=1.0)),
|
||||
},
|
||||
)
|
||||
},
|
||||
)
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user