Clean up unused vehicle distance derivatives

This commit is contained in:
2026-05-21 19:56:52 +00:00
parent a32b903c9c
commit 975d8c0b90
14 changed files with 1 additions and 321 deletions
-19
View File
@@ -2,7 +2,6 @@ from dataclasses import dataclass
from esphome import automation, pins from esphome import automation, pins
import esphome.codegen as cg import esphome.codegen as cg
from esphome.components import binary_sensor
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_TRIGGER_ID from esphome.const import CONF_ID, CONF_TRIGGER_ID
from esphome.core import CORE from esphome.core import CORE
@@ -25,9 +24,6 @@ class RATGDOData:
door_state: int = 0 door_state: int = 0
door_action_delayed: int = 0 door_action_delayed: int = 0
distance: int = 0 distance: int = 0
vehicle_detected: int = 0
vehicle_arriving: int = 0
vehicle_leaving: int = 0
def _get_data() -> RATGDOData: def _get_data() -> RATGDOData:
@@ -48,18 +44,6 @@ def subscribe_distance() -> None:
_get_data().distance += 1 _get_data().distance += 1
def subscribe_vehicle_detected() -> None:
_get_data().vehicle_detected += 1
def subscribe_vehicle_arriving() -> None:
_get_data().vehicle_arriving += 1
def subscribe_vehicle_leaving() -> None:
_get_data().vehicle_leaving += 1
@coroutine_with_priority(CoroPriority.FINAL) @coroutine_with_priority(CoroPriority.FINAL)
async def _emit_subscriber_defines(): async def _emit_subscriber_defines():
"""Emit observable subscriber count defines after all children have registered.""" """Emit observable subscriber count defines after all children have registered."""
@@ -69,9 +53,6 @@ async def _emit_subscriber_defines():
"RATGDO_MAX_DOOR_ACTION_DELAYED_SUBSCRIBERS", data.door_action_delayed "RATGDO_MAX_DOOR_ACTION_DELAYED_SUBSCRIBERS", data.door_action_delayed
) )
cg.add_define("RATGDO_MAX_DISTANCE_SUBSCRIBERS", data.distance) cg.add_define("RATGDO_MAX_DISTANCE_SUBSCRIBERS", data.distance)
cg.add_define("RATGDO_MAX_VEHICLE_DETECTED_SUBSCRIBERS", data.vehicle_detected)
cg.add_define("RATGDO_MAX_VEHICLE_ARRIVING_SUBSCRIBERS", data.vehicle_arriving)
cg.add_define("RATGDO_MAX_VEHICLE_LEAVING_SUBSCRIBERS", data.vehicle_leaving)
SyncFailed = ratgdo_ns.class_("SyncFailed", automation.Trigger.template()) SyncFailed = ratgdo_ns.class_("SyncFailed", automation.Trigger.template())
@@ -16,7 +16,6 @@ void RATGDOBinarySensor::setup()
case SensorType::RATGDO_SENSOR_VEHICLE_DETECTED: case SensorType::RATGDO_SENSOR_VEHICLE_DETECTED:
this->parent_->subscribe_vehicle_detected_state([this](VehicleDetectedState state) { this->parent_->subscribe_vehicle_detected_state([this](VehicleDetectedState state) {
this->publish_state(state == VehicleDetectedState::YES); this->publish_state(state == VehicleDetectedState::YES);
this->parent_->presence_change(state == VehicleDetectedState::YES);
}); });
break; break;
case SensorType::RATGDO_SENSOR_VEHICLE_ARRIVING: case SensorType::RATGDO_SENSOR_VEHICLE_ARRIVING:
-2
View File
@@ -8,7 +8,6 @@ from .. import (
ratgdo_ns, ratgdo_ns,
register_ratgdo_child, register_ratgdo_child,
subscribe_door_action_delayed, subscribe_door_action_delayed,
subscribe_vehicle_arriving,
) )
CONF_RTTTL = "rtttl" CONF_RTTTL = "rtttl"
@@ -39,5 +38,4 @@ async def to_code(config):
cg.add(var.set_rtttl(rtttl)) cg.add(var.set_rtttl(rtttl))
cg.add(var.set_song(config[CONF_SONG])) cg.add(var.set_song(config[CONF_SONG]))
await register_ratgdo_child(var, config) await register_ratgdo_child(var, config)
subscribe_vehicle_arriving()
subscribe_door_action_delayed() subscribe_door_action_delayed()
@@ -13,14 +13,6 @@ void RATGDOOutput::setup()
if (this->output_type_ == OutputType::RATGDO_BEEPER) { if (this->output_type_ == OutputType::RATGDO_BEEPER) {
this->beeper_->add_on_finished_playback_callback([this] { this->finished_playback(); }); this->beeper_->add_on_finished_playback_callback([this] { this->finished_playback(); });
#ifdef RATGDO_USE_VEHICLE_SENSORS
this->parent_->subscribe_vehicle_arriving_state([this](VehicleArrivingState state) {
if (state == VehicleArrivingState::YES) {
this->play();
}
});
#endif
this->parent_->subscribe_door_action_delayed([this](DoorActionDelayed state) { this->parent_->subscribe_door_action_delayed([this](DoorActionDelayed state) {
if (state == DoorActionDelayed::YES) { if (state == DoorActionDelayed::YES) {
this->play(); this->play();
-38
View File
@@ -16,42 +16,6 @@ class RATGDOComponent;
namespace protocol { namespace protocol {
const uint32_t HAS_DOOR_OPEN = 1 << 0; // has idempotent open door command
const uint32_t HAS_DOOR_CLOSE = 1 << 1; // has idempotent close door command
const uint32_t HAS_DOOR_STOP = 1 << 2; // has idempotent stop door command
const uint32_t HAS_DOOR_STATUS = 1 << 3;
const uint32_t HAS_LIGHT_TOGGLE = 1 << 10; // some protocols might not support this
const uint32_t HAS_LOCK_TOGGLE = 1 << 20;
class Traits {
uint32_t value;
public:
Traits()
: value(0)
{
}
bool has_door_open() const { return this->value & HAS_DOOR_OPEN; }
bool has_door_close() const { return this->value & HAS_DOOR_CLOSE; }
bool has_door_stop() const { return this->value & HAS_DOOR_STOP; }
bool has_door_status() const { return this->value & HAS_DOOR_STATUS; }
bool has_light_toggle() const { return this->value & HAS_LIGHT_TOGGLE; }
bool has_lock_toggle() const { return this->value & HAS_LOCK_TOGGLE; }
void set_features(uint32_t feature) { this->value |= feature; }
void clear_features(uint32_t feature) { this->value &= ~feature; }
static uint32_t all()
{
return HAS_DOOR_CLOSE | HAS_DOOR_OPEN | HAS_DOOR_STOP | HAS_DOOR_STATUS | HAS_LIGHT_TOGGLE | HAS_LOCK_TOGGLE;
}
};
struct SetRollingCodeCounter { struct SetRollingCodeCounter {
uint32_t counter; uint32_t counter;
}; };
@@ -90,8 +54,6 @@ namespace protocol {
virtual void sync(); virtual void sync();
virtual const Traits& traits() const;
virtual void light_action(LightAction action); virtual void light_action(LightAction action);
virtual void lock_action(LockAction action); virtual void lock_action(LockAction action);
virtual void door_action(DoorAction action); virtual void door_action(DoorAction action);
-89
View File
@@ -41,19 +41,6 @@ void log_subscriber_overflow(const LogString* observable_name, uint32_t max)
LOG_STR_ARG(observable_name), (int)max); LOG_STR_ARG(observable_name), (int)max);
} }
#ifdef RATGDO_USE_VEHICLE_SENSORS
static constexpr int CLEAR_PRESENCE = 60000; // how long to keep arriving/leaving active
static constexpr int PRESENCE_DETECT_WINDOW = 300000; // how long to calculate presence after door state change
static constexpr int PRESENCE_DETECT_WINDOW_AFTER_CLOSE = 15000; // how long to keep presence window active after door reaches closed
// increasing these values increases reliability but also increases detection
// time
static constexpr int PRESENCE_DETECTION_ON_THRESHOLD = 5; // Minimum percentage of valid bitset::in_range samples required to
// detect vehicle
static constexpr int PRESENCE_DETECTION_OFF_DEBOUNCE = 2; // The number of consecutive bitset::in_range iterations that must be 0
// before clearing vehicle detected state
#endif
void RATGDOComponent::setup() void RATGDOComponent::setup()
{ {
this->output_gdo_pin_->setup(); this->output_gdo_pin_->setup();
@@ -288,70 +275,6 @@ void RATGDOComponent::set_target_distance_measurement(int16_t distance)
void RATGDOComponent::set_distance_measurement(int16_t distance) void RATGDOComponent::set_distance_measurement(int16_t distance)
{ {
this->last_distance_measurement = distance; this->last_distance_measurement = distance;
#ifdef RATGDO_USE_VEHICLE_SENSORS
this->in_range <<= 1;
this->in_range.set(0, distance <= *this->target_distance_measurement);
this->calculate_presence();
#endif
}
#endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
void RATGDOComponent::calculate_presence()
{
int percent = this->in_range.count() * 100 / this->in_range.size();
if (percent >= PRESENCE_DETECTION_ON_THRESHOLD)
this->vehicle_detected_state = VehicleDetectedState::YES;
if (percent == 0 && *this->vehicle_detected_state == VehicleDetectedState::YES) {
this->presence_off_counter_++;
ESP_LOGD(TAG, "Off counter: %d", this->presence_off_counter_);
if (this->presence_off_counter_ / this->in_range.size() >= PRESENCE_DETECTION_OFF_DEBOUNCE) {
this->presence_off_counter_ = 0;
this->vehicle_detected_state = VehicleDetectedState::NO;
}
}
if (percent != this->last_presence_percent_) {
ESP_LOGD(TAG, "pct_in_range: %d", percent);
this->last_presence_percent_ = percent;
this->presence_off_counter_ = 0;
}
// ESP_LOGD(TAG, "in_range: %s", this->in_range.to_string().c_str());
}
#endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
void RATGDOComponent::presence_change(bool sensor_value)
{
if (this->flags_.presence_detect_window_active) {
// Arriving and leaving are mutually exclusive — each branch clears the
// other state. Sharing TIMEOUT_CLEAR_PRESENCE ensures that switching from
// arriving to leaving (or vice versa) cancels the previous clear timeout,
// which is correct since the previous state was already cleared above.
if (sensor_value) {
this->vehicle_arriving_state = VehicleArrivingState::YES;
this->vehicle_leaving_state = VehicleLeavingState::NO;
this->set_timeout(TIMEOUT_CLEAR_PRESENCE, CLEAR_PRESENCE, [this] {
this->vehicle_arriving_state = VehicleArrivingState::NO;
});
} else {
this->vehicle_arriving_state = VehicleArrivingState::NO;
this->vehicle_leaving_state = VehicleLeavingState::YES;
this->set_timeout(TIMEOUT_CLEAR_PRESENCE, CLEAR_PRESENCE, [this] {
this->vehicle_leaving_state = VehicleLeavingState::NO;
});
}
// if the door is closed, clear the presence detect window since a vehicle
// can't be arriving or leaving with the door shut
if (*this->door_state == DoorState::CLOSED) {
this->flags_.presence_detect_window_active = false;
this->cancel_timeout(TIMEOUT_PRESENCE_DETECT_WINDOW);
}
}
} }
#endif #endif
@@ -530,12 +453,6 @@ void RATGDOComponent::light_off()
this->protocol_->light_action(LightAction::OFF); this->protocol_->light_action(LightAction::OFF);
} }
void RATGDOComponent::light_toggle()
{
this->light_state = light_state_toggle(*this->light_state);
this->protocol_->light_action(LightAction::TOGGLE);
}
LightState RATGDOComponent::get_light_state() const LightState RATGDOComponent::get_light_state() const
{ {
return *this->light_state; return *this->light_state;
@@ -554,12 +471,6 @@ void RATGDOComponent::unlock()
this->protocol_->lock_action(LockAction::UNLOCK); this->protocol_->lock_action(LockAction::UNLOCK);
} }
void RATGDOComponent::lock_toggle()
{
this->lock_state = lock_state_toggle(*this->lock_state);
this->protocol_->lock_action(LockAction::TOGGLE);
}
// Subscribe implementations are now templates in ratgdo.h // Subscribe implementations are now templates in ratgdo.h
} // namespace esphome::ratgdo } // namespace esphome::ratgdo
+1 -89
View File
@@ -13,7 +13,6 @@
#pragma once #pragma once
#include "esphome/components/binary_sensor/binary_sensor.h"
#include "esphome/core/component.h" #include "esphome/core/component.h"
#include "esphome/core/defines.h" #include "esphome/core/defines.h"
#include "esphome/core/hal.h" #include "esphome/core/hal.h"
@@ -40,15 +39,6 @@
#ifndef RATGDO_MAX_DISTANCE_SUBSCRIBERS #ifndef RATGDO_MAX_DISTANCE_SUBSCRIBERS
#error "RATGDO_MAX_DISTANCE_SUBSCRIBERS must be defined by codegen" #error "RATGDO_MAX_DISTANCE_SUBSCRIBERS must be defined by codegen"
#endif #endif
#ifndef RATGDO_MAX_VEHICLE_DETECTED_SUBSCRIBERS
#error "RATGDO_MAX_VEHICLE_DETECTED_SUBSCRIBERS must be defined by codegen"
#endif
#ifndef RATGDO_MAX_VEHICLE_ARRIVING_SUBSCRIBERS
#error "RATGDO_MAX_VEHICLE_ARRIVING_SUBSCRIBERS must be defined by codegen"
#endif
#ifndef RATGDO_MAX_VEHICLE_LEAVING_SUBSCRIBERS
#error "RATGDO_MAX_VEHICLE_LEAVING_SUBSCRIBERS must be defined by codegen"
#endif
namespace esphome { namespace esphome {
class InternalGPIOPin; class InternalGPIOPin;
@@ -105,11 +95,6 @@ public:
single_observable<LightState> light_state { LightState::UNKNOWN }; single_observable<LightState> light_state { LightState::UNKNOWN };
single_observable<LockState> lock_state { LockState::UNKNOWN }; single_observable<LockState> lock_state { LockState::UNKNOWN };
#ifdef RATGDO_USE_VEHICLE_SENSORS
observable<VehicleDetectedState, RATGDO_MAX_VEHICLE_DETECTED_SUBSCRIBERS> vehicle_detected_state { VehicleDetectedState::NO };
observable<VehicleArrivingState, RATGDO_MAX_VEHICLE_ARRIVING_SUBSCRIBERS> vehicle_arriving_state { VehicleArrivingState::NO };
observable<VehicleLeavingState, RATGDO_MAX_VEHICLE_LEAVING_SUBSCRIBERS> vehicle_leaving_state { VehicleLeavingState::NO };
#endif
OnceCallbacks<void(DoorState)> on_door_state_; OnceCallbacks<void(DoorState)> on_door_state_;
@@ -147,19 +132,13 @@ public:
void set_target_distance_measurement(int16_t distance); void set_target_distance_measurement(int16_t distance);
void set_distance_measurement(int16_t distance); void set_distance_measurement(int16_t distance);
#endif #endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
void calculate_presence();
void presence_change(bool sensor_value);
#endif
// light // light
void light_toggle();
void light_on(); void light_on();
void light_off(); void light_off();
LightState get_light_state() const; LightState get_light_state() const;
// lock // lock
void lock_toggle();
void lock(); void lock();
void unlock(); void unlock();
@@ -239,14 +218,6 @@ public:
template <typename F> template <typename F>
void subscribe_distance_measurement(F&& f); void subscribe_distance_measurement(F&& f);
#endif #endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
template <typename F>
void subscribe_vehicle_detected_state(F&& f);
template <typename F>
void subscribe_vehicle_arriving_state(F&& f);
template <typename F>
void subscribe_vehicle_leaving_state(F&& f);
#endif
protected: protected:
// Pointers first (4-byte aligned) // Pointers first (4-byte aligned)
@@ -256,12 +227,7 @@ protected:
// Bool members packed into bitfield // Bool members packed into bitfield
struct { struct {
#ifdef RATGDO_USE_VEHICLE_SENSORS
uint8_t presence_detect_window_active : 1;
uint8_t reserved : 7; // Reserved for future use
#else
uint8_t reserved : 8; // Reserved for future use uint8_t reserved : 8; // Reserved for future use
#endif
} flags_ { 0 }; } flags_ { 0 };
// Subscriber counters for defer name allocation // Subscriber counters for defer name allocation
@@ -270,14 +236,6 @@ protected:
#ifdef RATGDO_USE_DISTANCE_SENSOR #ifdef RATGDO_USE_DISTANCE_SENSOR
uint8_t distance_sub_num_ { 0 }; uint8_t distance_sub_num_ { 0 };
#endif #endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
uint8_t vehicle_detected_sub_num_ { 0 };
uint8_t vehicle_arriving_sub_num_ { 0 };
uint8_t vehicle_leaving_sub_num_ { 0 };
int last_presence_percent_ { -1 };
int presence_off_counter_ { 0 };
DoorState last_door_state_for_presence_ { DoorState::UNKNOWN };
#endif
}; // RATGDOComponent }; // RATGDOComponent
void log_subscriber_overflow(const LogString* observable_name, uint32_t max); void log_subscriber_overflow(const LogString* observable_name, uint32_t max);
@@ -315,21 +273,9 @@ namespace scheduler_ids {
inline constexpr uint32_t DEFER_DISTANCE_END = DEFER_DOOR_ACTION_DELAYED_BASE + DEFER_DOOR_ACTION_DELAYED_COUNT; inline constexpr uint32_t DEFER_DISTANCE_END = DEFER_DOOR_ACTION_DELAYED_BASE + DEFER_DOOR_ACTION_DELAYED_COUNT;
#endif #endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
inline constexpr uint32_t DEFER_VEHICLE_DETECTED_COUNT = RATGDO_MAX_VEHICLE_DETECTED_SUBSCRIBERS;
inline constexpr uint32_t DEFER_VEHICLE_DETECTED_BASE = DEFER_DISTANCE_END;
inline constexpr uint32_t DEFER_VEHICLE_ARRIVING_COUNT = RATGDO_MAX_VEHICLE_ARRIVING_SUBSCRIBERS;
inline constexpr uint32_t DEFER_VEHICLE_ARRIVING_BASE = DEFER_VEHICLE_DETECTED_BASE + DEFER_VEHICLE_DETECTED_COUNT;
inline constexpr uint32_t DEFER_VEHICLE_LEAVING_COUNT = RATGDO_MAX_VEHICLE_LEAVING_SUBSCRIBERS;
inline constexpr uint32_t DEFER_VEHICLE_LEAVING_BASE = DEFER_VEHICLE_ARRIVING_BASE + DEFER_VEHICLE_ARRIVING_COUNT;
inline constexpr uint32_t DEFER_VEHICLE_END = DEFER_VEHICLE_LEAVING_BASE + DEFER_VEHICLE_LEAVING_COUNT;
#else
inline constexpr uint32_t DEFER_VEHICLE_END = DEFER_DISTANCE_END;
#endif
// Single-subscriber IDs // Single-subscriber IDs
enum : uint32_t { enum : uint32_t {
DEFER_ROLLING_CODE = DEFER_VEHICLE_END, DEFER_ROLLING_CODE = DEFER_DISTANCE_END,
DEFER_OPENING_DURATION, DEFER_OPENING_DURATION,
DEFER_CLOSING_DURATION, DEFER_CLOSING_DURATION,
DEFER_CLOSING_DELAY, DEFER_CLOSING_DELAY,
@@ -342,8 +288,6 @@ namespace scheduler_ids {
TIMEOUT_DOOR_ACTION, TIMEOUT_DOOR_ACTION,
TIMEOUT_MOVE_TO_POSITION, TIMEOUT_MOVE_TO_POSITION,
TIMEOUT_DOOR_STATE_EXPIRY, TIMEOUT_DOOR_STATE_EXPIRY,
TIMEOUT_PRESENCE_DETECT_WINDOW,
TIMEOUT_CLEAR_PRESENCE,
TIMEOUT_SYNC, TIMEOUT_SYNC,
}; };
} // namespace scheduler_ids } // namespace scheduler_ids
@@ -457,36 +401,4 @@ void RATGDOComponent::subscribe_distance_measurement(F&& f)
} }
#endif #endif
#ifdef RATGDO_USE_VEHICLE_SENSORS
template <typename F>
void RATGDOComponent::subscribe_vehicle_detected_state(F&& f)
{
uint32_t id = get_scheduler_id(scheduler_ids::DEFER_VEHICLE_DETECTED_BASE, scheduler_ids::DEFER_VEHICLE_DETECTED_COUNT,
this->vehicle_detected_sub_num_, LOG_STR("vehicle_detected"));
this->vehicle_detected_state.subscribe([this, f, id](VehicleDetectedState state) {
defer(id, [f, state] { f(state); });
});
}
template <typename F>
void RATGDOComponent::subscribe_vehicle_arriving_state(F&& f)
{
uint32_t id = get_scheduler_id(scheduler_ids::DEFER_VEHICLE_ARRIVING_BASE, scheduler_ids::DEFER_VEHICLE_ARRIVING_COUNT,
this->vehicle_arriving_sub_num_, LOG_STR("vehicle_arriving"));
this->vehicle_arriving_state.subscribe([this, f, id](VehicleArrivingState state) {
defer(id, [f, state] { f(state); });
});
}
template <typename F>
void RATGDOComponent::subscribe_vehicle_leaving_state(F&& f)
{
uint32_t id = get_scheduler_id(scheduler_ids::DEFER_VEHICLE_LEAVING_BASE, scheduler_ids::DEFER_VEHICLE_LEAVING_COUNT,
this->vehicle_leaving_sub_num_, LOG_STR("vehicle_leaving"));
this->vehicle_leaving_state.subscribe([this, f, id](VehicleLeavingState state) {
defer(id, [f, state] { f(state); });
});
}
#endif
} // namespace esphome::ratgdo } // namespace esphome::ratgdo
-14
View File
@@ -16,18 +16,4 @@ LightState light_state_toggle(LightState state)
} }
} }
LockState lock_state_toggle(LockState state)
{
switch (state) {
case LockState::UNLOCKED:
return LockState::LOCKED;
case LockState::LOCKED:
return LockState::UNLOCKED;
// 2 and 3 appears sometimes
case LockState::UNKNOWN:
default:
return LockState::UNKNOWN;
}
}
} // namespace esphome::ratgdo } // namespace esphome::ratgdo
-16
View File
@@ -42,7 +42,6 @@ ENUM(LockState, uint8_t,
(UNLOCKED, 0), (UNLOCKED, 0),
(LOCKED, 1), (LOCKED, 1),
(UNKNOWN, 2)) (UNKNOWN, 2))
LockState lock_state_toggle(LockState state);
// actions // actions
ENUM(LightAction, uint8_t, ENUM(LightAction, uint8_t,
@@ -54,7 +53,6 @@ ENUM(LightAction, uint8_t,
ENUM(LockAction, uint8_t, ENUM(LockAction, uint8_t,
(UNLOCK, 0), (UNLOCK, 0),
(LOCK, 1), (LOCK, 1),
(TOGGLE, 2),
(UNKNOWN, 3)) (UNKNOWN, 3))
ENUM(DoorAction, uint8_t, ENUM(DoorAction, uint8_t,
@@ -64,20 +62,6 @@ ENUM(DoorAction, uint8_t,
(STOP, 3), (STOP, 3),
(UNKNOWN, 4)) (UNKNOWN, 4))
#ifdef RATGDO_USE_VEHICLE_SENSORS
ENUM(VehicleDetectedState, uint8_t,
(NO, 0),
(YES, 1))
ENUM(VehicleArrivingState, uint8_t,
(NO, 0),
(YES, 1))
ENUM(VehicleLeavingState, uint8_t,
(NO, 0),
(YES, 1))
#endif
struct Openings { struct Openings {
uint16_t count; uint16_t count;
uint8_t flag; uint8_t flag;
-2
View File
@@ -38,8 +38,6 @@ namespace secplus2 {
this->uart_.begin(9600, RATGDO_UART_8N1, rx_pin->get_pin(), tx_pin->get_pin(), true); this->uart_.begin(9600, RATGDO_UART_8N1, rx_pin->get_pin(), tx_pin->get_pin(), true);
this->uart_.enableIntTx(false); this->uart_.enableIntTx(false);
this->uart_.enableAutoBaud(true); this->uart_.enableAutoBaud(true);
this->traits_.set_features(Traits::all());
} }
void Secplus2::loop() void Secplus2::loop()
-4
View File
@@ -81,8 +81,6 @@ namespace secplus2 {
Result call(Args args); Result call(Args args);
const Traits& traits() const { return this->traits_; }
protected: protected:
void increment_rolling_code_counter(int delta = 1); void increment_rolling_code_counter(int delta = 1);
void set_rolling_code_counter(uint32_t counter); void set_rolling_code_counter(uint32_t counter);
@@ -139,7 +137,6 @@ namespace secplus2 {
// Larger structures // Larger structures
single_observable<uint32_t> rolling_code_counter_ { 0 }; single_observable<uint32_t> rolling_code_counter_ { 0 };
OnceCallbacks<void()> on_command_sent_; OnceCallbacks<void()> on_command_sent_;
Traits traits_;
RatgdoUART uart_; RatgdoUART uart_;
// 19-byte arrays // 19-byte arrays
@@ -151,7 +148,6 @@ namespace secplus2 {
struct { struct {
uint8_t transmit_pending : 1; uint8_t transmit_pending : 1;
uint8_t rx_reading_msg : 1; uint8_t rx_reading_msg : 1;
uint8_t reserved : 6; // Reserved for future use
} flags_ { 0 }; } flags_ { 0 };
}; };
} // namespace secplus2 } // namespace secplus2
-6
View File
@@ -8,7 +8,6 @@ from .. import (
RATGDO_CLIENT_SCHMEA, RATGDO_CLIENT_SCHMEA,
ratgdo_ns, ratgdo_ns,
register_ratgdo_child, register_ratgdo_child,
subscribe_vehicle_arriving,
) )
DEPENDENCIES = ["ratgdo"] DEPENDENCIES = ["ratgdo"]
@@ -41,8 +40,3 @@ async def to_code(config):
if CONF_PIN in config: if CONF_PIN in config:
pin = await cg.gpio_pin_expression(config[CONF_PIN]) pin = await cg.gpio_pin_expression(config[CONF_PIN])
cg.add(var.set_pin(pin)) cg.add(var.set_pin(pin))
# LED switch conditionally subscribes to vehicle_arriving in C++ (#ifdef RATGDO_USE_VEHICLE_SENSORS).
# Always register the subscription — the C++ guard ensures it's only active when vehicle sensors
# are enabled, and the codegen emits the define to size the observable accordingly.
if config[CONF_TYPE] == "led":
subscribe_vehicle_arriving()
@@ -23,11 +23,6 @@ void RATGDOSwitch::setup()
switch (this->switch_type_) { switch (this->switch_type_) {
case SwitchType::RATGDO_LED: case SwitchType::RATGDO_LED:
this->pin_->setup(); this->pin_->setup();
#ifdef RATGDO_USE_VEHICLE_SENSORS
this->parent_->subscribe_vehicle_arriving_state([this](VehicleArrivingState state) {
this->write_state(state == VehicleArrivingState::YES);
});
#endif
break; break;
default: default:
break; break;
-28
View File
@@ -47,20 +47,6 @@ time:
servers: !secret sntp_servers servers: !secret sntp_servers
timezone: Europe/Zurich timezone: Europe/Zurich
binary_sensor:
- platform: ratgdo
id: garage_gate_vehicle_detected
type: vehicle_detected
name: "Vehicle detected"
- platform: ratgdo
id: garage_gate_vehicle_arriving
type: vehicle_arriving
name: "Vehicle arriving"
- platform: ratgdo
id: garage_gate_vehicle_leaving
type: vehicle_leaving
name: "Vehicle leaving"
sensor: sensor:
- platform: ratgdo - platform: ratgdo
id: garage_gate_openings id: garage_gate_openings
@@ -78,13 +64,6 @@ sensor:
filters: filters:
- throttle: 1ms - throttle: 1ms
- heartbeat: 1ms - heartbeat: 1ms
- platform: copy
source_id: garage_gate_vehicle_distance_actual
name: Vehicle distance actual filtered
filters:
- min:
window_size: 5000
send_every: 5000
- platform: adc - platform: adc
pin: GPIO34 pin: GPIO34
name: "Voltage" name: "Voltage"
@@ -149,13 +128,6 @@ number:
entity_category: config entity_category: config
name: "Client ID" name: "Client ID"
mode: box mode: box
- platform: ratgdo
id: garage_gate_target_distance_measurement
type: target_distance_measurement
entity_category: config
name: "Vehicle distance target"
mode: box
unit_of_measurement: "mm"
- platform: ratgdo - platform: ratgdo
id: garage_gate_closing_delay id: garage_gate_closing_delay
type: closing_delay type: closing_delay