diff --git a/python_scripts/shellies_discovery.py b/python_scripts/shellies_discovery.py index 3e6f6088..ab8e17e2 100644 --- a/python_scripts/shellies_discovery.py +++ b/python_scripts/shellies_discovery.py @@ -1446,12 +1446,24 @@ KEY_STATE_TOPIC: TOPIC_STATUS, KEY_VALUE_TEMPLATE: TPL_MOTION, } +OPTIONS_SENSOR_MOTION_MOTION2 = { + KEY_DEVICE_CLASS: DEVICE_CLASS_MOTION, + KEY_ENABLED_BY_DEFAULT: True, + KEY_STATE_TOPIC: TOPIC_INFO, + KEY_VALUE_TEMPLATE: TPL_MOTION_MOTION2, +} OPTIONS_SENSOR_VIBRATION = { KEY_DEVICE_CLASS: DEVICE_CLASS_VIBRATION, KEY_ENABLED_BY_DEFAULT: True, KEY_STATE_TOPIC: TOPIC_STATUS, KEY_VALUE_TEMPLATE: TPL_VIBRATION, } +OPTIONS_SENSOR_VIBRATION_MOTION2 = { + KEY_DEVICE_CLASS: DEVICE_CLASS_VIBRATION, + KEY_ENABLED_BY_DEFAULT: True, + KEY_STATE_TOPIC: TOPIC_INFO, + KEY_VALUE_TEMPLATE: TPL_VIBRATION_MOTION2, +} OPTIONS_SENSOR_VIBRATION_DW = { KEY_DEVICE_CLASS: DEVICE_CLASS_VIBRATION, KEY_ENABLED_BY_DEFAULT: True, @@ -2152,43 +2164,13 @@ def mqtt_publish(topic, payload, retain, json=False): SENSOR_TEMPERATURE: OPTIONS_SENSOR_TEMPERATURE_MOTION2, SENSOR_UPTIME: OPTIONS_SENSOR_UPTIME, } - bin_sensors = [ - SENSOR_FIRMWARE_UPDATE, - SENSOR_MOTION, - SENSOR_VIBRATION, - SENSOR_CHARGER, - SENSOR_CLOUD, - ] - bin_sensors_entity_categories = [ - ENTITY_CATEGORY_DIAGNOSTIC, - None, - None, - ENTITY_CATEGORY_DIAGNOSTIC, - ENTITY_CATEGORY_DIAGNOSTIC, - ] - bin_sensors_enabled = [True, True, True, True, False] - bin_sensors_device_classes = [ - DEVICE_CLASS_UPDATE, - DEVICE_CLASS_MOTION, - DEVICE_CLASS_VIBRATION, - DEVICE_CLASS_BATTERY_CHARGING, - DEVICE_CLASS_CONNECTIVITY, - ] - bin_sensors_pl = [None, None, None, None, None] - bin_sensors_tpls = [ - TPL_NEW_FIRMWARE_FROM_INFO, - TPL_MOTION_MOTION2, - TPL_VIBRATION_MOTION2, - TPL_CHARGER, - TPL_CLOUD, - ] - bin_sensors_topics = [ - TOPIC_INFO, - TOPIC_INFO, - TOPIC_INFO, - TOPIC_INFO, - TOPIC_INFO, - ] + binary_sensors = { + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, + SENSOR_MOTION: OPTIONS_SENSOR_MOTION_MOTION2, + SENSOR_VIBRATION: OPTIONS_SENSOR_VIBRATION_MOTION2, + SENSOR_CHARGER: OPTIONS_SENSOR_CHARGER, + SENSOR_CLOUD: OPTIONS_SENSOR_CLOUD, + } battery_powered = True if model_id == MODEL_SHELLYGAS_ID or dev_id_prefix == MODEL_SHELLYGAS_PREFIX: @@ -2245,7 +2227,7 @@ def mqtt_publish(topic, payload, retain, json=False): SENSOR_DOUBLE_SHORTPUSH: OPTIONS_SENSOR_DOUBLE_SHORTPUSH, SENSOR_TRIPLE_SHORTPUSH: OPTIONS_SENSOR_TRIPLE_SHORTPUSH, SENSOR_LONGPUSH: OPTIONS_SENSOR_LONGPUSH, - SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE_FROM_ANNOUNCE, + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, SENSOR_CHARGER: OPTIONS_SENSOR_CHARGER_BUTTON, } @@ -2258,12 +2240,15 @@ def mqtt_publish(topic, payload, retain, json=False): SENSOR_BATTERY: OPTIONS_SENSOR_BATTERY, SENSOR_IP: OPTIONS_SENSOR_IP, SENSOR_LUX: OPTIONS_SENSOR_LUX, + SENSOR_RSSI: OPTIONS_SENSOR_RSSI, + SENSOR_SSID: OPTIONS_SENSOR_SSID, SENSOR_TILT: OPTIONS_SENSOR_TILT, + SENSOR_UPTIME: OPTIONS_SENSOR_UPTIME, } binary_sensors = { SENSOR_OPENING: OPTIONS_SENSOR_OPENING, SENSOR_VIBRATION: OPTIONS_SENSOR_VIBRATION_DW, - SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE_FROM_ANNOUNCE, + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, } battery_powered = True @@ -2275,14 +2260,17 @@ def mqtt_publish(topic, payload, retain, json=False): SENSOR_BATTERY: OPTIONS_SENSOR_BATTERY, SENSOR_IP: OPTIONS_SENSOR_IP, SENSOR_LUX: OPTIONS_SENSOR_LUX, - SENSOR_TILT: OPTIONS_SENSOR_TILT, - SENSOR_TEMPERATURE: OPTIONS_SENSOR_TEMPERATURE, + SENSOR_RSSI: OPTIONS_SENSOR_RSSI, + SENSOR_SSID: OPTIONS_SENSOR_SSID, SENSOR_TEMPERATURE_F: OPTIONS_SENSOR_TEMPERATURE_F, + SENSOR_TEMPERATURE: OPTIONS_SENSOR_TEMPERATURE, + SENSOR_TILT: OPTIONS_SENSOR_TILT, + SENSOR_UPTIME: OPTIONS_SENSOR_UPTIME, } binary_sensors = { SENSOR_OPENING: OPTIONS_SENSOR_OPENING, SENSOR_VIBRATION: OPTIONS_SENSOR_VIBRATION_DW, - SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE_FROM_ANNOUNCE, + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, } battery_powered = True @@ -2293,11 +2281,14 @@ def mqtt_publish(topic, payload, retain, json=False): sensors = { SENSOR_BATTERY: OPTIONS_SENSOR_BATTERY, SENSOR_IP: OPTIONS_SENSOR_IP, + SENSOR_RSSI: OPTIONS_SENSOR_RSSI, + SENSOR_SSID: OPTIONS_SENSOR_SSID, SENSOR_TEMPERATURE: OPTIONS_SENSOR_TEMPERATURE, + SENSOR_UPTIME: OPTIONS_SENSOR_UPTIME, } binary_sensors = { SENSOR_SMOKE: OPTIONS_SENSOR_SMOKE, - SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE_FROM_ANNOUNCE, + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, } battery_powered = True @@ -2640,12 +2631,15 @@ def mqtt_publish(topic, payload, retain, json=False): sensors = { SENSOR_BATTERY: OPTIONS_SENSOR_BATTERY, SENSOR_IP: OPTIONS_SENSOR_IP, + SENSOR_RSSI: OPTIONS_SENSOR_RSSI, + SENSOR_SSID: OPTIONS_SENSOR_SSID, SENSOR_TEMPERATURE_F: OPTIONS_SENSOR_TEMPERATURE_F, SENSOR_TEMPERATURE: OPTIONS_SENSOR_TEMPERATURE, + SENSOR_UPTIME: OPTIONS_SENSOR_UPTIME, } binary_sensors = { SENSOR_FLOOD: OPTIONS_SENSOR_FLOOD, - SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE_FROM_ANNOUNCE, + SENSOR_FIRMWARE_UPDATE: OPTIONS_SENSOR_FIRMWARE_UPDATE, } battery_powered = True @@ -3241,12 +3235,6 @@ def mqtt_publish(topic, payload, retain, json=False): payload[KEY_AVAILABILITY_TOPIC] = TOPIC_ONLINE payload[KEY_PAYLOAD_AVAILABLE] = VALUE_TRUE payload[KEY_PAYLOAD_NOT_AVAILABLE] = VALUE_FALSE - if ( - model in (MODEL_SHELLYBUTTON1, MODEL_SHELLYSENSE, MODEL_SHELLYHT) - and sensor in (SENSOR_RSSI, SENSOR_SSID, SENSOR_UPTIME) - and device_config.get(CONF_POWERED) != ATTR_POWER_AC - ): - payload = "" if no_battery_sensor and sensor == SENSOR_BATTERY: payload = "" if use_fahrenheit and sensor == SENSOR_TEMPERATURE: