mirror of
https://github.com/esphome/esphome.git
synced 2025-03-14 14:48:18 +00:00
fixed python and C++ code for new framework
This commit is contained in:
parent
e8ccb84bea
commit
2bf5353eaf
0
esphome/components/binary_sensor_map/__init__.py
Normal file
0
esphome/components/binary_sensor_map/__init__.py
Normal file
@ -6,8 +6,6 @@ namespace binary_sensor_map {
|
||||
|
||||
static const char *TAG = "sensor.binary_sensor_map";
|
||||
|
||||
BinarySensorMap::BinarySensorMap(const std::string &name) : Sensor(name) {}
|
||||
|
||||
void BinarySensorMap::dump_config() { LOG_SENSOR(" ", "binary_sensor_map", this); }
|
||||
|
||||
void BinarySensorMap::loop() {
|
||||
@ -54,8 +52,6 @@ void BinarySensorMap::process_group_() {
|
||||
}
|
||||
}
|
||||
|
||||
float BinarySensorMap::get_setup_priority() const { return setup_priority::HARDWARE_LATE; }
|
||||
|
||||
void BinarySensorMap::add_sensor(binary_sensor::BinarySensor *sensor, float value) {
|
||||
BinarySensorMapChannel *sensor_channel = new BinarySensorMapChannel;
|
||||
sensor_channel->binary_sensor = sensor;
|
||||
|
@ -22,7 +22,6 @@ struct BinarySensorMapChannel {
|
||||
*/
|
||||
class BinarySensorMap : public sensor::Sensor, public Component {
|
||||
public:
|
||||
BinarySensorMap(const std::string &name);
|
||||
void dump_config() override;
|
||||
/**
|
||||
* The loop checks all binary_sensor states
|
||||
@ -33,7 +32,7 @@ class BinarySensorMap : public sensor::Sensor, public Component {
|
||||
* average value. When the value changed and no sensors ar active we publish NAN.
|
||||
* */
|
||||
void loop() override;
|
||||
float get_setup_priority() const override;
|
||||
float get_setup_priority() const override { return setup_priority::LATE; }
|
||||
/** Add binary_sensors to the group.
|
||||
* Each binary_sensor represents a float value when its state is true
|
||||
*
|
||||
|
@ -1,47 +0,0 @@
|
||||
import voluptuous as vol
|
||||
|
||||
from esphome.components import sensor, binary_sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import CONF_ID, CONF_NAME, CONF_CHANNELS, CONF_CHANNEL, CONF_VALUE, CONF_TYPE
|
||||
from esphome.cpp_generator import Pvariable, get_variable, add
|
||||
from esphome.cpp_types import App
|
||||
from esphome.components.sensor import setup_sensor
|
||||
|
||||
DEPENDENCIES = ['binary_sensor']
|
||||
|
||||
BinarySensorMap = sensor.sensor_ns.class_('BinarySensorMap', sensor.Sensor)
|
||||
|
||||
SensorMapType = sensor.sensor_ns.enum('SensorMapType')
|
||||
SENSOR_MAP_TYPES = {
|
||||
'GROUP': SensorMapType.BINARY_SENSOR_MAP_TYPE_GROUP,
|
||||
}
|
||||
|
||||
entry = {
|
||||
vol.Required(CONF_CHANNEL): cv.use_variable_id(binary_sensor.BinarySensor),
|
||||
vol.Required(CONF_VALUE): vol.All(cv.positive_int, vol.Range(min=0, max=255)),
|
||||
}
|
||||
|
||||
PLATFORM_SCHEMA = cv.nameable(sensor.SENSOR_PLATFORM_SCHEMA.extend({
|
||||
cv.GenerateID(): cv.declare_variable_id(BinarySensorMap),
|
||||
vol.Required(CONF_TYPE): cv.one_of(*SENSOR_MAP_TYPES, upper=True),
|
||||
vol.Required(CONF_CHANNELS): cv.ensure_list(entry),
|
||||
}))
|
||||
|
||||
|
||||
def to_code(config):
|
||||
rhs = App.make_binary_sensor_map(config[CONF_NAME])
|
||||
var = Pvariable(config[CONF_ID], rhs)
|
||||
setup_sensor(var, config)
|
||||
if CONF_TYPE in config:
|
||||
constant = SENSOR_MAP_TYPES[config[CONF_TYPE]]
|
||||
add(var.set_sensor_type(constant))
|
||||
|
||||
for ch in config[CONF_CHANNELS]:
|
||||
for input_var in get_variable(ch[CONF_CHANNEL]):
|
||||
yield
|
||||
add(var.add_sensor(input_var, ch[CONF_VALUE]))
|
||||
|
||||
add(App.register_sensor(var))
|
||||
|
||||
|
||||
BUILD_FLAGS = '-DUSE_BINARY_SENSOR_MAP'
|
38
esphome/components/binary_sensor_map/sensor.py
Normal file
38
esphome/components/binary_sensor_map/sensor.py
Normal file
@ -0,0 +1,38 @@
|
||||
import esphome.codegen as cg
|
||||
import esphome.config_validation as cv
|
||||
|
||||
from esphome.components import sensor, binary_sensor
|
||||
from esphome.const import CONF_ID, CONF_NAME, CONF_CHANNELS, CONF_CHANNEL, CONF_VALUE, CONF_TYPE
|
||||
|
||||
DEPENDENCIES = ['binary_sensor']
|
||||
|
||||
binary_sensor_map_ns = cg.esphome_ns.namespace('binary_sensor_map')
|
||||
BinarySensorMap = binary_sensor_map_ns.class_('BinarySensorMap', cg.Component)
|
||||
SensorMapType = binary_sensor_map_ns.enum('SensorMapType')
|
||||
SENSOR_MAP_TYPES = {
|
||||
'GROUP': SensorMapType.BINARY_SENSOR_MAP_TYPE_GROUP,
|
||||
}
|
||||
|
||||
entry = {
|
||||
cv.Required(CONF_CHANNEL): cv.use_id(binary_sensor.BinarySensor),
|
||||
cv.Required(CONF_VALUE): cv.All(cv.positive_int, cv.Range(min=0, max=255)),
|
||||
}
|
||||
|
||||
CONFIG_SCHEMA = sensor.SENSOR_SCHEMA.extend({
|
||||
cv.GenerateID(): cv.declare_id(BinarySensorMap),
|
||||
cv.Required(CONF_TYPE): cv.one_of(*SENSOR_MAP_TYPES, upper=True),
|
||||
cv.Required(CONF_CHANNELS): cv.ensure_list(entry),
|
||||
})
|
||||
|
||||
|
||||
def to_code(config):
|
||||
var = cg.new_Pvariable(config[CONF_ID])
|
||||
yield cg.register_component(var, config)
|
||||
yield sensor.register_sensor(var, config)
|
||||
if CONF_TYPE in config:
|
||||
constant = SENSOR_MAP_TYPES[config[CONF_TYPE]]
|
||||
cg.add(var.set_sensor_type(constant))
|
||||
|
||||
for ch in config[CONF_CHANNELS]:
|
||||
input_var = yield cg.get_variable(ch[CONF_CHANNEL])
|
||||
cg.add(var.add_sensor(input_var,ch[CONF_VALUE]))
|
Loading…
x
Reference in New Issue
Block a user