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

Controller identities for the one-way (1W) protocol. More...

#include "proto_codecs.h"
#include "proto_constants.h"
#include "proto_device_model.h"
#include "proto_sizes.h"
#include <array>
#include <cstdint>
#include <string>
#include <vector>
Include dependency graph for oneway_controller.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::OneWayControllerIdentity
 One configured 1W controller identity. More...
struct  esphome::home_io_control::OneWayWireProfile
 Vendor-divergent 1W wire settings for a controller identity. More...
struct  esphome::home_io_control::OneWayActionEncoding
 How a OneWayButtonAction reaches the wire. More...
class  esphome::home_io_control::OneWayControllerRegistry
 The configured 1W controller identities, in YAML declaration order. More...

Namespaces

namespace  esphome
namespace  esphome::home_io_control

Enumerations

enum class  esphome::home_io_control::EnrollGesture : uint8_t { esphome::home_io_control::SOMFY , esphome::home_io_control::VELUX_KLI }
 Which 1W enrollment gesture a manufacturer's actuators expect. More...
enum class  esphome::home_io_control::OneWayButtonAction : uint8_t {
  esphome::home_io_control::OneWayButtonAction::OPEN , esphome::home_io_control::OneWayButtonAction::CLOSE , esphome::home_io_control::OneWayButtonAction::STOP , esphome::home_io_control::OneWayButtonAction::VENT ,
  esphome::home_io_control::OneWayButtonAction::FAVORITE
}
 The command a generated 1W button sends. More...

Functions

OneWayWireProfile esphome::home_io_control::resolve_oneway_wire_profile (uint8_t manufacturer)
 Resolve an identity's 1W wire profile from its manufacturer byte.
std::array< DeviceType, 3 > esphome::home_io_control::effective_enrollment_classes (const OneWayControllerIdentity &identity)
 The device classes this identity's 0x30 enrollment sweep will actually target.
uint8_t esphome::home_io_control::effective_execute_acei (const OneWayControllerIdentity &identity)
 The ACEI byte a given identity will put on air for a 1W EXECUTE frame.
bool esphome::home_io_control::has_execute_acei_override (const OneWayControllerIdentity &identity)
 Whether this identity's ACEI comes from an explicit execute_acei: rather than the profile.
OneWayActionEncoding esphome::home_io_control::encode_oneway_action (OneWayButtonAction action)
 Resolve a button action to the call that sends it.
const char * esphome::home_io_control::oneway_button_action_name (OneWayButtonAction action)
 Human-readable name for a button action, as it appears in the diagnostic sensor.

Variables

static constexpr std::array< DeviceType, 3 > esphome::home_io_control::VELUX_KLI_ENROLLMENT_CLASSES
 The three device classes a real VELUX KLI PROG gesture sweeps its 0x30 across — roller shutter, awning, dual shutter — and never any other (issue #74 capture, decoded with broadcast_target_type(); matches samr037/iohc-flipper's PAIR_DST_{WINDOW,SHUTTER,OTHER}).
static constexpr uint8_t esphome::home_io_control::ONEWAY_POSITION_FULLY_OPEN = 0
 Wire-scale position meaning "fully closed" (0 means fully open).
static constexpr uint8_t esphome::home_io_control::ONEWAY_POSITION_FULLY_CLOSED = 100

Detailed Description

Controller identities for the one-way (1W) protocol.

1W frames are class-addressed: a command goes to a typed broadcast address (io_device_type << 6) | 0x3F, not to an individual device. Nothing on the wire names a device, so a 1W entity has no node address to bind to. What distinguishes one 1W control surface from another is the controller doing the transmitting — its source address, its network key, and the device class it speaks to. That triple is a controller identity, and it takes the place node addressing has for 2W. See ADR 0027.

A hub holds several, deliberately: adopting a foreign 1W network's key (see oneway_key_adoption.cpp) produces an identity whose key is not the hub's own, and it must coexist with identities on the hub's own network rather than replace them.

Note
Ownership. These identities belong to the OneWayTransmitter collaborator (oneway_transmitter.h), held by value in the hub, which keeps only the wiring (ADR 0004). This header owns the types; it does not own an instance of them.

Definition in file oneway_controller.h.