|
Home IO Control
ESPHome add-on for IO-Homecontrol devices
|
Pure codec for IO-Homecontrol 2W heating/climate functions (CMD_WRITE_PRIVATE 0x20). More...
#include <cstddef>#include <cstdint>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"). | |
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.