From 9f75f8cf582e48d531788ace8ed744543a701856 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 7 Jun 2023 11:37:34 -0500 Subject: [PATCH] binary sensor --- components/ratgdo/binary_sensor/__init__.py | 10 +++++++--- .../ratgdo/binary_sensor/ratgdo_binary_sensor.cpp | 14 ++++++++------ .../ratgdo/binary_sensor/ratgdo_binary_sensor.h | 12 +++++++----- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/components/ratgdo/binary_sensor/__init__.py b/components/ratgdo/binary_sensor/__init__.py index f98da9f..b786d32 100644 --- a/components/ratgdo/binary_sensor/__init__.py +++ b/components/ratgdo/binary_sensor/__init__.py @@ -13,14 +13,18 @@ DEPENDENCIES = ["ratgdo"] RATGDOBinarySensor = ratgdo_ns.class_( "RATGDOBinarySensor", binary_sensor.BinarySensor, cg.Component ) +SensorType = ratgdo_ns.enum("SensorType") CONF_TYPE = "type" -TYPES = {"motion", "obstruction"} +TYPES = { + "motion": SensorType.RATGDO_SENSOR_MOTION, + "obstruction": SensorType.RATGDO_SENSOR_OBSTRUCTION, +} CONFIG_SCHEMA = binary_sensor.binary_sensor_schema(RATGDOBinarySensor).extend( { - cv.Required(CONF_TYPE): str + cv.Required(CONF_TYPE): cv.enum(TYPES, lower=True), } ).extend(RATGDO_CLIENT_SCHMEA) @@ -29,5 +33,5 @@ async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await binary_sensor.register_binary_sensor(var, config) await cg.register_component(var, config) - await register_ratgdo_child(var, config) cg.add(var.set_type(var, config[CONF_TYPE])) + await register_ratgdo_child(var, config) diff --git a/components/ratgdo/binary_sensor/ratgdo_binary_sensor.cpp b/components/ratgdo/binary_sensor/ratgdo_binary_sensor.cpp index c08d022..ee354ea 100644 --- a/components/ratgdo/binary_sensor/ratgdo_binary_sensor.cpp +++ b/components/ratgdo/binary_sensor/ratgdo_binary_sensor.cpp @@ -12,12 +12,14 @@ void RATGDOBinarySensor::dump_config() { ESP_LOGCONFIG(" Type: %s", this->type_); } - -void RATGDOBinarySensor::on_door_state(esphome::ratgdo::DoorState state) {} -void RATGDOBinarySensor::on_light_state(esphome::ratgdo::LightState state) {} -void RATGDOBinarySensor::on_lock_state(esphome::ratgdo::LockState state) {} -void RATGDOBinarySensor::on_motion_state(esphome::ratgdo::MotionState state) {} -void RATGDOBinarySensor::on_obstruction_state(esphome::ratgdo::ObstructionState state) {} +void RATGDOBinarySensor::on_motion_state(esphome::ratgdo::MotionState state) { + if (this->type_ == SensorType::RATGDO_SENSOR_MOTION) + this->publish_state(state == esphome::ratgdo::MotionState::MOTION_STATE_DETECTED); +} +void RATGDOBinarySensor::on_obstruction_state(esphome::ratgdo::ObstructionState state) { + if (this->type_ == SensorType::RATGDO_SENSOR_OBSTRUCTION) + this->publish_state(state == esphome::ratgdo::ObstructionState::OBSTRUCTION_STATE_OBSTRUCTED); +} } // namespace ratgdo } // namespace esphome diff --git a/components/ratgdo/binary_sensor/ratgdo_binary_sensor.h b/components/ratgdo/binary_sensor/ratgdo_binary_sensor.h index 19ff5b4..82005f7 100644 --- a/components/ratgdo/binary_sensor/ratgdo_binary_sensor.h +++ b/components/ratgdo/binary_sensor/ratgdo_binary_sensor.h @@ -9,19 +9,21 @@ namespace esphome { namespace ratgdo { +enum SensorType { + RATGDO_SENSOR_MOTION, + RATGDO_SENSOR_OBSTRUCTION, +}; + class RATGDOBinarySensor : public binary_sensor::BinarySensor, public RATGDOClient, public Component { public: void dump_config() override; - void set_type(const char *) { this->type_ = type_; } + void set_type(SensorType type) { type_ = type_; } - void on_door_state(esphome::ratgdo::DoorState state) override; - void on_light_state(esphome::ratgdo::LightState state) override; - void on_lock_state(esphome::ratgdo::LockState state) override; void on_motion_state(esphome::ratgdo::MotionState state) override; void on_obstruction_state(esphome::ratgdo::ObstructionState state) override; protected: - const char *type_; + SensorType type_; };