core/homeassistant/components/insteon/ipdb.py

120 lines
4.9 KiB
Python

"""Utility methods for the Insteon platform."""
from collections.abc import Iterable
from pyinsteon.device_types.device_base import Device
from pyinsteon.device_types.ipdb import (
AccessControl_Morningstar,
ClimateControl_Thermostat,
ClimateControl_WirelessThermostat,
DimmableLightingControl,
DimmableLightingControl_Dial,
DimmableLightingControl_DinRail,
DimmableLightingControl_FanLinc,
DimmableLightingControl_I3_KeypadLinc_4,
DimmableLightingControl_InLineLinc01,
DimmableLightingControl_InLineLinc02,
DimmableLightingControl_KeypadLinc_6,
DimmableLightingControl_KeypadLinc_8,
DimmableLightingControl_LampLinc,
DimmableLightingControl_OutletLinc,
DimmableLightingControl_SwitchLinc01,
DimmableLightingControl_SwitchLinc02,
DimmableLightingControl_ToggleLinc,
EnergyManagement_LoadController,
SecurityHealthSafety_DoorSensor,
SecurityHealthSafety_LeakSensor,
SecurityHealthSafety_MotionSensor,
SecurityHealthSafety_OpenCloseSensor,
SecurityHealthSafety_Smokebridge,
SensorsActuators_IOLink,
SwitchedLightingControl,
SwitchedLightingControl_ApplianceLinc,
SwitchedLightingControl_DinRail,
SwitchedLightingControl_I3Outlet,
SwitchedLightingControl_InLineLinc01,
SwitchedLightingControl_InLineLinc02,
SwitchedLightingControl_KeypadLinc_6,
SwitchedLightingControl_KeypadLinc_8,
SwitchedLightingControl_OnOffOutlet,
SwitchedLightingControl_OutletLinc,
SwitchedLightingControl_SwitchLinc01,
SwitchedLightingControl_SwitchLinc02,
SwitchedLightingControl_ToggleLinc,
WindowCovering,
X10Dimmable,
X10OnOff,
X10OnOffSensor,
)
from homeassistant.const import Platform
DEVICE_PLATFORM: dict[Device, dict[Platform, Iterable[int]]] = {
AccessControl_Morningstar: {Platform.LOCK: [1]},
DimmableLightingControl: {Platform.LIGHT: [1]},
DimmableLightingControl_Dial: {Platform.LIGHT: [1]},
DimmableLightingControl_DinRail: {Platform.LIGHT: [1]},
DimmableLightingControl_FanLinc: {Platform.LIGHT: [1], Platform.FAN: [2]},
DimmableLightingControl_InLineLinc01: {Platform.LIGHT: [1]},
DimmableLightingControl_InLineLinc02: {Platform.LIGHT: [1]},
DimmableLightingControl_I3_KeypadLinc_4: {
Platform.LIGHT: [1, 2, 3, 4],
},
DimmableLightingControl_KeypadLinc_6: {
Platform.LIGHT: [1],
Platform.SWITCH: [3, 4, 5, 6],
},
DimmableLightingControl_KeypadLinc_8: {
Platform.LIGHT: [1],
Platform.SWITCH: range(2, 9),
},
DimmableLightingControl_LampLinc: {Platform.LIGHT: [1]},
DimmableLightingControl_OutletLinc: {Platform.LIGHT: [1]},
DimmableLightingControl_SwitchLinc01: {Platform.LIGHT: [1]},
DimmableLightingControl_SwitchLinc02: {Platform.LIGHT: [1]},
DimmableLightingControl_ToggleLinc: {Platform.LIGHT: [1]},
EnergyManagement_LoadController: {
Platform.SWITCH: [1],
Platform.BINARY_SENSOR: [2],
},
SecurityHealthSafety_DoorSensor: {Platform.BINARY_SENSOR: [1, 3, 4]},
SecurityHealthSafety_LeakSensor: {Platform.BINARY_SENSOR: [2, 4]},
SecurityHealthSafety_MotionSensor: {Platform.BINARY_SENSOR: [1, 2, 3]},
SecurityHealthSafety_OpenCloseSensor: {Platform.BINARY_SENSOR: [1]},
SecurityHealthSafety_Smokebridge: {Platform.BINARY_SENSOR: [1, 2, 3, 4, 6, 7]},
SensorsActuators_IOLink: {Platform.SWITCH: [1], Platform.BINARY_SENSOR: [2]},
SwitchedLightingControl: {Platform.SWITCH: [1]},
SwitchedLightingControl_ApplianceLinc: {Platform.SWITCH: [1]},
SwitchedLightingControl_DinRail: {Platform.SWITCH: [1]},
SwitchedLightingControl_I3Outlet: {Platform.SWITCH: [1, 2]},
SwitchedLightingControl_InLineLinc01: {Platform.SWITCH: [1]},
SwitchedLightingControl_InLineLinc02: {Platform.SWITCH: [1]},
SwitchedLightingControl_KeypadLinc_6: {
Platform.SWITCH: [1, 3, 4, 5, 6],
},
SwitchedLightingControl_KeypadLinc_8: {
Platform.SWITCH: range(1, 9),
},
SwitchedLightingControl_OnOffOutlet: {Platform.SWITCH: [1, 2]},
SwitchedLightingControl_OutletLinc: {Platform.SWITCH: [1]},
SwitchedLightingControl_SwitchLinc01: {Platform.SWITCH: [1]},
SwitchedLightingControl_SwitchLinc02: {Platform.SWITCH: [1]},
SwitchedLightingControl_ToggleLinc: {Platform.SWITCH: [1]},
ClimateControl_Thermostat: {Platform.CLIMATE: [1]},
ClimateControl_WirelessThermostat: {Platform.CLIMATE: [1]},
WindowCovering: {Platform.COVER: [1]},
X10Dimmable: {Platform.LIGHT: [1]},
X10OnOff: {Platform.SWITCH: [1]},
X10OnOffSensor: {Platform.BINARY_SENSOR: [1]},
}
def get_device_platforms(device) -> dict[Platform, Iterable[int]]:
"""Return the HA platforms for a device type."""
return DEVICE_PLATFORM.get(type(device), {})
def get_device_platform_groups(device: Device, platform: Platform) -> Iterable[int]:
"""Return the list of device groups for a platform."""
return get_device_platforms(device).get(platform, [])