60static constexpr uint8_t
OFF = 0x00;
62static constexpr uint8_t
ECO = 0x02;
66static constexpr uint8_t
BOOST = 0x07;
96static constexpr uint8_t
OFF = 0x00;
97static constexpr uint8_t
AUTO = 0x01;
98static constexpr uint8_t
MANUAL = 0x02;
107static constexpr uint16_t
ON = 0x4000;
108static constexpr uint16_t
OFF = 0x8000;
249 return static_cast<uint16_t
>((prefix << BITS_PER_BYTE) | low);
262const HeatingObservedState *
find_observed_state(
const HeatingProfile &profile, uint8_t wire);
Setpoint aliases (low byte of the main parameter, prefix HEATING_ALIAS_MP_PREFIX).
static constexpr uint8_t HEAT_PUMP_HALTED
Heat pump: halted.
static constexpr uint8_t COMFORT
The device's comfort setpoint.
static constexpr uint8_t HEAT_PUMP_ECO
Heat pump: the economy setpoint.
static constexpr uint8_t HEAT_PUMP_SETBACK
Heat pump: the setback setpoint.
static constexpr uint8_t THERMOSTAT_ECO
Heating temperature interface: the economy setpoint.
static constexpr uint8_t SECURED
Heating temperature interface: the secured setpoint.
Values of functional parameter 16 on the heat pump: the on/off state.
static constexpr uint16_t ON
On: sent with a setpoint alias to select it.
static constexpr uint16_t OFF
Off: sent with HEATING_OFF_MP.
Heating levels (low byte of the main parameter, prefix HEATING_LEVEL_MP_PREFIX).
static constexpr uint8_t COMFORT_MINUS_2
Comfort, two degrees lower.
static constexpr uint8_t OFF
Off.
static constexpr uint8_t BOOST
Boost.
static constexpr uint8_t COMFORT
Comfort.
static constexpr uint8_t FROST_PROTECTION
Frost protection.
static constexpr uint8_t SECURED
Secured; reported by the device, never commanded.
static constexpr uint8_t COMFORT_MINUS_1
Comfort, one degree lower.
static constexpr uint8_t ECO
Economy.
Values of functional parameter 9 on the heating temperature interface: the active mode.
static constexpr uint8_t OFF
Off.
static constexpr uint8_t AUTO
The device follows its own schedule.
static constexpr uint8_t MANUAL
The device follows the commanded setpoint.
static constexpr uint8_t HEATING_LEVEL_MP_PREFIX
Main-parameter prefix byte of a heating level: the level occupies the low byte.
const HeatingObservedState * find_observed_state(const HeatingProfile &profile, uint8_t wire)
Find what a device-reported wire value shows on the card.
bool encode_temperature_main_parameter(float celsius, float min_c, float max_c, uint16_t &main_parameter)
Encode a temperature as a main parameter over an encoding range.
HeatingFpKind
Which functional parameter, if any, accompanies a TEMPERATURE_EXECUTE command.
@ FP9
Functional parameter 9, one byte.
@ FP16
Functional parameter 16, two bytes.
@ NONE
A main-parameter-only command.
HeatingFunction
Registers and functions of a 2W heater, one row of the descriptor table each.
const HeatingProfile * find_heating_profile(DeviceType type, uint8_t subtype)
Look up the heating profile for a (type, subtype).
bool decode_temperature_main_parameter(uint16_t main_parameter, float min_c, float max_c, float &celsius)
Decode a main parameter as a temperature over an encoding range (the inverse of encode_temperature_ma...
HeatingPresetId
Presets a profile can offer. CUSTOM entries carry their own name.
@ HOME
Someone is in the room.
@ CUSTOM
Named by HeatingPresetEntry::custom_name.
@ AWAY
Nobody is in the room (the frost-protection level on a level heater).
constexpr uint16_t heating_level_main_parameter(uint8_t level)
Main parameter of a heating level, as it travels in an EXECUTE and in a status reply.
DeviceType
IO-Homecontrol node types.
HeatingControlPath
How a heater is commanded and read.
@ TEMPERATURE_EXECUTE
Standard EXECUTE with a temperature or an alias as the main parameter; read with 0x03.
@ PRIVATE_REGISTERS
CMD_WRITE_PRIVATE register reads and writes (proto_heating.h).
@ HEATING_LEVEL
Standard EXECUTE with a heating level as the main parameter; read with 0x03.
static constexpr uint8_t HEATING_ALIAS_MP_PREFIX
Main-parameter prefix byte of a setpoint alias: the alias occupies the low byte.
static constexpr uint16_t HEATING_TEMPERATURE_MP_SPAN
Number of main-parameter steps across the encoding range (the full position scale,...
static constexpr uint16_t HEATING_OFF_MP
Main parameter that means "off": the unknown-position marker, which a command uses together with a fu...
bool device_uses_heating_levels(DeviceType type, uint8_t subtype)
Does a climate entity drive this device with heating levels?
bool decode_heating_level(uint16_t main_parameter, uint8_t &level)
Read a heating level out of a main parameter.
static constexpr uint16_t HEATING_MP_FROM_TARGET
Sentinel for HeatingModeEntry::main_parameter: send the entity's target temperature,...
bool device_uses_heating_registers(DeviceType type, uint8_t subtype)
Does a climate entity drive this device over the private register protocol?
bool device_uses_heating_temperature(DeviceType type, uint8_t subtype)
Does a climate entity drive this device with a temperature or an alias in the main parameter?
constexpr uint16_t heating_prefixed_main_parameter(uint8_t prefix, uint8_t low)
Main parameter of a prefixed value (a level or an alias).
HeatingHvacMode
HVAC modes a profile can offer.
IO-Homecontrol device-type model, capabilities and runtime device state.
Pure codec for the private register protocol of 2W heaters (CMD_WRITE_PRIVATE 0x20).
Fundamental IO-Homecontrol frame and crypto size constants.
A functional parameter and its value.
uint16_t value
Its value (one byte for FP9, two for FP16).
HeatingFpKind kind
Which parameter; NONE sends none.
One HVAC mode the card offers and the wire value that selects it.
HeatingFp fp
TEMPERATURE_EXECUTE: the functional parameter the mode sends.
uint16_t main_parameter
TEMPERATURE_EXECUTE: the main parameter the mode sends, or HEATING_MP_FROM_TARGET.
HeatingHvacMode hvac
Mode shown on the card.
uint8_t wire
PRIVATE_REGISTERS: mode register value.
What a device-reported wire value shows on the card.
uint8_t wire
Mode register value, or level low byte, as the device reports it.
int8_t preset
Index into the profile's presets shown with it, or -1 for none.
HeatingHvacMode hvac
HVAC mode shown.
One preset the card offers.
const char * custom_name
Name of a CUSTOM preset; nullptr otherwise.
HeatingFp fp
TEMPERATURE_EXECUTE: the functional parameter sent with the alias.
uint8_t wire
Value written: register value, or the low byte of a level or alias.
bool observed
False when no register reports it back (presence): the card then shows the last command.
HeatingPresetId id
Standard preset, or CUSTOM.
HeatingFunction write_fn
PRIVATE_REGISTERS: register the preset writes. Unused for levels.
bool commandable
False for a preset the device only reports (secured).
Companion entities and traits a profile has.
bool mode_observed
A device reading decides the card's mode; false when the mode is the last command (nothing reads it b...
bool target_temperature
The card has a setpoint.
bool open_window_detection
An open-window-detection switch exists (0x0106).
bool window_sensor
A Window binary sensor exists (0x010E).
bool action
The card shows heating / idle.
bool current_temperature
The card shows a measured temperature.
HeatingProfileFeatures features
What the card and its companions offer.
bool fixed_range
TEMPERATURE_EXECUTE: the temperature range is fixed, so the YAML min_temperature: / max_temperature: ...
const HeatingModeEntry * modes
HVAC modes offered, with the value each writes.
uint8_t mp_prefix
High byte of a level or alias main parameter (0 for registers).
const HeatingFunction * boot_registers
PRIVATE_REGISTERS: registers read once until they have been read.
const HeatingObservedState * observed
Device-reported value -> card state.
size_t boot_register_count
Number of entries in boot_registers.
const HeatingFunction * poll_registers
PRIVATE_REGISTERS: registers every poll reads, in order.
DeviceType type
Node type.
size_t poll_register_count
Number of entries in poll_registers.
HeatingControlPath path
How the heater is commanded and read.
float visual_max_c
Highest target temperature the card offers (0 without a setpoint).
uint8_t subtype
Subtype (0 = the type's own row).
float visual_min_c
Lowest target temperature the card offers (0 without a setpoint).
size_t observed_count
Number of entries in observed.
size_t mode_count
Number of entries in modes.
const HeatingPresetEntry * presets
Presets offered.
size_t preset_count
Number of entries in presets.
HeatingFp setpoint_fp
TEMPERATURE_EXECUTE: the functional parameter sent with a setpoint.