From 4ef55e50880a03c56a3ef6075c95ed58c012fd7f Mon Sep 17 00:00:00 2001
From: Anrijs <Anrijs@users.noreply.github.com>
Date: Wed, 21 Aug 2024 22:12:20 +0300
Subject: [PATCH] Add Aranet Radon Plus support (#124197)

added aranet radon plus support
---
 homeassistant/components/aranet/icons.json    |  3 +
 homeassistant/components/aranet/manifest.json |  2 +-
 homeassistant/components/aranet/sensor.py     |  7 ++
 requirements_all.txt                          |  2 +-
 requirements_test_all.txt                     |  2 +-
 tests/components/aranet/__init__.py           |  8 +++
 tests/components/aranet/test_sensor.py        | 66 +++++++++++++++++++
 7 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/homeassistant/components/aranet/icons.json b/homeassistant/components/aranet/icons.json
index 6d6e9a83b03..8e2b66c0150 100644
--- a/homeassistant/components/aranet/icons.json
+++ b/homeassistant/components/aranet/icons.json
@@ -6,6 +6,9 @@
       },
       "radiation_rate": {
         "default": "mdi:radioactive"
+      },
+      "radon_concentration": {
+        "default": "mdi:radioactive"
       }
     }
   }
diff --git a/homeassistant/components/aranet/manifest.json b/homeassistant/components/aranet/manifest.json
index 3f74d480c17..6cce7554dd1 100644
--- a/homeassistant/components/aranet/manifest.json
+++ b/homeassistant/components/aranet/manifest.json
@@ -19,5 +19,5 @@
   "documentation": "https://www.home-assistant.io/integrations/aranet",
   "integration_type": "device",
   "iot_class": "local_push",
-  "requirements": ["aranet4==2.3.4"]
+  "requirements": ["aranet4==2.4.0"]
 }
diff --git a/homeassistant/components/aranet/sensor.py b/homeassistant/components/aranet/sensor.py
index c0fe194e87b..1dc4b9f956e 100644
--- a/homeassistant/components/aranet/sensor.py
+++ b/homeassistant/components/aranet/sensor.py
@@ -99,6 +99,13 @@ SENSOR_DESCRIPTIONS = {
         suggested_display_precision=4,
         scale=0.000001,
     ),
+    "radon_concentration": AranetSensorEntityDescription(
+        key="radon_concentration",
+        translation_key="radon_concentration",
+        name="Radon Concentration",
+        native_unit_of_measurement="Bq/m³",
+        state_class=SensorStateClass.MEASUREMENT,
+    ),
     "battery": AranetSensorEntityDescription(
         key="battery",
         name="Battery",
diff --git a/requirements_all.txt b/requirements_all.txt
index a7bee65a8b1..a6c7a9a8918 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -470,7 +470,7 @@ apsystems-ez1==2.2.1
 aqualogic==2.6
 
 # homeassistant.components.aranet
-aranet4==2.3.4
+aranet4==2.4.0
 
 # homeassistant.components.arcam_fmj
 arcam-fmj==1.5.2
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 7585c0cfa4e..bb4a4137ebd 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -440,7 +440,7 @@ aprslib==0.7.2
 apsystems-ez1==2.2.1
 
 # homeassistant.components.aranet
-aranet4==2.3.4
+aranet4==2.4.0
 
 # homeassistant.components.arcam_fmj
 arcam-fmj==1.5.2
diff --git a/tests/components/aranet/__init__.py b/tests/components/aranet/__init__.py
index 18bebfb44a4..711c605fd28 100644
--- a/tests/components/aranet/__init__.py
+++ b/tests/components/aranet/__init__.py
@@ -82,3 +82,11 @@ VALID_ARANET_RADIATION_DATA_SERVICE_INFO = fake_service_info(
         1794: b"\x02!&\x04\x01\x00`-\x00\x00\x08\x98\x05\x00n\x00\x00d\x00,\x01\xfd\x00\xc7"
     },
 )
+
+VALID_ARANET_RADON_DATA_SERVICE_INFO = fake_service_info(
+    "AranetRn+ 12345",
+    "0000fce0-0000-1000-8000-00805f9b34fb",
+    {
+        1794: b"\x03!\x04\x06\x01\x00\x00\x00\x07\x00\xfe\x01\xc9'\xce\x01\x00d\x01X\x02\xf6\x01\x08"
+    },
+)
diff --git a/tests/components/aranet/test_sensor.py b/tests/components/aranet/test_sensor.py
index c932a92c1e8..7bd00af4837 100644
--- a/tests/components/aranet/test_sensor.py
+++ b/tests/components/aranet/test_sensor.py
@@ -11,6 +11,7 @@ from . import (
     DISABLED_INTEGRATIONS_SERVICE_INFO,
     VALID_ARANET2_DATA_SERVICE_INFO,
     VALID_ARANET_RADIATION_DATA_SERVICE_INFO,
+    VALID_ARANET_RADON_DATA_SERVICE_INFO,
     VALID_DATA_SERVICE_INFO,
 )
 
@@ -188,6 +189,71 @@ async def test_sensors_aranet4(hass: HomeAssistant) -> None:
     await hass.async_block_till_done()
 
 
+@pytest.mark.usefixtures("entity_registry_enabled_by_default")
+async def test_sensors_aranetrn(hass: HomeAssistant) -> None:
+    """Test setting up creates the sensors for Aranet Radon device."""
+    entry = MockConfigEntry(
+        domain=DOMAIN,
+        unique_id="aa:bb:cc:dd:ee:ff",
+    )
+    entry.add_to_hass(hass)
+
+    assert await hass.config_entries.async_setup(entry.entry_id)
+    await hass.async_block_till_done()
+
+    assert len(hass.states.async_all("sensor")) == 0
+    inject_bluetooth_service_info(hass, VALID_ARANET_RADON_DATA_SERVICE_INFO)
+    await hass.async_block_till_done()
+    assert len(hass.states.async_all("sensor")) == 6
+
+    batt_sensor = hass.states.get("sensor.aranetrn_12345_battery")
+    batt_sensor_attrs = batt_sensor.attributes
+    assert batt_sensor.state == "100"
+    assert batt_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Battery"
+    assert batt_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "%"
+    assert batt_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    co2_sensor = hass.states.get("sensor.aranetrn_12345_radon_concentration")
+    co2_sensor_attrs = co2_sensor.attributes
+    assert co2_sensor.state == "7"
+    assert co2_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Radon Concentration"
+    assert co2_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "Bq/m³"
+    assert co2_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    humid_sensor = hass.states.get("sensor.aranetrn_12345_humidity")
+    humid_sensor_attrs = humid_sensor.attributes
+    assert humid_sensor.state == "46.2"
+    assert humid_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Humidity"
+    assert humid_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "%"
+    assert humid_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    temp_sensor = hass.states.get("sensor.aranetrn_12345_temperature")
+    temp_sensor_attrs = temp_sensor.attributes
+    assert temp_sensor.state == "25.5"
+    assert temp_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Temperature"
+    assert temp_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "°C"
+    assert temp_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    press_sensor = hass.states.get("sensor.aranetrn_12345_pressure")
+    press_sensor_attrs = press_sensor.attributes
+    assert press_sensor.state == "1018.5"
+    assert press_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Pressure"
+    assert press_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "hPa"
+    assert press_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    interval_sensor = hass.states.get("sensor.aranetrn_12345_update_interval")
+    interval_sensor_attrs = interval_sensor.attributes
+    assert interval_sensor.state == "600"
+    assert (
+        interval_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Update Interval"
+    )
+    assert interval_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "s"
+    assert interval_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
+
+    assert await hass.config_entries.async_unload(entry.entry_id)
+    await hass.async_block_till_done()
+
+
 @pytest.mark.usefixtures("entity_registry_enabled_by_default")
 async def test_smart_home_integration_disabled(hass: HomeAssistant) -> None:
     """Test disabling smart home integration marks entities as unavailable."""
-- 
GitLab