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

Pure codec for IO-Homecontrol 2W heating/climate functions (CMD_WRITE_PRIVATE 0x20). More...

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

Go to the source code of this file.

Namespaces

namespace  esphome
namespace  esphome::home_io_control

Enumerations

enum class  esphome::home_io_control::HeatingFunction : uint8_t {
  esphome::home_io_control::POWER_ON , esphome::home_io_control::SET_TEMPERATURE , esphome::home_io_control::SET_MODE , esphome::home_io_control::SET_PRESENCE ,
  esphome::home_io_control::SET_WINDOW , esphome::home_io_control::MIDNIGHT_SYNC
}
 Heating functions, one per user-pressable radiator button in the reference. More...
enum class  esphome::home_io_control::HeatingMode : uint8_t { esphome::home_io_control::AUTO = 0x00 , esphome::home_io_control::MANUAL = 0x01 , esphome::home_io_control::PROG = 0x02 , esphome::home_io_control::OFF = 0x04 }
 Operating modes for HeatingFunction::SET_MODE. More...

Functions

const char * esphome::home_io_control::heating_function_name (HeatingFunction fn)
 Stable lowercase name for a heating function ("power_on", "set_temperature", ...).
size_t esphome::home_io_control::encode_heating_payload (HeatingFunction fn, float value, uint8_t out[HEATING_PAYLOAD_MAX_SIZE])
 Encode one heating function into a CMD_WRITE_PRIVATE (0x20) payload.

Variables

constexpr float esphome::home_io_control::HEATING_TEMP_MIN_C = 7.0F
 Lowest setpoint this codec will encode.
constexpr float esphome::home_io_control::HEATING_TEMP_MAX_C = 28.0F
 Highest setpoint this codec will encode.
constexpr size_t esphome::home_io_control::HEATING_PAYLOAD_MAX_SIZE = 6
 Largest payload any function produces — SET_TEMPERATURE's 6-byte form (iohcCozyDevice2W.cpp:125).
constexpr uint8_t esphome::home_io_control::HEATING_PAYLOAD_PREFIX = 0x0C
 Leading payload byte, common to every function (iohcCozyDevice2W.cpp:105 et al.).
constexpr uint8_t esphome::home_io_control::HEATING_REGISTER_HIGH_BYTE = 0x01
 Payload byte at index 2 — the high byte of the 16-bit register number, constant 0x01 (registers are 0x01xx) per AtlanticThermor/README.md ("Set 0c61 01xx" / "Get 0c60 01xx").

Detailed Description

Pure codec for IO-Homecontrol 2W heating/climate functions (CMD_WRITE_PRIVATE 0x20).

Encodes the six "Cozytouch" radiator functions (Sauter / Atlantic / Thermor) into CMD_WRITE_PRIVATE (0x20) payloads. This module is pure: it does not touch a frame, a device record or the radio — proto_commands.h's create_write_private() frames the result.

Byte-layout sources: the iohomecontrol reference implementation's Cozy 2W device code — forgePacket() and the DeviceButton payload builders in its cmd() — cross-checked against the iown-homecontrol project's Atlantic/Thermor register map, which names the opcodes ("Set 0c61 01xx" / "Get 0c60 01xx") and shows the setpoint registers as 16-bit little-endian tenths of a degree. Every payload byte below is cited. No hardware is available for this family; the experimental banner lives in docs/home_io_control.md.

Definition in file proto_heating.h.