empty compound sensor

master
HB 5 years ago
parent 583a375876
commit 6aede26cd4

@ -0,0 +1,31 @@
#include "esphome/core/log.h"
#include "empty_compound_sensor.h"
namespace esphome {
namespace empty_compound_sensor {
static const char *TAG = "empty_compound_sensor.sensor";
void EmptyCompoundSensor::setup() {
}
void EmptyCompoundSensor::loop() {
}
void EmptyCompoundSensor::update() {
if (this->sensor1_ != nullptr)
this->sensor1_->publish_state(1.0f);
if (this->sensor2_ != nullptr)
this->sensor2_->publish_state(2.0f);
if (this->sensor3_ != nullptr)
this->sensor3_->publish_state(3.0f);
}
void EmptyCompoundSensor::dump_config() {
ESP_LOGCONFIG(TAG, "Empty compound sensor");
}
} //namespace empty_compound_sensor
} //namespace esphome

@ -0,0 +1,27 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/sensor/sensor.h"
namespace esphome {
namespace empty_compound_sensor {
class EmptyCompoundSensor : public sensor::Sensor, public PollingComponent {
public:
void set_sensor1(sensor::Sensor *sensor1) { sensor1_ = sensor1; }
void set_sensor2(sensor::Sensor *sensor2) { sensor2_ = sensor2; }
void set_sensor3(sensor::Sensor *sensor3) { sensor3_ = sensor3; }
void setup() override;
void loop() override;
void update() override;
void dump_config() override;
protected:
sensor::Sensor *sensor1_;
sensor::Sensor *sensor2_;
sensor::Sensor *sensor3_;
};
} //namespace empty_compound_sensor
} //namespace esphome

@ -0,0 +1,51 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor
from esphome.const import CONF_ID, UNIT_EMPTY, ICON_EMPTY
empty_compound_sensor_ns = cg.esphome_ns.namespace('empty_compound_sensor')
EmptyCompoundSensor = empty_compound_sensor_ns.class_('EmptyCompoundSensor', cg.PollingComponent)
CONF_SENSOR1 = "sensor1"
CONF_SENSOR2 = "sensor2"
CONF_SENSOR3 = "sensor3"
CONFIG_SCHEMA = cv.Schema({
cv.GenerateID(): cv.declare_id(EmptyCompoundSensor),
cv.Optional(CONF_SENSOR1):
sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1).extend({
#cv.Optional(CONF_OVERSAMPLING, default='16X'):
# cv.enum(OVERSAMPLING_OPTIONS, upper=True),
}),
cv.Optional(CONF_SENSOR2):
sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1).extend({
#cv.Optional(CONF_OVERSAMPLING, default='16X'):
# cv.enum(OVERSAMPLING_OPTIONS, upper=True),
}),
cv.Optional(CONF_SENSOR3):
sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1).extend({
#cv.Optional(CONF_OVERSAMPLING, default='16X'):
# cv.enum(OVERSAMPLING_OPTIONS, upper=True),
})
}).extend(cv.polling_component_schema('60s'))
def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
yield cg.register_component(var, config)
if CONF_SENSOR1 in config:
conf = config[CONF_SENSOR1]
sens = yield sensor.new_sensor(conf)
cg.add(var.set_sensor1(sens))
if CONF_SENSOR2 in config:
conf = config[CONF_SENSOR2]
sens = yield sensor.new_sensor(conf)
cg.add(var.set_sensor2(sens))
if CONF_SENSOR3 in config:
conf = config[CONF_SENSOR3]
sens = yield sensor.new_sensor(conf)
cg.add(var.set_sensor3(sens))

@ -15,6 +15,15 @@ sensor:
- platform: empty_uart_sensor - platform: empty_uart_sensor
id: empty_uart_sensor_1 id: empty_uart_sensor_1
- platform: empty_compound_sensor
id: empty_compound_sensor_1
sensor1:
name: "Sensor 1"
sensor2:
name: "Sensor 2"
sensor3:
name: "Sensor 3"
binary_sensor: binary_sensor:
- platform: empty_binary_sensor - platform: empty_binary_sensor
id: empty_binary_sensor_1 id: empty_binary_sensor_1

Loading…
Cancel
Save