Home IO Control
ESPHome add-on for IO-Homecontrol devices
Loading...
Searching...
No Matches
proto_heating_profiles.h File Reference

Heating profiles: what a climate card offers for each kind of heater, and how. More...

#include "proto_device_model.h"
#include "proto_heating.h"
#include "proto_sizes.h"
#include <cstddef>
#include <cstdint>
Include dependency graph for proto_heating_profiles.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  esphome::home_io_control::HeatingFp
 A functional parameter and its value. More...
struct  esphome::home_io_control::HeatingModeEntry
 One HVAC mode the card offers and the wire value that selects it. More...
struct  esphome::home_io_control::HeatingPresetEntry
 One preset the card offers. More...
struct  esphome::home_io_control::HeatingObservedState
 What a device-reported wire value shows on the card. More...
struct  esphome::home_io_control::HeatingProfileFeatures
 Companion entities and traits a profile has. More...
struct  esphome::home_io_control::HeatingProfile
 One heater kind. More...

Namespaces

namespace  esphome
namespace  esphome::home_io_control
namespace  esphome::home_io_control::heating_level
 Heating levels (low byte of the main parameter, prefix HEATING_LEVEL_MP_PREFIX).
namespace  esphome::home_io_control::heating_alias
 Setpoint aliases (low byte of the main parameter, prefix HEATING_ALIAS_MP_PREFIX).
namespace  esphome::home_io_control::heating_mode_flags
 Values of functional parameter 9 on the heating temperature interface: the active mode.
namespace  esphome::home_io_control::heating_fp16
 Values of functional parameter 16 on the heat pump: the on/off state.

Enumerations

enum class  esphome::home_io_control::HeatingControlPath : uint8_t { esphome::home_io_control::PRIVATE_REGISTERS , esphome::home_io_control::HEATING_LEVEL , esphome::home_io_control::TEMPERATURE_EXECUTE }
 How a heater is commanded and read. More...
enum class  esphome::home_io_control::HeatingHvacMode : uint8_t { esphome::home_io_control::OFF , esphome::home_io_control::HEAT , esphome::home_io_control::AUTO }
 HVAC modes a profile can offer. More...
enum class  esphome::home_io_control::HeatingPresetId : uint8_t {
  esphome::home_io_control::HOME , esphome::home_io_control::AWAY , esphome::home_io_control::COMFORT , esphome::home_io_control::ECO ,
  esphome::home_io_control::BOOST , esphome::home_io_control::CUSTOM
}
 Presets a profile can offer. CUSTOM entries carry their own name. More...
enum class  esphome::home_io_control::HeatingFpKind : uint8_t { esphome::home_io_control::NONE , esphome::home_io_control::FP9 , esphome::home_io_control::FP16 }
 Which functional parameter, if any, accompanies a TEMPERATURE_EXECUTE command. More...

Functions

const HeatingProfile * esphome::home_io_control::find_heating_profile (DeviceType type, uint8_t subtype)
 Look up the heating profile for a (type, subtype).
bool esphome::home_io_control::device_uses_heating_registers (DeviceType type, uint8_t subtype)
 Does a climate entity drive this device over the private register protocol?
bool esphome::home_io_control::device_uses_heating_levels (DeviceType type, uint8_t subtype)
 Does a climate entity drive this device with heating levels?
bool esphome::home_io_control::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?
bool esphome::home_io_control::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.
bool esphome::home_io_control::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_main_parameter()).
constexpr uint16_t esphome::home_io_control::heating_level_main_parameter (uint8_t level)
 Main parameter of a heating level, as it travels in an EXECUTE and in a status reply.
constexpr uint16_t esphome::home_io_control::heating_prefixed_main_parameter (uint8_t prefix, uint8_t low)
 Main parameter of a prefixed value (a level or an alias).
bool esphome::home_io_control::decode_heating_level (uint16_t main_parameter, uint8_t &level)
 Read a heating level out of a main parameter.
const HeatingObservedState * esphome::home_io_control::find_observed_state (const HeatingProfile &profile, uint8_t wire)
 Find what a device-reported wire value shows on the card.

Variables

static constexpr uint8_t esphome::home_io_control::HEATING_LEVEL_MP_PREFIX = 0xFC
 Main-parameter prefix byte of a heating level: the level occupies the low byte.
static constexpr uint8_t esphome::home_io_control::heating_level::OFF = 0x00
 Off.
static constexpr uint8_t esphome::home_io_control::heating_level::FROST_PROTECTION = 0x01
 Frost protection.
static constexpr uint8_t esphome::home_io_control::heating_level::ECO = 0x02
 Economy.
static constexpr uint8_t esphome::home_io_control::heating_level::COMFORT_MINUS_2 = 0x03
 Comfort, two degrees lower.
static constexpr uint8_t esphome::home_io_control::heating_level::COMFORT_MINUS_1 = 0x04
 Comfort, one degree lower.
static constexpr uint8_t esphome::home_io_control::heating_level::COMFORT = 0x05
 Comfort.
static constexpr uint8_t esphome::home_io_control::heating_level::BOOST = 0x07
 Boost.
static constexpr uint8_t esphome::home_io_control::heating_level::SECURED = 0x3F
 Secured; reported by the device, never commanded.
static constexpr uint8_t esphome::home_io_control::HEATING_ALIAS_MP_PREFIX = 0xD8
 Main-parameter prefix byte of a setpoint alias: the alias occupies the low byte.
static constexpr uint8_t esphome::home_io_control::heating_alias::COMFORT = 0x0F
 The device's comfort setpoint.
static constexpr uint8_t esphome::home_io_control::heating_alias::THERMOSTAT_ECO = 0x0E
 Heating temperature interface: the economy setpoint.
static constexpr uint8_t esphome::home_io_control::heating_alias::SECURED = 0x0A
 Heating temperature interface: the secured setpoint.
static constexpr uint8_t esphome::home_io_control::heating_alias::HEAT_PUMP_SETBACK = 0x0E
 Heat pump: the setback setpoint.
static constexpr uint8_t esphome::home_io_control::heating_alias::HEAT_PUMP_ECO = 0x12
 Heat pump: the economy setpoint.
static constexpr uint8_t esphome::home_io_control::heating_alias::HEAT_PUMP_HALTED = 0x13
 Heat pump: halted.
static constexpr uint16_t esphome::home_io_control::HEATING_OFF_MP = 0xD400
 Main parameter that means "off": the unknown-position marker, which a command uses together with a functional parameter to switch a device off.
static constexpr uint16_t esphome::home_io_control::HEATING_MP_FROM_TARGET = 0xFFFF
 Sentinel for HeatingModeEntry::main_parameter: send the entity's target temperature, encoded over the device's range, as the main parameter.
static constexpr uint8_t esphome::home_io_control::heating_mode_flags::OFF = 0x00
 Off.
static constexpr uint8_t esphome::home_io_control::heating_mode_flags::AUTO = 0x01
 The device follows its own schedule.
static constexpr uint8_t esphome::home_io_control::heating_mode_flags::MANUAL = 0x02
 The device follows the commanded setpoint.
static constexpr uint16_t esphome::home_io_control::heating_fp16::ON = 0x4000
 On: sent with a setpoint alias to select it.
static constexpr uint16_t esphome::home_io_control::heating_fp16::OFF = 0x8000
 Off: sent with HEATING_OFF_MP.
static constexpr uint16_t esphome::home_io_control::HEATING_TEMPERATURE_MP_SPAN = 51200
 Number of main-parameter steps across the encoding range (the full position scale, 0xC800).

Detailed Description

Heating profiles: what a climate card offers for each kind of heater, and how.

A profile is one row per (node type, subtype) that a climate: entity can drive. It names the control path (the private register protocol of proto_heating.h, or the standard EXECUTE with a heating level as the main parameter), the HVAC modes and presets the card shows, how each maps to a wire value in both directions, which registers a poll reads and which companion entities exist. The platform asks the profile and never branches on a device type.

The enums here are protocol-side: they carry no ESPHome type. The platform maps HeatingHvacMode and HeatingPresetId onto ESPHome's climate modes and presets.

Todo

Heating-level control of the plain electrical heater (node type 52, subtype 0) has no capture or hardware report yet. Confirm with one before calling it supported.

Every 52/1 seen is an Atlantic radiator. A non-Atlantic 52/1 would need the heating-level path instead; the profile keys on (type, subtype) only.

Definition in file proto_heating_profiles.h.