119 lines
3.3 KiB
Python
119 lines
3.3 KiB
Python
"""MySensors constants."""
|
|
from collections import defaultdict
|
|
|
|
ATTR_DEVICES = "devices"
|
|
|
|
CONF_BAUD_RATE = "baud_rate"
|
|
CONF_DEVICE = "device"
|
|
CONF_GATEWAYS = "gateways"
|
|
CONF_NODES = "nodes"
|
|
CONF_PERSISTENCE = "persistence"
|
|
CONF_PERSISTENCE_FILE = "persistence_file"
|
|
CONF_RETAIN = "retain"
|
|
CONF_TCP_PORT = "tcp_port"
|
|
CONF_TOPIC_IN_PREFIX = "topic_in_prefix"
|
|
CONF_TOPIC_OUT_PREFIX = "topic_out_prefix"
|
|
CONF_VERSION = "version"
|
|
|
|
DOMAIN = "mysensors"
|
|
MYSENSORS_GATEWAY_READY = "mysensors_gateway_ready_{}"
|
|
MYSENSORS_GATEWAYS = "mysensors_gateways"
|
|
PLATFORM = "platform"
|
|
SCHEMA = "schema"
|
|
CHILD_CALLBACK = "mysensors_child_callback_{}_{}_{}_{}"
|
|
NODE_CALLBACK = "mysensors_node_callback_{}_{}"
|
|
TYPE = "type"
|
|
UPDATE_DELAY = 0.1
|
|
|
|
BINARY_SENSOR_TYPES = {
|
|
"S_DOOR": "V_TRIPPED",
|
|
"S_MOTION": "V_TRIPPED",
|
|
"S_SMOKE": "V_TRIPPED",
|
|
"S_SPRINKLER": "V_TRIPPED",
|
|
"S_WATER_LEAK": "V_TRIPPED",
|
|
"S_SOUND": "V_TRIPPED",
|
|
"S_VIBRATION": "V_TRIPPED",
|
|
"S_MOISTURE": "V_TRIPPED",
|
|
}
|
|
|
|
CLIMATE_TYPES = {"S_HVAC": "V_HVAC_FLOW_STATE"}
|
|
|
|
COVER_TYPES = {"S_COVER": ["V_DIMMER", "V_PERCENTAGE", "V_LIGHT", "V_STATUS"]}
|
|
|
|
DEVICE_TRACKER_TYPES = {"S_GPS": "V_POSITION"}
|
|
|
|
LIGHT_TYPES = {
|
|
"S_DIMMER": ["V_DIMMER", "V_PERCENTAGE"],
|
|
"S_RGB_LIGHT": "V_RGB",
|
|
"S_RGBW_LIGHT": "V_RGBW",
|
|
}
|
|
|
|
NOTIFY_TYPES = {"S_INFO": "V_TEXT"}
|
|
|
|
SENSOR_TYPES = {
|
|
"S_SOUND": "V_LEVEL",
|
|
"S_VIBRATION": "V_LEVEL",
|
|
"S_MOISTURE": "V_LEVEL",
|
|
"S_INFO": "V_TEXT",
|
|
"S_GPS": "V_POSITION",
|
|
"S_TEMP": "V_TEMP",
|
|
"S_HUM": "V_HUM",
|
|
"S_BARO": ["V_PRESSURE", "V_FORECAST"],
|
|
"S_WIND": ["V_WIND", "V_GUST", "V_DIRECTION"],
|
|
"S_RAIN": ["V_RAIN", "V_RAINRATE"],
|
|
"S_UV": "V_UV",
|
|
"S_WEIGHT": ["V_WEIGHT", "V_IMPEDANCE"],
|
|
"S_POWER": ["V_WATT", "V_KWH", "V_VAR", "V_VA", "V_POWER_FACTOR"],
|
|
"S_DISTANCE": "V_DISTANCE",
|
|
"S_LIGHT_LEVEL": ["V_LIGHT_LEVEL", "V_LEVEL"],
|
|
"S_IR": "V_IR_RECEIVE",
|
|
"S_WATER": ["V_FLOW", "V_VOLUME"],
|
|
"S_CUSTOM": ["V_VAR1", "V_VAR2", "V_VAR3", "V_VAR4", "V_VAR5", "V_CUSTOM"],
|
|
"S_SCENE_CONTROLLER": ["V_SCENE_ON", "V_SCENE_OFF"],
|
|
"S_COLOR_SENSOR": "V_RGB",
|
|
"S_MULTIMETER": ["V_VOLTAGE", "V_CURRENT", "V_IMPEDANCE"],
|
|
"S_GAS": ["V_FLOW", "V_VOLUME"],
|
|
"S_WATER_QUALITY": ["V_TEMP", "V_PH", "V_ORP", "V_EC"],
|
|
"S_AIR_QUALITY": ["V_DUST_LEVEL", "V_LEVEL"],
|
|
"S_DUST": ["V_DUST_LEVEL", "V_LEVEL"],
|
|
}
|
|
|
|
SWITCH_TYPES = {
|
|
"S_LIGHT": "V_LIGHT",
|
|
"S_BINARY": "V_STATUS",
|
|
"S_DOOR": "V_ARMED",
|
|
"S_MOTION": "V_ARMED",
|
|
"S_SMOKE": "V_ARMED",
|
|
"S_SPRINKLER": "V_STATUS",
|
|
"S_WATER_LEAK": "V_ARMED",
|
|
"S_SOUND": "V_ARMED",
|
|
"S_VIBRATION": "V_ARMED",
|
|
"S_MOISTURE": "V_ARMED",
|
|
"S_IR": "V_IR_SEND",
|
|
"S_LOCK": "V_LOCK_STATUS",
|
|
"S_WATER_QUALITY": "V_STATUS",
|
|
}
|
|
|
|
|
|
PLATFORM_TYPES = {
|
|
"binary_sensor": BINARY_SENSOR_TYPES,
|
|
"climate": CLIMATE_TYPES,
|
|
"cover": COVER_TYPES,
|
|
"device_tracker": DEVICE_TRACKER_TYPES,
|
|
"light": LIGHT_TYPES,
|
|
"notify": NOTIFY_TYPES,
|
|
"sensor": SENSOR_TYPES,
|
|
"switch": SWITCH_TYPES,
|
|
}
|
|
|
|
FLAT_PLATFORM_TYPES = {
|
|
(platform, s_type_name): v_type_name
|
|
for platform, platform_types in PLATFORM_TYPES.items()
|
|
for s_type_name, v_type_name in platform_types.items()
|
|
}
|
|
|
|
TYPE_TO_PLATFORMS = defaultdict(list)
|
|
for platform, platform_types in PLATFORM_TYPES.items():
|
|
for s_type_name in platform_types:
|
|
TYPE_TO_PLATFORMS[s_type_name].append(platform)
|