"""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)