|
Home IO Control
ESPHome add-on for IO-Homecontrol devices
|
Command builders for the IO-Homecontrol protocol. More...
#include "proto_commands.h"#include "proto_constants.h"#include "proto_crypto.h"#include <array>#include <cstring>Go to the source code of this file.
Namespaces | |
| namespace | esphome |
| namespace | esphome::home_io_control |
Functions | |
| bool | esphome::home_io_control::create_execute_position (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power, uint8_t position) |
| Build a position execute command (0x00) to move a device to a numeric position. | |
| bool | esphome::home_io_control::create_execute_command (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power, CoverCommand cmd) |
| Build a named-command execute frame (0x00) for STOP, FAVORITE, or VENT. | |
| bool | esphome::home_io_control::create_force_open (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power, uint8_t open_position) |
| Build a force-open execute frame (0x00): an ordinary position command to the device's wire-scale "fully open" value, sent at elevated ACEI priority (see EXECUTE_ACEI_FORCE_OPEN). | |
| bool | esphome::home_io_control::create_get_status (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a get-status request (0x03). The device responds with its current position. | |
| bool | esphome::home_io_control::create_get_name (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power) |
| Build a get-name request (0x50). | |
| bool | esphome::home_io_control::create_set_name (IoFrame &f, const uint8_t *own, const uint8_t *dst, const uint8_t payload[DEVICE_NAME_WRITE_PAYLOAD_SIZE]) |
| Build an authenticated set-name request (0x52) using a fixed zero-padded Latin-1 payload. | |
| bool | esphome::home_io_control::create_identify (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build an authenticated device-identify request (0x1E). | |
| bool | esphome::home_io_control::create_execute_tilt (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power, uint8_t tilt_percent) |
| Build a tilt execute command (0x00) for devices that support slat angle control. | |
| bool | esphome::home_io_control::create_execute_position_and_tilt (IoFrame &f, const uint8_t *own, const uint8_t *dst, bool low_power, uint8_t position, uint8_t tilt_percent) |
| Build a combined position-and-tilt execute command (0x00) — setClosureAndOrientation. | |
| bool | esphome::home_io_control::create_get_status_tilt (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a tilt-aware get-status request (0x03) that returns the extended 16-byte tilt payload. | |
| bool | esphome::home_io_control::create_discover (IoFrame &f, const uint8_t *own) |
| Build a discovery broadcast (0x28). | |
| bool | esphome::home_io_control::create_discovery_request (IoFrame &f, const uint8_t *own, uint8_t command, const uint8_t *dst, bool low_power, bool payload_enabled, uint8_t payload, const uint8_t *system_key) |
| Build a configurable discovery request command (0x28, 0x2A, or 0x2E). | |
| bool | esphome::home_io_control::create_discover_resp (IoFrame &f, const uint8_t *own, const uint8_t *dst, DeviceType type, uint8_t subtype, uint8_t manufacturer_id) |
| Build a discovery response (0x29) — device side, used only by the key-extraction responder. | |
| static bool | esphome::home_io_control::create_device_terminal_ack (IoFrame &f, const uint8_t *own, const uint8_t *dst, uint8_t cmd) |
| Build a bare device→hub terminal acknowledgement: no payload, END set, START and LOW_POWER clear. | |
| bool | esphome::home_io_control::create_key_confirm (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a key-confirm frame (0x33) — device side, used only by the key-extraction responder. | |
| bool | esphome::home_io_control::create_discover_confirm_ack (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a discovery-confirm acknowledgement (0x2D) — device side, used only by the key-extraction responder. | |
| bool | esphome::home_io_control::recover_system_key_from_transfer (const uint8_t transfer_payload[AES_KEY_SIZE], const uint8_t challenge[HMAC_SIZE], uint8_t out_key[AES_KEY_SIZE]) |
| Recover the system key from a CMD_KEY_TRANSFER payload. | |
| bool | esphome::home_io_control::create_key_init (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a key-init request (0x31) to start the pairing key exchange with a discovered device. | |
| bool | esphome::home_io_control::create_key_transfer (IoFrame &f, IoFrame &old_frame, const uint8_t *dst, const uint8_t *src, const uint8_t key[AES_KEY_SIZE], const uint8_t challenge[HMAC_SIZE]) |
| Build a key-transfer frame (0x32) containing the system key encrypted with the transfer key. | |
| static bool | esphome::home_io_control::create_challenge_req_framed (IoFrame &f, const uint8_t *dst, const uint8_t *src, const uint8_t challenge[HMAC_SIZE], bool start, bool low_power) |
| Build a challenge request (0x3C) with caller-chosen framing bits. | |
| bool | esphome::home_io_control::create_challenge_req (IoFrame &f, const uint8_t *dst, const uint8_t *src, const uint8_t challenge[HMAC_SIZE]) |
| Build a challenge request (0x3C) using a caller-supplied challenge. | |
| bool | esphome::home_io_control::create_challenge_req (IoFrame &f, const uint8_t *dst, const uint8_t *src) |
| Build a challenge request (0x3C) containing 6 random bytes. | |
| bool | esphome::home_io_control::create_challenge_req_device_role (IoFrame &f, const uint8_t *dst, const uint8_t *src, const uint8_t challenge[HMAC_SIZE]) |
| Build a device-role challenge request (0x3C) — device side, used only by the key-extraction responder. | |
| bool | esphome::home_io_control::create_challenge_resp (IoFrame &f, const uint8_t *dst, const uint8_t *src, const uint8_t challenge[HMAC_SIZE], const IoFrame &origin, const uint8_t *key) |
| Build a challenge response (0x3D) proving we know the system key. | |
| bool | esphome::home_io_control::create_status_update_resp (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a status-update acknowledgment (0x72). | |
| bool | esphome::home_io_control::create_set_config1 (IoFrame &f, const uint8_t *own, const uint8_t *dst) |
| Build a set-config command (0x6F) to tell the device to automatically send status updates when controlled by any remote (not just us). | |
Command builders for the IO-Homecontrol protocol.
Definition in file proto_commands.cpp.