From e831b1b2301ec0834f52c90a0015f539d54cb455 Mon Sep 17 00:00:00 2001
From: Maciej Bieniek <bieniu@users.noreply.github.com>
Date: Mon, 10 Mar 2025 09:38:44 +0100
Subject: [PATCH] Add support for BH1750 illuminance sensor in Nettigo Air
 Monitor integration (#140242)

* Add support for BH1750 illuminance sensor

* Update strings

* Update test snapshot
---
 homeassistant/components/nam/const.py         |  1 +
 homeassistant/components/nam/sensor.py        | 11 ++++
 homeassistant/components/nam/strings.json     |  3 +
 tests/components/nam/fixtures/nam_data.json   |  1 +
 .../nam/snapshots/test_diagnostics.ambr       |  2 +-
 .../components/nam/snapshots/test_sensor.ambr | 55 +++++++++++++++++++
 6 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/homeassistant/components/nam/const.py b/homeassistant/components/nam/const.py
index 4b7b50b309a..2dedcf3c68a 100644
--- a/homeassistant/components/nam/const.py
+++ b/homeassistant/components/nam/const.py
@@ -11,6 +11,7 @@ SUFFIX_P1: Final = "_p1"
 SUFFIX_P2: Final = "_p2"
 SUFFIX_P4: Final = "_p4"
 
+ATTR_BH1750_ILLUMINANCE: Final = "bh1750_illuminance"
 ATTR_BME280_HUMIDITY: Final = "bme280_humidity"
 ATTR_BME280_PRESSURE: Final = "bme280_pressure"
 ATTR_BME280_TEMPERATURE: Final = "bme280_temperature"
diff --git a/homeassistant/components/nam/sensor.py b/homeassistant/components/nam/sensor.py
index 4478507dc59..45cfd313e8f 100644
--- a/homeassistant/components/nam/sensor.py
+++ b/homeassistant/components/nam/sensor.py
@@ -19,6 +19,7 @@ from homeassistant.components.sensor import (
 from homeassistant.const import (
     CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
     CONCENTRATION_PARTS_PER_MILLION,
+    LIGHT_LUX,
     PERCENTAGE,
     SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
     EntityCategory,
@@ -33,6 +34,7 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity
 from homeassistant.util.dt import utcnow
 
 from .const import (
+    ATTR_BH1750_ILLUMINANCE,
     ATTR_BME280_HUMIDITY,
     ATTR_BME280_PRESSURE,
     ATTR_BME280_TEMPERATURE,
@@ -83,6 +85,15 @@ class NAMSensorEntityDescription(SensorEntityDescription):
 
 
 SENSORS: tuple[NAMSensorEntityDescription, ...] = (
+    NAMSensorEntityDescription(
+        key=ATTR_BH1750_ILLUMINANCE,
+        translation_key="bh1750_illuminance",
+        suggested_display_precision=0,
+        native_unit_of_measurement=LIGHT_LUX,
+        device_class=SensorDeviceClass.ILLUMINANCE,
+        state_class=SensorStateClass.MEASUREMENT,
+        value=lambda sensors: sensors.bh1750_illuminance,
+    ),
     NAMSensorEntityDescription(
         key=ATTR_BME280_HUMIDITY,
         translation_key="bme280_humidity",
diff --git a/homeassistant/components/nam/strings.json b/homeassistant/components/nam/strings.json
index 2caa4d8bd97..22fb1dc30d2 100644
--- a/homeassistant/components/nam/strings.json
+++ b/homeassistant/components/nam/strings.json
@@ -54,6 +54,9 @@
   },
   "entity": {
     "sensor": {
+      "bh1750_illuminance": {
+        "name": "BH1750 illuminance"
+      },
       "bme280_humidity": {
         "name": "BME280 humidity"
       },
diff --git a/tests/components/nam/fixtures/nam_data.json b/tests/components/nam/fixtures/nam_data.json
index 82dacbefb34..47ebe099dc7 100644
--- a/tests/components/nam/fixtures/nam_data.json
+++ b/tests/components/nam/fixtures/nam_data.json
@@ -26,6 +26,7 @@
     { "value_type": "temperature", "value": "6.26" },
     { "value_type": "HECA_temperature", "value": "7.95" },
     { "value_type": "HECA_humidity", "value": "49.97" },
+    { "value_type": "ambient_light", "value": "298.45" },
     { "value_type": "signal", "value": "-72" }
   ]
 }
diff --git a/tests/components/nam/snapshots/test_diagnostics.ambr b/tests/components/nam/snapshots/test_diagnostics.ambr
index 135266e3376..c0009899d16 100644
--- a/tests/components/nam/snapshots/test_diagnostics.ambr
+++ b/tests/components/nam/snapshots/test_diagnostics.ambr
@@ -2,7 +2,7 @@
 # name: test_entry_diagnostics
   dict({
     'data': dict({
-      'bh1750_illuminance': None,
+      'bh1750_illuminance': 298.45,
       'bme280_humidity': 45.69,
       'bme280_pressure': 1011.0117,
       'bme280_temperature': 7.56,
diff --git a/tests/components/nam/snapshots/test_sensor.ambr b/tests/components/nam/snapshots/test_sensor.ambr
index 429d069b741..c6c32737a31 100644
--- a/tests/components/nam/snapshots/test_sensor.ambr
+++ b/tests/components/nam/snapshots/test_sensor.ambr
@@ -1,4 +1,59 @@
 # serializer version: 1
+# name: test_sensor[sensor.nettigo_air_monitor_bh1750_illuminance-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'config_subentry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.nettigo_air_monitor_bh1750_illuminance',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+      'sensor': dict({
+        'suggested_display_precision': 0,
+      }),
+    }),
+    'original_device_class': <SensorDeviceClass.ILLUMINANCE: 'illuminance'>,
+    'original_icon': None,
+    'original_name': 'BH1750 illuminance',
+    'platform': 'nam',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'bh1750_illuminance',
+    'unique_id': 'aa:bb:cc:dd:ee:ff-bh1750_illuminance',
+    'unit_of_measurement': 'lx',
+  })
+# ---
+# name: test_sensor[sensor.nettigo_air_monitor_bh1750_illuminance-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'illuminance',
+      'friendly_name': 'Nettigo Air Monitor BH1750 illuminance',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': 'lx',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.nettigo_air_monitor_bh1750_illuminance',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '298.45',
+  })
+# ---
 # name: test_sensor[sensor.nettigo_air_monitor_bme280_humidity-entry]
   EntityRegistryEntrySnapshot({
     'aliases': set({
-- 
GitLab