diff --git a/homeassistant/components/deconz/manifest.json b/homeassistant/components/deconz/manifest.json index 8139d77df85..6245558a1c5 100644 --- a/homeassistant/components/deconz/manifest.json +++ b/homeassistant/components/deconz/manifest.json @@ -8,7 +8,7 @@ "iot_class": "local_push", "loggers": ["pydeconz"], "quality_scale": "platinum", - "requirements": ["pydeconz==112"], + "requirements": ["pydeconz==113"], "ssdp": [ { "manufacturer": "Royal Philips Electronics", diff --git a/homeassistant/components/deconz/sensor.py b/homeassistant/components/deconz/sensor.py index e5d5de41008..4e00ac0a415 100644 --- a/homeassistant/components/deconz/sensor.py +++ b/homeassistant/components/deconz/sensor.py @@ -16,6 +16,7 @@ from pydeconz.models.sensor.daylight import DAYLIGHT_STATUS, Daylight from pydeconz.models.sensor.generic_status import GenericStatus from pydeconz.models.sensor.humidity import Humidity from pydeconz.models.sensor.light_level import LightLevel +from pydeconz.models.sensor.moisture import Moisture from pydeconz.models.sensor.power import Power from pydeconz.models.sensor.pressure import Pressure from pydeconz.models.sensor.switch import Switch @@ -81,6 +82,7 @@ T = TypeVar( GenericStatus, Humidity, LightLevel, + Moisture, Power, Pressure, Temperature, @@ -206,6 +208,17 @@ ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = ( state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=LIGHT_LUX, ), + DeconzSensorDescription[Moisture]( + key="moisture", + supported_fn=lambda device: device.moisture is not None, + update_key="moisture", + value_fn=lambda device: device.scaled_moisture, + instance_check=Moisture, + device_class=SensorDeviceClass.MOISTURE, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=PERCENTAGE, + suggested_display_precision=1, + ), DeconzSensorDescription[Power]( key="power", supported_fn=lambda device: device.power is not None, diff --git a/requirements_all.txt b/requirements_all.txt index 0d77c9ef1a0..e2bf9451e44 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1625,7 +1625,7 @@ pydaikin==2.9.1 pydanfossair==0.1.0 # homeassistant.components.deconz -pydeconz==112 +pydeconz==113 # homeassistant.components.delijn pydelijn==1.0.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 55949541657..be1e45d3634 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1198,7 +1198,7 @@ pycsspeechtts==1.0.8 pydaikin==2.9.1 # homeassistant.components.deconz -pydeconz==112 +pydeconz==113 # homeassistant.components.dexcom pydexcom==0.2.3 diff --git a/tests/components/deconz/test_sensor.py b/tests/components/deconz/test_sensor.py index 0d2f792b6dc..4d93df17ba3 100644 --- a/tests/components/deconz/test_sensor.py +++ b/tests/components/deconz/test_sensor.py @@ -441,6 +441,43 @@ TEST_DATA = [ "next_state": "10.0", }, ), + ( # Moisture Sensor + { + "config": {"battery": 100, "offset": 0, "on": True, "reachable": True}, + "etag": "1ba99c68975111c04367b67cf95ead44", + "lastannounced": None, + "lastseen": "2023-05-19T09:55Z", + "manufacturername": "_TZE200_myd45weu", + "modelid": "TS0601", + "name": "Soil Sensor", + "state": { + "lastupdated": "2023-05-19T09:42:00.472", + "lowbattery": False, + "moisture": 7213, + }, + "swversion": "1.0.8", + "type": "ZHAMoisture", + "uniqueid": "a4:c1:38:fe:86:8f:07:a3-01-0408", + }, + { + "entity_count": 3, + "device_count": 3, + "entity_id": "sensor.soil_sensor", + "unique_id": "a4:c1:38:fe:86:8f:07:a3-01-0408-moisture", + "state": "72.13", + "entity_category": None, + "device_class": SensorDeviceClass.MOISTURE, + "state_class": SensorStateClass.MEASUREMENT, + "attributes": { + "state_class": "measurement", + "unit_of_measurement": "%", + "device_class": "moisture", + "friendly_name": "Soil Sensor", + }, + "websocket_event": {"state": {"moisture": 6923}}, + "next_state": "69.23", + }, + ), ( # Light level sensor { "config": {