From 9be3278ffaae62ba5c6492585fdb283043137bda Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 15 Oct 2021 21:32:12 +0200 Subject: [PATCH] Add Emergency Button (sos) device support to Tuya (#57794) --- homeassistant/components/tuya/binary_sensor.py | 14 ++++++++++++++ homeassistant/components/tuya/const.py | 3 +++ homeassistant/components/tuya/sensor.py | 17 +++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/homeassistant/components/tuya/binary_sensor.py b/homeassistant/components/tuya/binary_sensor.py index a00e4e19e1a..665ee88e550 100644 --- a/homeassistant/components/tuya/binary_sensor.py +++ b/homeassistant/components/tuya/binary_sensor.py @@ -8,6 +8,7 @@ from tuya_iot import TuyaDevice, TuyaDeviceManager from homeassistant.components.binary_sensor import ( DEVICE_CLASS_DOOR, DEVICE_CLASS_MOTION, + DEVICE_CLASS_SAFETY, BinarySensorEntity, BinarySensorEntityDescription, ) @@ -61,6 +62,19 @@ BINARY_SENSORS: dict[str, tuple[TuyaBinarySensorEntityDescription, ...]] = { entity_category=ENTITY_CATEGORY_DIAGNOSTIC, ), ), + # Emergency Button + # https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy + "sos": ( + TuyaBinarySensorEntityDescription( + key=DPCode.SOS_STATE, + device_class=DEVICE_CLASS_SAFETY, + ), + TuyaBinarySensorEntityDescription( + key=DPCode.TEMPER_ALARM, + name="Tamper", + entity_category=ENTITY_CATEGORY_DIAGNOSTIC, + ), + ), } diff --git a/homeassistant/components/tuya/const.py b/homeassistant/components/tuya/const.py index f25dacaab37..43ecefec13b 100644 --- a/homeassistant/components/tuya/const.py +++ b/homeassistant/components/tuya/const.py @@ -45,6 +45,7 @@ TUYA_SUPPORTED_PRODUCT_CATEGORIES = ( "pc", # Power Strip "pir", # PIR Detector "qn", # Heater + "sos", # SOS Button "wk", # Thermostat "xdd", # Ceiling Light "xxj", # Diffuser @@ -100,6 +101,8 @@ class DPCode(str, Enum): POWDER_SET = "powder_set" # Powder PUMP_RESET = "pump_reset" # Water pump reset SHAKE = "shake" # Oscillating + SOS = "sos" # Emergency State + SOS_STATE = "sos_state" # Emergency mode SPEED = "speed" # Speed level START = "start" # Start SWING = "swing" # Swing mode diff --git a/homeassistant/components/tuya/sensor.py b/homeassistant/components/tuya/sensor.py index 0d6d179ab76..d90f5a8e72c 100644 --- a/homeassistant/components/tuya/sensor.py +++ b/homeassistant/components/tuya/sensor.py @@ -92,6 +92,23 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=ENTITY_CATEGORY_DIAGNOSTIC, ), ), + # Emergency Button + # https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy + "sos": ( + SensorEntityDescription( + key=DPCode.BATTERY_PERCENTAGE, + name="Battery", + native_unit_of_measurement=PERCENTAGE, + device_class=DEVICE_CLASS_BATTERY, + state_class=STATE_CLASS_MEASUREMENT, + entity_category=ENTITY_CATEGORY_DIAGNOSTIC, + ), + SensorEntityDescription( + key=DPCode.BATTERY_STATE, + name="Battery State", + entity_category=ENTITY_CATEGORY_DIAGNOSTIC, + ), + ), } # Socket (duplicate of `kg`)