5f01411780
Initial snapshot of Home Assistant config (HAOS 2026.4.4)
prior to dashboard restructuring and helper YAML migration.
Pre-commit cleanup applied:
- Removed blueprints/switch_manager/ (9.4 MB stale, component already gone)
- Removed .storage/switch_manager
- Removed home-assistant.log.{1,old,fault}
- Removed zigbee2mqtt/configuration_backup_v{1..4}.yaml
- Removed zigbee2mqtt/database.db.tmp.2024-09-27 (1.5y old)
- Created empty themes/ to satisfy configuration.yaml include
.gitignore uses allowlist strategy for .storage/ to keep
all tokens, keys, and PINs out of version control.
180 lines
7.0 KiB
Python
180 lines
7.0 KiB
Python
from cx_const import Cover, DefaultActionsMapping, Light, MediaPlayer, Z2MLight
|
|
from cx_core import (
|
|
CoverController,
|
|
LightController,
|
|
MediaPlayerController,
|
|
Z2MLightController,
|
|
)
|
|
from cx_core.integration import EventData
|
|
|
|
|
|
class TS0044LightController(LightController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"1_single": Light.TOGGLE,
|
|
"1_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"1_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"2_single": Light.TOGGLE,
|
|
"2_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"2_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"3_single": Light.TOGGLE,
|
|
"3_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"3_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"4_single": Light.TOGGLE,
|
|
"4_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"4_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
}
|
|
|
|
|
|
class TS0044FLightController(LightController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"on": Light.TOGGLE,
|
|
"off": Light.TOGGLE,
|
|
"brightness_step_up": Light.CLICK_BRIGHTNESS_UP,
|
|
"brightness_step_down": Light.CLICK_BRIGHTNESS_DOWN,
|
|
}
|
|
|
|
|
|
class TS0043LightController(LightController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"1_single": Light.TOGGLE,
|
|
"1_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"1_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"2_single": Light.TOGGLE,
|
|
"2_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"2_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"3_single": Light.TOGGLE,
|
|
"3_double": Light.CLICK_BRIGHTNESS_UP,
|
|
"3_hold": Light.CLICK_BRIGHTNESS_DOWN,
|
|
}
|
|
|
|
def get_zha_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"1_remote_button_short_press": Light.TOGGLE,
|
|
"1_remote_button_double_press": Light.CLICK_BRIGHTNESS_UP,
|
|
"1_remote_button_long_press": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"2_remote_button_short_press": Light.TOGGLE,
|
|
"2_remote_button_double_press": Light.CLICK_BRIGHTNESS_UP,
|
|
"2_remote_button_long_press": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"3_remote_button_short_press": Light.TOGGLE,
|
|
"3_remote_button_double_press": Light.CLICK_BRIGHTNESS_UP,
|
|
"3_remote_button_long_press": Light.CLICK_BRIGHTNESS_DOWN,
|
|
}
|
|
|
|
def get_zha_action(self, data: EventData) -> str:
|
|
args: str = ""
|
|
# Command is {endpoint_id}_{command}
|
|
if len(data["args"]) > 0:
|
|
if isinstance(data["args"], list):
|
|
args = "_" + "_".join([str(d) for d in data["args"]])
|
|
else:
|
|
args = args + f"{data['args']}"
|
|
command: str = f"{data['endpoint_id']}_{data['command']}{args}"
|
|
return command
|
|
|
|
|
|
class TS0043CoverController(CoverController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"1_single": Cover.OPEN,
|
|
"2_single": Cover.STOP,
|
|
"3_single": Cover.CLOSE,
|
|
}
|
|
|
|
|
|
class TuYaERS10TZBVKAALightController(LightController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
# Command mode
|
|
"brightness_step_up": Light.CLICK_BRIGHTNESS_UP,
|
|
"brightness_step_down": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"toggle": Light.TOGGLE,
|
|
"hue_move": Light.HOLD_BRIGHTNESS_TOGGLE,
|
|
"hue_stop": Light.RELEASE,
|
|
"color_temperature_step_up": Light.CLICK_COLOR_UP,
|
|
"color_temperature_step_down": Light.CLICK_COLOR_DOWN,
|
|
# Event mode
|
|
"rotate_left": Light.CLICK_BRIGHTNESS_DOWN,
|
|
"rotate_right": Light.CLICK_BRIGHTNESS_UP,
|
|
"single": Light.TOGGLE,
|
|
"double": Light.ON_FULL_BRIGHTNESS,
|
|
"hold": Light.ON_MIN_BRIGHTNESS,
|
|
}
|
|
|
|
def get_zha_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"toggle": Light.TOGGLE,
|
|
"step_brightness": Light.BRIGHTNESS_FROM_CONTROLLER_STEP,
|
|
"step_color_temp": Light.COLORTEMP_FROM_CONTROLLER_STEP,
|
|
}
|
|
|
|
def get_zha_action(self, data: EventData) -> str:
|
|
command: str = data["command"]
|
|
if command == "step":
|
|
return "step_brightness"
|
|
return command
|
|
|
|
|
|
class TuYaERS10TZBVKAAZ2MLightController(Z2MLightController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
# Command mode
|
|
"brightness_step_up": Z2MLight.CLICK_BRIGHTNESS_UP,
|
|
"brightness_step_down": Z2MLight.CLICK_BRIGHTNESS_DOWN,
|
|
"toggle": Z2MLight.TOGGLE,
|
|
"hue_move": Z2MLight.HOLD_BRIGHTNESS_TOGGLE,
|
|
"hue_stop": Z2MLight.RELEASE,
|
|
"color_temperature_step_up": Z2MLight.CLICK_COLOR_TEMP_UP,
|
|
"color_temperature_step_down": Z2MLight.CLICK_COLOR_TEMP_DOWN,
|
|
# Event mode
|
|
"rotate_left": Z2MLight.CLICK_BRIGHTNESS_DOWN,
|
|
"rotate_right": Z2MLight.CLICK_BRIGHTNESS_UP,
|
|
"single": Z2MLight.TOGGLE,
|
|
"double": Z2MLight.ON_FULL_BRIGHTNESS,
|
|
"hold": Z2MLight.ON_MIN_BRIGHTNESS,
|
|
}
|
|
|
|
|
|
class TuYaERS10TZBVKAAMediaPlayerController(MediaPlayerController):
|
|
def get_z2m_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
# Command mode
|
|
"brightness_step_up": MediaPlayer.CLICK_VOLUME_UP,
|
|
"brightness_step_down": MediaPlayer.CLICK_VOLUME_DOWN,
|
|
"toggle": MediaPlayer.PLAY_PAUSE,
|
|
"hue_move": MediaPlayer.HOLD_VOLUME_UP,
|
|
"hue_stop": Z2MLight.RELEASE,
|
|
"color_temperature_step_up": MediaPlayer.NEXT_TRACK,
|
|
"color_temperature_step_down": MediaPlayer.PREVIOUS_TRACK,
|
|
# Event mode
|
|
"rotate_left": MediaPlayer.CLICK_VOLUME_DOWN,
|
|
"rotate_right": MediaPlayer.CLICK_VOLUME_UP,
|
|
"single": MediaPlayer.PLAY_PAUSE,
|
|
"double": MediaPlayer.NEXT_TRACK,
|
|
"hold": MediaPlayer.PREVIOUS_TRACK,
|
|
}
|
|
|
|
|
|
class TS0042LightController(LightController):
|
|
def get_zha_actions_mapping(self) -> DefaultActionsMapping:
|
|
return {
|
|
"1_remote_button_short_press": Light.ON,
|
|
"1_remote_button_double_press": Light.CLICK_BRIGHTNESS_UP,
|
|
"1_remote_button_long_press": Light.ON_FULL_BRIGHTNESS,
|
|
"2_remote_button_short_press": Light.OFF,
|
|
"2_remote_button_double_press": Light.ON_MIN_BRIGHTNESS,
|
|
}
|
|
|
|
def get_zha_action(self, data: EventData) -> str:
|
|
args: str = ""
|
|
# Command is {endpoint_id}_{command}
|
|
if len(data["args"]) > 0:
|
|
if isinstance(data["args"], list):
|
|
args = "_" + "_".join([str(d) for d in data["args"]])
|
|
else:
|
|
args = args + f"{data['args']}"
|
|
command: str = f"{data['endpoint_id']}_{data['command']}{args}"
|
|
return command
|