mirror of https://github.com/home-assistant/core
120 lines
4.9 KiB
Python
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, [])
|