From 41a423e140614ea1147b4d9e3373dc69ea255a34 Mon Sep 17 00:00:00 2001 From: seppwabala Date: Mon, 12 Jan 2026 16:21:00 +0100 Subject: [PATCH] Add support for eds0065 in onewire (#160094) Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> --- homeassistant/components/onewire/const.py | 2 +- homeassistant/components/onewire/sensor.py | 14 +++ tests/components/onewire/const.py | 8 ++ .../onewire/snapshots/test_init.ambr | 31 +++++ .../onewire/snapshots/test_sensor.ambr | 111 ++++++++++++++++++ 5 files changed, 165 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/onewire/const.py b/homeassistant/components/onewire/const.py index 6a60e98eb87..dabe2f560f4 100644 --- a/homeassistant/components/onewire/const.py +++ b/homeassistant/components/onewire/const.py @@ -28,7 +28,7 @@ DEVICE_SUPPORT = { "3A": (), "3B": (), "42": (), - "7E": ("EDS0066", "EDS0068"), + "7E": ("EDS0065", "EDS0066", "EDS0068"), "A6": (), "EF": ("HB_HUB", "HB_MOISTURE_METER", "HobbyBoards_EF"), } diff --git a/homeassistant/components/onewire/sensor.py b/homeassistant/components/onewire/sensor.py index f54b66b059d..b627a1d5a4d 100644 --- a/homeassistant/components/onewire/sensor.py +++ b/homeassistant/components/onewire/sensor.py @@ -297,6 +297,20 @@ HOBBYBOARD_EF: dict[str, tuple[OneWireSensorEntityDescription, ...]] = { # 7E sensors are special sensors by Embedded Data Systems EDS_SENSORS: dict[str, tuple[OneWireSensorEntityDescription, ...]] = { + "EDS0065": ( + OneWireSensorEntityDescription( + key="EDS0065/temperature", + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + state_class=SensorStateClass.MEASUREMENT, + ), + OneWireSensorEntityDescription( + key="EDS0065/humidity", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + ), + ), "EDS0066": ( OneWireSensorEntityDescription( key="EDS0066/temperature", diff --git a/tests/components/onewire/const.py b/tests/components/onewire/const.py index 2f58766f031..74b7c9c4d57 100644 --- a/tests/components/onewire/const.py +++ b/tests/components/onewire/const.py @@ -260,4 +260,12 @@ MOCK_OWPROXY_DEVICES = { "/EDS0066/pressure": [b" 1012.21"], }, }, + "7E.333333333333": { + ATTR_INJECT_READS: { + "/type": [b"EDS"], + "/device_type": [b"EDS0065"], + "/EDS0065/temperature": [b" 13.9375"], + "/EDS0065/humidity": [b" 41.375"], + }, + }, } diff --git a/tests/components/onewire/snapshots/test_init.ambr b/tests/components/onewire/snapshots/test_init.ambr index 19ac8720496..d7e0d711c25 100644 --- a/tests/components/onewire/snapshots/test_init.ambr +++ b/tests/components/onewire/snapshots/test_init.ambr @@ -588,6 +588,37 @@ 'via_device_id': None, }) # --- +# name: test_registry[7E.333333333333-entry] + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'config_entries_subentries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': None, + 'hw_version': None, + 'id': , + 'identifiers': set({ + tuple( + 'onewire', + '7E.333333333333', + ), + }), + 'labels': set({ + }), + 'manufacturer': 'Embedded Data Systems', + 'model': None, + 'model_id': 'EDS0065', + 'name': '7E.333333333333', + 'name_by_user': None, + 'primary_config_entry': , + 'serial_number': '333333333333', + 'sw_version': '3.2', + 'via_device_id': None, + }) +# --- # name: test_registry[A6.111111111111-entry] DeviceRegistryEntrySnapshot({ 'area_id': None, diff --git a/tests/components/onewire/snapshots/test_sensor.ambr b/tests/components/onewire/snapshots/test_sensor.ambr index f19a168456d..2edfcd9b853 100644 --- a/tests/components/onewire/snapshots/test_sensor.ambr +++ b/tests/components/onewire/snapshots/test_sensor.ambr @@ -2245,6 +2245,117 @@ 'state': '13.9375', }) # --- +# name: test_sensors[sensor.7e_333333333333_humidity-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.7e_333333333333_humidity', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Humidity', + 'platform': 'onewire', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': '/7E.333333333333/EDS0065/humidity', + 'unit_of_measurement': '%', + }) +# --- +# name: test_sensors[sensor.7e_333333333333_humidity-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'humidity', + 'device_file': '/7E.333333333333/EDS0065/humidity', + 'friendly_name': '7E.333333333333 Humidity', + 'state_class': , + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'sensor.7e_333333333333_humidity', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '41.375', + }) +# --- +# name: test_sensors[sensor.7e_333333333333_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.7e_333333333333_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temperature', + 'platform': 'onewire', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': '/7E.333333333333/EDS0065/temperature', + 'unit_of_measurement': , + }) +# --- +# name: test_sensors[sensor.7e_333333333333_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'device_file': '/7E.333333333333/EDS0065/temperature', + 'friendly_name': '7E.333333333333 Temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.7e_333333333333_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '13.9375', + }) +# --- # name: test_sensors[sensor.a6_111111111111_hih3600_humidity-entry] EntityRegistryEntrySnapshot({ 'aliases': set({