Add ZWaveNodeBaseEntity for Z-Wave node-level entities#170124
Merged
MartinHjelmare merged 6 commits intoMay 11, 2026
Merged
Conversation
Introduce a base class for Z-Wave entities that exist for the whole node rather than for a specific Z-Wave Value (firmware update, ping button, node/controller status, statistics, …). Encapsulates the duplicated boilerplate currently spread across these classes: has_entity_name, should_poll, base unique ID, device info, no-op async_poll_value, and the _remove_entity dispatcher subscription. Subclasses can opt in to also being removed when a node starts a reinterview via the _remove_on_reinterview class attribute. Existing entities are not yet migrated; that happens in follow-up commits.
Use the new node-level base class to remove duplicated boilerplate (should_poll/has_entity_name attrs, base unique ID, device info, async_poll_value, and the _remove_entity dispatcher subscription). The ping button still only listens for the network-removal signal, not the reinterview-started one — created in async_on_node_added, not async_on_node_ready.
Drop the duplicated should_poll/has_entity_name attrs, base unique ID plumbing, device info, async_poll_value override, and the trio of dispatcher subscriptions in async_added_to_hass. The reinterview removal is now expressed as `_remove_on_reinterview = True`.
Apply the new base class to ZWaveNodeStatusSensor, ZWaveControllerStatusSensor and ZWaveStatisticsSensor: drop the duplicated should_poll/has_entity_name attrs, base unique ID plumbing, device info, async_poll_value override, and the dispatcher subscriptions.
Contributor
|
Hey there @home-assistant/z-wave, mind taking a look at this pull request as it has been labeled with an integration ( Code owner commandsCode owners of
|
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a shared ZWaveNodeBaseEntity for Z-Wave “node-level” entities (entities not backed by a specific Z-Wave Value) and migrates existing node-level entities to inherit from it, reducing duplicated boilerplate across platforms.
Changes:
- Added
ZWaveNodeBaseEntityinzwave_js/entity.pyto centralize node-level entity setup (unique ID base, device info, refresh-value dispatcher hook, and removal dispatcher hooks). - Migrated node-level entities in
update.py,sensor.py, andbutton.pyto useZWaveNodeBaseEntity, including an opt-in_remove_on_reinterviewflag for entities that should be removed on reinterview start. - Removed duplicated
async_poll_valueand dispatcher wiring from the migrated entities, delegating to the new base class.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| homeassistant/components/zwave_js/entity.py | Adds ZWaveNodeBaseEntity encapsulating common node-level entity wiring (unique ID base, device info, dispatcher subscriptions). |
| homeassistant/components/zwave_js/update.py | Migrates ZWaveFirmwareUpdateEntity to the new base and uses _remove_on_reinterview to preserve reinterview-removal behavior. |
| homeassistant/components/zwave_js/sensor.py | Migrates node/controller status and statistics sensors to the new base, removing duplicated dispatcher/poll boilerplate. |
| homeassistant/components/zwave_js/button.py | Migrates ZWaveNodePingButton to the new base, removing duplicated dispatcher/poll boilerplate. |
MartinHjelmare
approved these changes
May 8, 2026
Per review feedback on the refactor PR: include the entity_id so the log line is actionable when surfaced for a specific entity. Update the three test assertions that pinned the previous "this entity" wording.
Tighten the three single-entity test assertions in test_button.py, test_sensor.py and test_update.py to include the expected entity_id in the substring check, so they validate that the entity_id actually ends up in the logged message (the point of the prior log change). The statistics sensor count assertion is left as-is — it already checks one log line per entity across many entities, where enumerating each entity_id would be noisier than valuable.
Member
|
Ready to merge? |
Member
Author
|
Also tested this locally and all affected entities still seem to work as expected, so yep. |
bogaczl
added a commit
to bogaczl/core
that referenced
this pull request
May 11, 2026
Bump aiotankerkoenig to 0.5.3 (home-assistant#170224) Fix entities refresh for UptimeRobot (home-assistant#170217) Update easyEnergy exception and icon translations (home-assistant#170218) Add more Gen1 sensors to indevolt (home-assistant#170191) Bump letpot to 0.7.0 (home-assistant#169868) Migrate Thermo Beacon to config entry runtime data (home-assistant#170226) Migrate Sensirion BLE to config entry runtime data (home-assistant#170227) Co-authored-by: Josef Zweck <josef@zweck.dev> Bump imgw-pib to 2.1.2 (home-assistant#170274) Bump serialx to 1.7.2 (home-assistant#170272) Bump aioamazondevices to 13.5.0 (home-assistant#170258) Update upb-lib to 0.7.0 (home-assistant#170051) Bump qbittorrent-api to 2026.5.1 (home-assistant#170181) Use VERSION from PrusaLinkConfigFlow in prusalink (home-assistant#170200) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Migrate Duco to python-duco-connectivity and remove temperature sensors (home-assistant#170237) fix: Do not forget segments from state when a new config arrives (home-assistant#170265) Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete icon translations for Indevolt (home-assistant#170292) Align Indevolt quality scale with documentation (home-assistant#170289) Apply strict typing to Indevolt integration (home-assistant#170288) iaqualink: set system specific polling interval (home-assistant#170279) Use standby for HDMI-CEC turn off (home-assistant#170206) prusalink: add continue-job button for ATTENTION state (home-assistant#170193) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> data grand lyon: implement diagnostics (home-assistant#170184) Set serial port description from `description`, not `product` (home-assistant#170160) Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Update infrared-protocols to 4.0.0 (home-assistant#170297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> data grand lyon: use test fixture instead of manual patching (home-assistant#170294) Handle empty BSB-LAN heating circuits (home-assistant#170249) Add diagnostics platform to Home Assistant Connect ZBT-2 (home-assistant#170158) Fix deprecated_class to work with inheritance (home-assistant#170137) Skip offline devices instead of aborting ViCare diagnostics (home-assistant#170106) Fix local API incorrectly marking devices as unavailable in Overkiz (home-assistant#170118) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Add RepairsFlowResult TypeAlias (home-assistant#170263) Fix flaky diagnostics test for Novy Cooker Hood (home-assistant#170299) Fix spelling of RS-232 in Denon RS-232 integration (home-assistant#170298) data grand lyon: implement reconfiguration flow (home-assistant#170210) Add shared test mocks for the Infrared integration (home-assistant#170296) Co-authored-by: Claude <noreply@anthropic.com> Bump renault-api to 0.5.8 (home-assistant#170309) Bump indevolt api to 1.7.2 (home-assistant#170310) Update IQS to platinum for UptimeRobot (home-assistant#170260) Add player specific sensor to nintendo_parental_controls (home-assistant#155786) Co-authored-by: Joshua Peisach (ItzSwirlz) <itzswirlz2020@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com> Fix hassio.backup_partial AttributeError when folders are specified (home-assistant#170312) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add backoff to forbidden packages (home-assistant#170242) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add tuya water timer data points (home-assistant#170314) Add more entities for Tuya camera (home-assistant#169966) Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com> Co-authored-by: Norbert Rittel <norbert@rittel.de> Add Tuya DLQ fixture (home-assistant#169585) Update rf-protocols to 3.0.0 (home-assistant#170301) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add Message Expire Interval option to MQTT publish service (home-assistant#169317) Co-authored-by: Copilot <copilot@github.com> Add new CentriConnect component (home-assistant#166933) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Watts: add HVAC action + preset mode (home-assistant#169546) Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Joostlek <joostlek@outlook.com> Add quality scale for airnow integration (home-assistant#169709) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Fix nobo_hub NoboProfileSelector class-level mutable defaults (home-assistant#170119) Add cover support to control4 (home-assistant#169417) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Add Mitsubishi brand (home-assistant#169924) Co-authored-by: Nikolai Rahimi <nikolairahimi@users.noreply.github.com> Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Fix coordinator data mutation in YouTube diagnostics (home-assistant#170300) Co-authored-by: FIls0010 <a1867444@adelaide.edu.au> Bump aiovodafone to 3.2.0 (home-assistant#170322) Add countdown number for Tuya sfkzq single-valve timers (home-assistant#170318) Allow setting hvac_mode in generic_thermostat.set_temperature (home-assistant#168062) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Z-Wave.me: Allow updating entities (home-assistant#167839) Fix MQTT device discovery not using shared QoS and encoding options (home-assistant#170195) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Google assistant temperature setting active thermostat mode (home-assistant#166448) Co-authored-by: Lucas Sanchez Sagrado <lucas.sansag@educa.jcyl.es> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale to Tesla Fleet integration (home-assistant#160475) Co-authored-by: Claude <noreply@anthropic.com> Only use SmartThings switch for light if it should (home-assistant#166424) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale file to Ness Alarm (home-assistant#163425) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Fix Shelly media player availability (home-assistant#170319) Update discovery description wording (home-assistant#170325) Bump teltasync to 0.3.0, fix discovery for older devices (home-assistant#169660) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete exception translations for Indevolt (home-assistant#170291) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add Kiosker switch platform (home-assistant#168858) Add `ZWaveNodeBaseEntity` for Z-Wave node-level entities (home-assistant#170124) Add number platform to eurotronic_cometblue (home-assistant#168119) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
bogaczl
added a commit
to bogaczl/core
that referenced
this pull request
May 11, 2026
Bump aiotankerkoenig to 0.5.3 (home-assistant#170224) Fix entities refresh for UptimeRobot (home-assistant#170217) Update easyEnergy exception and icon translations (home-assistant#170218) Add more Gen1 sensors to indevolt (home-assistant#170191) Bump letpot to 0.7.0 (home-assistant#169868) Migrate Thermo Beacon to config entry runtime data (home-assistant#170226) Migrate Sensirion BLE to config entry runtime data (home-assistant#170227) Co-authored-by: Josef Zweck <josef@zweck.dev> Bump imgw-pib to 2.1.2 (home-assistant#170274) Bump serialx to 1.7.2 (home-assistant#170272) Bump aioamazondevices to 13.5.0 (home-assistant#170258) Update upb-lib to 0.7.0 (home-assistant#170051) Bump qbittorrent-api to 2026.5.1 (home-assistant#170181) Use VERSION from PrusaLinkConfigFlow in prusalink (home-assistant#170200) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Migrate Duco to python-duco-connectivity and remove temperature sensors (home-assistant#170237) fix: Do not forget segments from state when a new config arrives (home-assistant#170265) Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete icon translations for Indevolt (home-assistant#170292) Align Indevolt quality scale with documentation (home-assistant#170289) Apply strict typing to Indevolt integration (home-assistant#170288) iaqualink: set system specific polling interval (home-assistant#170279) Use standby for HDMI-CEC turn off (home-assistant#170206) prusalink: add continue-job button for ATTENTION state (home-assistant#170193) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> data grand lyon: implement diagnostics (home-assistant#170184) Set serial port description from `description`, not `product` (home-assistant#170160) Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Update infrared-protocols to 4.0.0 (home-assistant#170297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> data grand lyon: use test fixture instead of manual patching (home-assistant#170294) Handle empty BSB-LAN heating circuits (home-assistant#170249) Add diagnostics platform to Home Assistant Connect ZBT-2 (home-assistant#170158) Fix deprecated_class to work with inheritance (home-assistant#170137) Skip offline devices instead of aborting ViCare diagnostics (home-assistant#170106) Fix local API incorrectly marking devices as unavailable in Overkiz (home-assistant#170118) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Add RepairsFlowResult TypeAlias (home-assistant#170263) Fix flaky diagnostics test for Novy Cooker Hood (home-assistant#170299) Fix spelling of RS-232 in Denon RS-232 integration (home-assistant#170298) data grand lyon: implement reconfiguration flow (home-assistant#170210) Add shared test mocks for the Infrared integration (home-assistant#170296) Co-authored-by: Claude <noreply@anthropic.com> Bump renault-api to 0.5.8 (home-assistant#170309) Bump indevolt api to 1.7.2 (home-assistant#170310) Update IQS to platinum for UptimeRobot (home-assistant#170260) Add player specific sensor to nintendo_parental_controls (home-assistant#155786) Co-authored-by: Joshua Peisach (ItzSwirlz) <itzswirlz2020@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com> Fix hassio.backup_partial AttributeError when folders are specified (home-assistant#170312) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add backoff to forbidden packages (home-assistant#170242) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add tuya water timer data points (home-assistant#170314) Add more entities for Tuya camera (home-assistant#169966) Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com> Co-authored-by: Norbert Rittel <norbert@rittel.de> Add Tuya DLQ fixture (home-assistant#169585) Update rf-protocols to 3.0.0 (home-assistant#170301) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add Message Expire Interval option to MQTT publish service (home-assistant#169317) Co-authored-by: Copilot <copilot@github.com> Add new CentriConnect component (home-assistant#166933) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Watts: add HVAC action + preset mode (home-assistant#169546) Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Joostlek <joostlek@outlook.com> Add quality scale for airnow integration (home-assistant#169709) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Fix nobo_hub NoboProfileSelector class-level mutable defaults (home-assistant#170119) Add cover support to control4 (home-assistant#169417) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Add Mitsubishi brand (home-assistant#169924) Co-authored-by: Nikolai Rahimi <nikolairahimi@users.noreply.github.com> Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Fix coordinator data mutation in YouTube diagnostics (home-assistant#170300) Co-authored-by: FIls0010 <a1867444@adelaide.edu.au> Bump aiovodafone to 3.2.0 (home-assistant#170322) Add countdown number for Tuya sfkzq single-valve timers (home-assistant#170318) Allow setting hvac_mode in generic_thermostat.set_temperature (home-assistant#168062) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Z-Wave.me: Allow updating entities (home-assistant#167839) Fix MQTT device discovery not using shared QoS and encoding options (home-assistant#170195) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Google assistant temperature setting active thermostat mode (home-assistant#166448) Co-authored-by: Lucas Sanchez Sagrado <lucas.sansag@educa.jcyl.es> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale to Tesla Fleet integration (home-assistant#160475) Co-authored-by: Claude <noreply@anthropic.com> Only use SmartThings switch for light if it should (home-assistant#166424) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale file to Ness Alarm (home-assistant#163425) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Fix Shelly media player availability (home-assistant#170319) Update discovery description wording (home-assistant#170325) Bump teltasync to 0.3.0, fix discovery for older devices (home-assistant#169660) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete exception translations for Indevolt (home-assistant#170291) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add Kiosker switch platform (home-assistant#168858) Add `ZWaveNodeBaseEntity` for Z-Wave node-level entities (home-assistant#170124) Add number platform to eurotronic_cometblue (home-assistant#168119) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
bogaczl
added a commit
to bogaczl/core
that referenced
this pull request
May 11, 2026
Bump aiotankerkoenig to 0.5.3 (home-assistant#170224) Fix entities refresh for UptimeRobot (home-assistant#170217) Update easyEnergy exception and icon translations (home-assistant#170218) Add more Gen1 sensors to indevolt (home-assistant#170191) Bump letpot to 0.7.0 (home-assistant#169868) Migrate Thermo Beacon to config entry runtime data (home-assistant#170226) Migrate Sensirion BLE to config entry runtime data (home-assistant#170227) Co-authored-by: Josef Zweck <josef@zweck.dev> Bump imgw-pib to 2.1.2 (home-assistant#170274) Bump serialx to 1.7.2 (home-assistant#170272) Bump aioamazondevices to 13.5.0 (home-assistant#170258) Update upb-lib to 0.7.0 (home-assistant#170051) Bump qbittorrent-api to 2026.5.1 (home-assistant#170181) Use VERSION from PrusaLinkConfigFlow in prusalink (home-assistant#170200) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Migrate Duco to python-duco-connectivity and remove temperature sensors (home-assistant#170237) fix: Do not forget segments from state when a new config arrives (home-assistant#170265) Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete icon translations for Indevolt (home-assistant#170292) Align Indevolt quality scale with documentation (home-assistant#170289) Apply strict typing to Indevolt integration (home-assistant#170288) iaqualink: set system specific polling interval (home-assistant#170279) Use standby for HDMI-CEC turn off (home-assistant#170206) prusalink: add continue-job button for ATTENTION state (home-assistant#170193) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> data grand lyon: implement diagnostics (home-assistant#170184) Set serial port description from `description`, not `product` (home-assistant#170160) Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Update infrared-protocols to 4.0.0 (home-assistant#170297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> data grand lyon: use test fixture instead of manual patching (home-assistant#170294) Handle empty BSB-LAN heating circuits (home-assistant#170249) Add diagnostics platform to Home Assistant Connect ZBT-2 (home-assistant#170158) Fix deprecated_class to work with inheritance (home-assistant#170137) Skip offline devices instead of aborting ViCare diagnostics (home-assistant#170106) Fix local API incorrectly marking devices as unavailable in Overkiz (home-assistant#170118) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Add RepairsFlowResult TypeAlias (home-assistant#170263) Fix flaky diagnostics test for Novy Cooker Hood (home-assistant#170299) Fix spelling of RS-232 in Denon RS-232 integration (home-assistant#170298) data grand lyon: implement reconfiguration flow (home-assistant#170210) Add shared test mocks for the Infrared integration (home-assistant#170296) Co-authored-by: Claude <noreply@anthropic.com> Bump renault-api to 0.5.8 (home-assistant#170309) Bump indevolt api to 1.7.2 (home-assistant#170310) Update IQS to platinum for UptimeRobot (home-assistant#170260) Add player specific sensor to nintendo_parental_controls (home-assistant#155786) Co-authored-by: Joshua Peisach (ItzSwirlz) <itzswirlz2020@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com> Fix hassio.backup_partial AttributeError when folders are specified (home-assistant#170312) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add backoff to forbidden packages (home-assistant#170242) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add tuya water timer data points (home-assistant#170314) Add more entities for Tuya camera (home-assistant#169966) Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com> Co-authored-by: Norbert Rittel <norbert@rittel.de> Add Tuya DLQ fixture (home-assistant#169585) Update rf-protocols to 3.0.0 (home-assistant#170301) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add Message Expire Interval option to MQTT publish service (home-assistant#169317) Co-authored-by: Copilot <copilot@github.com> Add new CentriConnect component (home-assistant#166933) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Watts: add HVAC action + preset mode (home-assistant#169546) Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Joostlek <joostlek@outlook.com> Add quality scale for airnow integration (home-assistant#169709) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Fix nobo_hub NoboProfileSelector class-level mutable defaults (home-assistant#170119) Add cover support to control4 (home-assistant#169417) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Add Mitsubishi brand (home-assistant#169924) Co-authored-by: Nikolai Rahimi <nikolairahimi@users.noreply.github.com> Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Fix coordinator data mutation in YouTube diagnostics (home-assistant#170300) Co-authored-by: FIls0010 <a1867444@adelaide.edu.au> Bump aiovodafone to 3.2.0 (home-assistant#170322) Add countdown number for Tuya sfkzq single-valve timers (home-assistant#170318) Allow setting hvac_mode in generic_thermostat.set_temperature (home-assistant#168062) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Z-Wave.me: Allow updating entities (home-assistant#167839) Fix MQTT device discovery not using shared QoS and encoding options (home-assistant#170195) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Google assistant temperature setting active thermostat mode (home-assistant#166448) Co-authored-by: Lucas Sanchez Sagrado <lucas.sansag@educa.jcyl.es> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale to Tesla Fleet integration (home-assistant#160475) Co-authored-by: Claude <noreply@anthropic.com> Only use SmartThings switch for light if it should (home-assistant#166424) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale file to Ness Alarm (home-assistant#163425) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Fix Shelly media player availability (home-assistant#170319) Update discovery description wording (home-assistant#170325) Bump teltasync to 0.3.0, fix discovery for older devices (home-assistant#169660) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete exception translations for Indevolt (home-assistant#170291) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add Kiosker switch platform (home-assistant#168858) Add `ZWaveNodeBaseEntity` for Z-Wave node-level entities (home-assistant#170124) Add number platform to eurotronic_cometblue (home-assistant#168119) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
bogaczl
added a commit
to bogaczl/core
that referenced
this pull request
May 11, 2026
Bump aiotankerkoenig to 0.5.3 (home-assistant#170224) Fix entities refresh for UptimeRobot (home-assistant#170217) Update easyEnergy exception and icon translations (home-assistant#170218) Add more Gen1 sensors to indevolt (home-assistant#170191) Bump letpot to 0.7.0 (home-assistant#169868) Migrate Thermo Beacon to config entry runtime data (home-assistant#170226) Migrate Sensirion BLE to config entry runtime data (home-assistant#170227) Co-authored-by: Josef Zweck <josef@zweck.dev> Bump imgw-pib to 2.1.2 (home-assistant#170274) Bump serialx to 1.7.2 (home-assistant#170272) Bump aioamazondevices to 13.5.0 (home-assistant#170258) Update upb-lib to 0.7.0 (home-assistant#170051) Bump qbittorrent-api to 2026.5.1 (home-assistant#170181) Use VERSION from PrusaLinkConfigFlow in prusalink (home-assistant#170200) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Migrate Duco to python-duco-connectivity and remove temperature sensors (home-assistant#170237) fix: Do not forget segments from state when a new config arrives (home-assistant#170265) Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete icon translations for Indevolt (home-assistant#170292) Align Indevolt quality scale with documentation (home-assistant#170289) Apply strict typing to Indevolt integration (home-assistant#170288) iaqualink: set system specific polling interval (home-assistant#170279) Use standby for HDMI-CEC turn off (home-assistant#170206) prusalink: add continue-job button for ATTENTION state (home-assistant#170193) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> data grand lyon: implement diagnostics (home-assistant#170184) Set serial port description from `description`, not `product` (home-assistant#170160) Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Update infrared-protocols to 4.0.0 (home-assistant#170297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> data grand lyon: use test fixture instead of manual patching (home-assistant#170294) Handle empty BSB-LAN heating circuits (home-assistant#170249) Add diagnostics platform to Home Assistant Connect ZBT-2 (home-assistant#170158) Fix deprecated_class to work with inheritance (home-assistant#170137) Skip offline devices instead of aborting ViCare diagnostics (home-assistant#170106) Fix local API incorrectly marking devices as unavailable in Overkiz (home-assistant#170118) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Add RepairsFlowResult TypeAlias (home-assistant#170263) Fix flaky diagnostics test for Novy Cooker Hood (home-assistant#170299) Fix spelling of RS-232 in Denon RS-232 integration (home-assistant#170298) data grand lyon: implement reconfiguration flow (home-assistant#170210) Add shared test mocks for the Infrared integration (home-assistant#170296) Co-authored-by: Claude <noreply@anthropic.com> Bump renault-api to 0.5.8 (home-assistant#170309) Bump indevolt api to 1.7.2 (home-assistant#170310) Update IQS to platinum for UptimeRobot (home-assistant#170260) Add player specific sensor to nintendo_parental_controls (home-assistant#155786) Co-authored-by: Joshua Peisach (ItzSwirlz) <itzswirlz2020@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com> Fix hassio.backup_partial AttributeError when folders are specified (home-assistant#170312) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add backoff to forbidden packages (home-assistant#170242) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add tuya water timer data points (home-assistant#170314) Add more entities for Tuya camera (home-assistant#169966) Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com> Co-authored-by: Norbert Rittel <norbert@rittel.de> Add Tuya DLQ fixture (home-assistant#169585) Update rf-protocols to 3.0.0 (home-assistant#170301) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add Message Expire Interval option to MQTT publish service (home-assistant#169317) Co-authored-by: Copilot <copilot@github.com> Add new CentriConnect component (home-assistant#166933) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Watts: add HVAC action + preset mode (home-assistant#169546) Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Joostlek <joostlek@outlook.com> Add quality scale for airnow integration (home-assistant#169709) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Fix nobo_hub NoboProfileSelector class-level mutable defaults (home-assistant#170119) Add cover support to control4 (home-assistant#169417) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Add Mitsubishi brand (home-assistant#169924) Co-authored-by: Nikolai Rahimi <nikolairahimi@users.noreply.github.com> Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Fix coordinator data mutation in YouTube diagnostics (home-assistant#170300) Co-authored-by: FIls0010 <a1867444@adelaide.edu.au> Bump aiovodafone to 3.2.0 (home-assistant#170322) Add countdown number for Tuya sfkzq single-valve timers (home-assistant#170318) Allow setting hvac_mode in generic_thermostat.set_temperature (home-assistant#168062) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Z-Wave.me: Allow updating entities (home-assistant#167839) Fix MQTT device discovery not using shared QoS and encoding options (home-assistant#170195) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Google assistant temperature setting active thermostat mode (home-assistant#166448) Co-authored-by: Lucas Sanchez Sagrado <lucas.sansag@educa.jcyl.es> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale to Tesla Fleet integration (home-assistant#160475) Co-authored-by: Claude <noreply@anthropic.com> Only use SmartThings switch for light if it should (home-assistant#166424) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale file to Ness Alarm (home-assistant#163425) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Fix Shelly media player availability (home-assistant#170319) Update discovery description wording (home-assistant#170325) Bump teltasync to 0.3.0, fix discovery for older devices (home-assistant#169660) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete exception translations for Indevolt (home-assistant#170291) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add Kiosker switch platform (home-assistant#168858) Add `ZWaveNodeBaseEntity` for Z-Wave node-level entities (home-assistant#170124) Add number platform to eurotronic_cometblue (home-assistant#168119) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
bogaczl
added a commit
to bogaczl/core
that referenced
this pull request
May 11, 2026
Bump aiotankerkoenig to 0.5.3 (home-assistant#170224) Fix entities refresh for UptimeRobot (home-assistant#170217) Update easyEnergy exception and icon translations (home-assistant#170218) Add more Gen1 sensors to indevolt (home-assistant#170191) Bump letpot to 0.7.0 (home-assistant#169868) Migrate Thermo Beacon to config entry runtime data (home-assistant#170226) Migrate Sensirion BLE to config entry runtime data (home-assistant#170227) Co-authored-by: Josef Zweck <josef@zweck.dev> Bump imgw-pib to 2.1.2 (home-assistant#170274) Bump serialx to 1.7.2 (home-assistant#170272) Bump aioamazondevices to 13.5.0 (home-assistant#170258) Update upb-lib to 0.7.0 (home-assistant#170051) Bump qbittorrent-api to 2026.5.1 (home-assistant#170181) Use VERSION from PrusaLinkConfigFlow in prusalink (home-assistant#170200) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Migrate Duco to python-duco-connectivity and remove temperature sensors (home-assistant#170237) fix: Do not forget segments from state when a new config arrives (home-assistant#170265) Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete icon translations for Indevolt (home-assistant#170292) Align Indevolt quality scale with documentation (home-assistant#170289) Apply strict typing to Indevolt integration (home-assistant#170288) iaqualink: set system specific polling interval (home-assistant#170279) Use standby for HDMI-CEC turn off (home-assistant#170206) prusalink: add continue-job button for ATTENTION state (home-assistant#170193) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> data grand lyon: implement diagnostics (home-assistant#170184) Set serial port description from `description`, not `product` (home-assistant#170160) Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Update infrared-protocols to 4.0.0 (home-assistant#170297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> data grand lyon: use test fixture instead of manual patching (home-assistant#170294) Handle empty BSB-LAN heating circuits (home-assistant#170249) Add diagnostics platform to Home Assistant Connect ZBT-2 (home-assistant#170158) Fix deprecated_class to work with inheritance (home-assistant#170137) Skip offline devices instead of aborting ViCare diagnostics (home-assistant#170106) Fix local API incorrectly marking devices as unavailable in Overkiz (home-assistant#170118) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Add RepairsFlowResult TypeAlias (home-assistant#170263) Fix flaky diagnostics test for Novy Cooker Hood (home-assistant#170299) Fix spelling of RS-232 in Denon RS-232 integration (home-assistant#170298) data grand lyon: implement reconfiguration flow (home-assistant#170210) Add shared test mocks for the Infrared integration (home-assistant#170296) Co-authored-by: Claude <noreply@anthropic.com> Bump renault-api to 0.5.8 (home-assistant#170309) Bump indevolt api to 1.7.2 (home-assistant#170310) Update IQS to platinum for UptimeRobot (home-assistant#170260) Add player specific sensor to nintendo_parental_controls (home-assistant#155786) Co-authored-by: Joshua Peisach (ItzSwirlz) <itzswirlz2020@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com> Fix hassio.backup_partial AttributeError when folders are specified (home-assistant#170312) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add backoff to forbidden packages (home-assistant#170242) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add tuya water timer data points (home-assistant#170314) Add more entities for Tuya camera (home-assistant#169966) Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com> Co-authored-by: Norbert Rittel <norbert@rittel.de> Add Tuya DLQ fixture (home-assistant#169585) Update rf-protocols to 3.0.0 (home-assistant#170301) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Add Message Expire Interval option to MQTT publish service (home-assistant#169317) Co-authored-by: Copilot <copilot@github.com> Add new CentriConnect component (home-assistant#166933) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Watts: add HVAC action + preset mode (home-assistant#169546) Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Joostlek <joostlek@outlook.com> Add quality scale for airnow integration (home-assistant#169709) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Fix nobo_hub NoboProfileSelector class-level mutable defaults (home-assistant#170119) Add cover support to control4 (home-assistant#169417) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Add Mitsubishi brand (home-assistant#169924) Co-authored-by: Nikolai Rahimi <nikolairahimi@users.noreply.github.com> Co-authored-by: Paulus Schoutsen <balloob@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Fix coordinator data mutation in YouTube diagnostics (home-assistant#170300) Co-authored-by: FIls0010 <a1867444@adelaide.edu.au> Bump aiovodafone to 3.2.0 (home-assistant#170322) Add countdown number for Tuya sfkzq single-valve timers (home-assistant#170318) Allow setting hvac_mode in generic_thermostat.set_temperature (home-assistant#168062) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Z-Wave.me: Allow updating entities (home-assistant#167839) Fix MQTT device discovery not using shared QoS and encoding options (home-assistant#170195) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Google assistant temperature setting active thermostat mode (home-assistant#166448) Co-authored-by: Lucas Sanchez Sagrado <lucas.sansag@educa.jcyl.es> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale to Tesla Fleet integration (home-assistant#160475) Co-authored-by: Claude <noreply@anthropic.com> Only use SmartThings switch for light if it should (home-assistant#166424) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Add quality scale file to Ness Alarm (home-assistant#163425) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Fix Shelly media player availability (home-assistant#170319) Update discovery description wording (home-assistant#170325) Bump teltasync to 0.3.0, fix discovery for older devices (home-assistant#169660) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Complete exception translations for Indevolt (home-assistant#170291) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Add Kiosker switch platform (home-assistant#168858) Add `ZWaveNodeBaseEntity` for Z-Wave node-level entities (home-assistant#170124) Add number platform to eurotronic_cometblue (home-assistant#168119) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
lmaertin
pushed a commit
to lmaertin/homeassistant-core
that referenced
this pull request
May 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed change
This PR introduces a
ZWaveNodeBaseEntityand migrates the existing classes to use that.That change is a small part of a refactor for node-based Z-Wave entities, suggested here: #170111 (comment)
I can add the (bigger) rest suggested in that comment to this PR, but I think it makes sense to have this initial small PR (to already create the base class and clean up the other existing classes a bit), then do the rest in one or more follow-up PRs.
AI summary (click to expand)
First step of the Z-Wave node-level entity refactor in core#170111. Introduces a shared base class for entities that exist for a Z-Wave node as a whole (rather than for a specific Z-Wave Value), and migrates the existing five node-level entities onto it.
Until now each node-level entity (firmware update, ping button, node status sensor, controller status sensor, statistics sensor) reimplemented essentially the same boilerplate independently:
_attr_should_poll = False_attr_has_entity_name = True_base_unique_id = get_valueless_base_unique_id(driver, node)_attr_device_info = get_device_info(driver, node)async_poll_valuethat just logs an errorasync_added_to_hassthat subscribes to_remove_entityand (sometimes)_remove_entity_on_interview_startedThis PR consolidates that into
ZWaveNodeBaseEntity. Subclasses opt in to the reinterview removal signal via a single class attribute (_remove_on_reinterview = True).Type of change
Additional information
Checklist
ruff format homeassistant tests)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all.To help with the load of incoming pull requests: