Conversation
added 3 commits
June 11, 2026 20:39
get_device_hvac_mode() raised ValueError('None is not a valid HVACMode')
when the device's raw 'Mode' value (e.g. '3') is not present in the
product's hvac_modes reverse mapping. This left climate.<device> stuck
in 'off' and prevented any writes (set_temperature, set_hvac_mode).
Fall back to HVACMode.HEAT for unmapped mode values - appropriate for
water-heater-only devices (Cairox R-AQUA HPB R290 / PHNIX HPB-S 300A)
that only support off/heat.
…82837760)
- Register product_id 1726502484782837760 in PRODUCT_IDS so the
per-product mapping file gets loaded (set_device() otherwise falls
back to 'default').
- Add parameters/mapping.1726502484782837760.json:
- mode/power pc keys 'Mode'/'Power' (matches default, kept explicit)
- target/current temperature mapped to R01 (Cooling set / target
setpoint) and T03 (Outlet water Temp) per device diagnostics
- heat-only hvac_modes (off/heat) with set='3' matching the device's
observed Mode value, min/max heat = R10/R11
- This is the heat-only counterpart to mapping.1245226668902080512.json
but uses this device's actual Mode/Power field names instead of
mode_real/MO6.
…R290 max_temp=0) The Cairox R-AQUA HPB R290 (HPB-S 300A, product_id 1726502484782837760) reports 'Max heat [R11]' as 0 on the device. get_device_maximum_temperature() then returned 0, causing the climate entity's max_temp to be 0 and rejecting any set_temperature call (e.g. 'Provided temperature 50.0 is not valid. Accepted range is 25.0 to 0.0.'). Adds PRODUCT_TEMPERATURE_OVERRIDES in consts.py: a per-product_id map of fallback min/max temperatures, applied only when the device-reported value is missing or <= 0. For this product, maximum is overridden to 60.0. Also adds AquaTempConfigManager.get_product_id() helper.
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds support for the Cairox R-AQUA HPB R290 (HPB-S 300A), product_id
1726502484782837760 (PHNIX/Hitemp OEM, water-heater only).
This product:
mapping, causing get_device_hvac_mode() to crash with
"ValueError: None is not a valid HVACMode".
max_temp invalid and rejected all set_temperature calls.
Changes:
instead of raising when the device mode value isn't in the
hvac_modes mapping. Relevant for water-heater-only devices.
for this product (mode/power = Mode/Power, target = R01,
current_temperature = T03, hvac_modes = off/heat only).
min/max temperature, applied only when the device-reported R10/R11
is missing or <= 0. For this product, maximum is overridden to 60.0.
Tested on a live device: reading (161 entities), HVAC mode reporting,
and climate.set_temperature all work correctly after these changes.