Home IO Control
ESPHome add-on for IO-Homecontrol devices
Loading...
Searching...
No Matches
esphome::home_io_control::OneWayControllerIdentity Struct Reference

One configured 1W controller identity. More...

#include <oneway_controller.h>

Collaboration diagram for esphome::home_io_control::OneWayControllerIdentity:

Public Member Functions

void broadcast_address (uint8_t out[NODE_ID_SIZE]) const
 Enrollment / typed-class destination address for this identity.

Public Attributes

std::string id
 YAML handle entities reference.
uint8_t node_id [NODE_ID_SIZE] {}
 Source address we transmit as (configured or derived).
uint8_t system_key [AES_KEY_SIZE] {}
 Network key for this identity; may differ per identity.
uint8_t manufacturer {0}
 Manufacturer ID; unused until the enrollment phase.
DeviceType io_device_type {DeviceType::UNKNOWN}
 Device class this identity commands.
uint16_t initial_sequence {0}
 Seed for this identity's rolling counter on first use.
bool node_id_derived {false}
 True when node_id was derived rather than configured.
bool enrollment_with_mac
 Whether the enroll button's 0x30 carries a MAC trailer (enrollment_with_mac:).
uint8_t execute_acei {0}
 EXECUTE ACEI override (execute_acei:).
bool execute_broadcast_all {false}
 When true (execute_broadcast: all), 1W EXECUTE frames go to the all-devices address 00 00 3F regardless of io_device_type — what a handheld cover remote of either vendor does.
std::array< DeviceType, 3 > enrollment_classes {DeviceType::UNKNOWN, DeviceType::UNKNOWN, DeviceType::UNKNOWN}
 Override for the device classes a VELUX enrollment 0x30 sweep targets (enrollment_classes:).

Detailed Description

One configured 1W controller identity.

Fixed-size key and address material; the only heap is the id handle, which mirrors how device IDs are held elsewhere in this component.

Definition at line 40 of file oneway_controller.h.

Member Function Documentation

◆ broadcast_address()

void esphome::home_io_control::OneWayControllerIdentity::broadcast_address ( uint8_t out[NODE_ID_SIZE]) const
inline

Enrollment / typed-class destination address for this identity.

1W addresses a device class, never a node. Delegates to encode_broadcast_address() (proto_codecs.h), the single place the bit layout is documented, so this and broadcast_target_type() (its decode counterpart) cannot drift apart. Note: an EXECUTE frame uses the all-devices address instead when execute_broadcast_all is set — this helper is the typed-class destination only.

Parameters
outOutput: 3-byte destination address.

Definition at line 74 of file oneway_controller.h.

Here is the call graph for this function:

Member Data Documentation

◆ enrollment_classes

std::array<DeviceType, 3> esphome::home_io_control::OneWayControllerIdentity::enrollment_classes {DeviceType::UNKNOWN, DeviceType::UNKNOWN, DeviceType::UNKNOWN}

Override for the device classes a VELUX enrollment 0x30 sweep targets (enrollment_classes:).

All-UNKNOWN (the default) means "not set — use the manufacturer profile's list" (resolve_oneway_wire_profile()). UNKNOWN entries are skipped when the sweep runs, so a one- or two-class override is expressed by leaving the rest UNKNOWN. Ignored by the Somfy enrollment gesture, which always uses io_device_type. See ADR 0032.

Definition at line 64 of file oneway_controller.h.

◆ enrollment_with_mac

bool esphome::home_io_control::OneWayControllerIdentity::enrollment_with_mac
Initial value:
{
false}

Whether the enroll button's 0x30 carries a MAC trailer (enrollment_with_mac:).

Definition at line 48 of file oneway_controller.h.

◆ execute_acei

uint8_t esphome::home_io_control::OneWayControllerIdentity::execute_acei {0}

EXECUTE ACEI override (execute_acei:).

0 = "not overridden, use resolve_oneway_wire_profile()"; any non-zero value wins. 0 is a safe sentinel: ACEI_VALID_BIT is bit 0, so a valid ACEI is always odd — the schema rejects execute_acei: 0 so this cannot be reached by mistake.

Definition at line 53 of file oneway_controller.h.

◆ execute_broadcast_all

bool esphome::home_io_control::OneWayControllerIdentity::execute_broadcast_all {false}

When true (execute_broadcast: all), 1W EXECUTE frames go to the all-devices address 00 00 3F regardless of io_device_type — what a handheld cover remote of either vendor does.

false = the typed per-class destination (current default). Not a vendor axis; see ADR 0031.

Definition at line 58 of file oneway_controller.h.

◆ id

std::string esphome::home_io_control::OneWayControllerIdentity::id

YAML handle entities reference.

Definition at line 41 of file oneway_controller.h.

◆ initial_sequence

uint16_t esphome::home_io_control::OneWayControllerIdentity::initial_sequence {0}

Seed for this identity's rolling counter on first use.

Definition at line 46 of file oneway_controller.h.

◆ io_device_type

DeviceType esphome::home_io_control::OneWayControllerIdentity::io_device_type {DeviceType::UNKNOWN}

Device class this identity commands.

Definition at line 45 of file oneway_controller.h.

◆ manufacturer

uint8_t esphome::home_io_control::OneWayControllerIdentity::manufacturer {0}

Manufacturer ID; unused until the enrollment phase.

Definition at line 44 of file oneway_controller.h.

◆ node_id

uint8_t esphome::home_io_control::OneWayControllerIdentity::node_id[NODE_ID_SIZE] {}

Source address we transmit as (configured or derived).

Definition at line 42 of file oneway_controller.h.

◆ node_id_derived

bool esphome::home_io_control::OneWayControllerIdentity::node_id_derived {false}

True when node_id was derived rather than configured.

Definition at line 47 of file oneway_controller.h.

◆ system_key

uint8_t esphome::home_io_control::OneWayControllerIdentity::system_key[AES_KEY_SIZE] {}

Network key for this identity; may differ per identity.

Definition at line 43 of file oneway_controller.h.


The documentation for this struct was generated from the following file: