feat: Add full CHOICE.All device support#8
Merged
Conversation
Add proper support for Blanco CHOICE.All devices (dev_type=2) with new sensors, settings, and controls. This addresses issue Nailik#6 where CHOICE.All devices connect but return limited data. New features: - Heating Temperature control (60-100°C select entity) - Boiler Temperature sensors (temp_boil_1, temp_boil_2) - Cooling Compartment Temperature sensor - Main/Connection Controller Status sensors - Heating Setpoint sensor - Hot Water Calibration sensor - Medium/Classic Carbonation Ratio sensors Changes: - client.py: Add set_heating_temperature(), parse CHOICE.All fields - coordinator.py: Add set_heating_temperature() with validation - data.py: Add CHOICE.All fields to Settings and Status dataclasses - select.py: Add HeatingTemperatureSelect (60-100°C) - sensor.py: Add 9 new CHOICE.All sensors - translations/en.json: Add translations for all new entities All new fields have defaults for backwards compatibility with drink.soda devices. Tested on real CHOICE.All hardware with HA 2026.1.3.
Nailik
reviewed
Jan 27, 2026
Nailik
reviewed
Jan 27, 2026
Nailik
reviewed
Jan 27, 2026
- Add entity_registry_visible_default to hide CHOICE.All entities on drink.soda - Restore DeviceTypeSensor and DeviceIdSensor - Update test for split temperature params classes - Add translations for device_type and device_id sensors
Contributor
Author
|
Thanks for the review! I've addressed all feedback in the latest commit:
Ready for another look when you have time. |
Decode main_controller_status bitmask into meaningful binary sensors: - Heater Active (bit 13/0x2000): Boiler heater element is running - Compressor Active (bit 14/0x4000): Cooling compressor is running Analysis of real device data shows: - Bit 14 correlates with cooling cycles (~15 min intervals) - Bit 13 correlates with heating cycles (~40 min intervals) - Both bits are never set simultaneously (load management) Hidden by default on drink.soda devices (only visible for CHOICE.All).
The temp_comp field measures the compressor/condenser temperature (hot side), not the cold water compartment. It idles at ~32-34°C and spikes to ~52-55°C when the compressor runs. Changed icon from snowflake-thermometer to heat-wave to reflect this.
Owner
|
I decided it's better to not add the entities at all if device_type = 1. |
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.
Summary
Add proper support for Blanco CHOICE.All devices (dev_type=2) with new sensors, settings, and controls. This addresses issue #6 where CHOICE.All devices connect but return limited data.
Based on version 0.0.6 with your improved connection timeout and device type detection.
New Entities
Control (Select):
Sensors (Status):
Sensors (Settings/Diagnostic):
Files Changed
client.pyset_heating_temperature(), parse CHOICE.All fields from settings/status responsescoordinator.pyset_heating_temperature()with validationdata.pyBlancoUnitSettingsandBlancoUnitStatusdataclassesselect.pyHeatingTemperatureSelect(60-100°C range)sensor.pytranslations/en.jsonBackwards Compatibility
All new fields have defaults (0, 0.0) so drink.soda devices continue to work without changes. The HeatingTemperatureSelect only shows as available when
set_point_heating > 0.Testing
Test plan