diff --git a/homeassistant/components/sofar/diagnostics.py b/homeassistant/components/sofar/diagnostics.py index 3ecea362805e..e421bc2e70ee 100644 --- a/homeassistant/components/sofar/diagnostics.py +++ b/homeassistant/components/sofar/diagnostics.py @@ -30,6 +30,7 @@ async def async_get_config_entry_diagnostics( "readings_components": device.readings_components, "settings_components": device.settings_components, "active_faults": sorted(fault.key for fault in device.state.active_faults), + "address_masks": await device.async_read_masks(), "raw": raw, }, TO_REDACT, diff --git a/tests/components/sofar/snapshots/test_diagnostics.ambr b/tests/components/sofar/snapshots/test_diagnostics.ambr index a8e8adc7909e..339fda0b38f5 100644 --- a/tests/components/sofar/snapshots/test_diagnostics.ambr +++ b/tests/components/sofar/snapshots/test_diagnostics.ambr @@ -3,6 +3,22 @@ dict({ 'active_faults': list([ ]), + 'address_masks': dict({ + '1024': 0, + '1088': 0, + '1152': 0, + '1280': 0, + '1408': 0, + '1472': 0, + '1536': 0, + '1600': 0, + '1664': 0, + '1728': 0, + '4096': 0, + '4160': 0, + '4352': 0, + '4480': 0, + }), 'inverter_type': 1537, 'model': '4.4 KTLX-G3', 'raw': dict({ diff --git a/tests/components/sofar/test_diagnostics.py b/tests/components/sofar/test_diagnostics.py index d7aff386402c..e1a0d7588b16 100644 --- a/tests/components/sofar/test_diagnostics.py +++ b/tests/components/sofar/test_diagnostics.py @@ -60,3 +60,21 @@ async def test_diagnostics_redacts_serial_number( holding = diag["raw"]["holding"] for address in range(0x0445, 0x044C): assert str(address) not in holding + + +async def test_diagnostics_decodes_address_masks( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + mock_connection: MockModbusConnection, + init_integration: MockConfigEntry, +) -> None: + """Test a mask is assembled from four registers, most significant first.""" + holding = mock_connection.for_unit(1).holding + holding[0x0400] = 0x0001 + holding[0x0401] = 0x0002 + holding[0x0402] = 0x0003 + holding[0x0403] = 0x0004 + + diag = await get_diagnostics_for_config_entry(hass, hass_client, init_integration) + + assert diag["address_masks"]["1024"] == 0x0001000200030004