mirror of
https://github.com/esphome/esphome.git
synced 2024-12-24 14:34:54 +01:00
pulse_counter_ulp: Remove total sensor automation
This automation doesn't preserve state over deep sleep, making it unhelpful for the ULP pulse counter.
This commit is contained in:
parent
67b746693f
commit
40b18666c9
4 changed files with 5 additions and 82 deletions
|
@ -1,24 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/core/automation.h"
|
||||
#include "esphome/components/pulse_counter_ulp/pulse_counter_ulp_sensor.h"
|
||||
|
||||
namespace esphome {
|
||||
|
||||
namespace pulse_counter_ulp {
|
||||
|
||||
template<typename... Ts> class SetTotalPulsesAction : public Action<Ts...> {
|
||||
public:
|
||||
SetTotalPulsesAction(PulseCounterUlpSensor *pulse_counter) : pulse_counter_(pulse_counter) {}
|
||||
|
||||
TEMPLATABLE_VALUE(uint32_t, total_pulses)
|
||||
|
||||
void play(Ts... x) override { this->pulse_counter_->set_total_pulses(this->total_pulses_.value(x...)); }
|
||||
|
||||
protected:
|
||||
PulseCounterUlpSensor *pulse_counter_;
|
||||
};
|
||||
|
||||
} // namespace pulse_counter_ulp
|
||||
} // namespace esphome
|
|
@ -121,11 +121,6 @@ void PulseCounterUlpSensor::setup() {
|
|||
}
|
||||
}
|
||||
|
||||
void PulseCounterUlpSensor::set_total_pulses(uint32_t pulses) {
|
||||
this->current_total_ = pulses;
|
||||
this->total_sensor_->publish_state(pulses);
|
||||
}
|
||||
|
||||
void PulseCounterUlpSensor::dump_config() {
|
||||
LOG_SENSOR("", "Pulse Counter", this);
|
||||
LOG_PIN(" Pin: ", this->config_.pin_);
|
||||
|
@ -151,11 +146,6 @@ void PulseCounterUlpSensor::update() {
|
|||
this->publish_state(value);
|
||||
}
|
||||
|
||||
if (this->total_sensor_ != nullptr) {
|
||||
this->current_total_ += raw.edge_count;
|
||||
ESP_LOGD(TAG, "'%s': Total : %" PRIu32 " pulses", this->get_name().c_str(), current_total_);
|
||||
this->total_sensor_->publish_state(this->current_total_);
|
||||
}
|
||||
this->last_time_ = now;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,9 +48,6 @@ class PulseCounterUlpSensor : public sensor::Sensor, public PollingComponent {
|
|||
void set_falling_edge_mode(CountMode mode) { this->config_.falling_edge_mode_ = mode; }
|
||||
void set_sleep_duration(uint32_t duration_us) { this->config_.sleep_duration_ = duration_us * microseconds{1}; }
|
||||
void set_debounce(uint16_t debounce) { this->config_.debounce_ = debounce; }
|
||||
void set_total_sensor(sensor::Sensor *total_sensor) { total_sensor_ = total_sensor; }
|
||||
|
||||
void set_total_pulses(uint32_t pulses);
|
||||
|
||||
/// Unit of measurement is "pulses/min".
|
||||
void setup() override;
|
||||
|
@ -60,11 +57,8 @@ class PulseCounterUlpSensor : public sensor::Sensor, public PollingComponent {
|
|||
|
||||
protected:
|
||||
UlpProgram::Config config_{};
|
||||
sensor::Sensor *total_sensor_{nullptr};
|
||||
|
||||
std::unique_ptr<UlpProgram> storage_{};
|
||||
clock::time_point last_time_{};
|
||||
uint32_t current_total_{0};
|
||||
};
|
||||
|
||||
} // namespace pulse_counter_ulp
|
||||
|
|
|
@ -1,25 +1,20 @@
|
|||
import os
|
||||
|
||||
from esphome import pins
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import esp32, sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome import automation, pins
|
||||
from esphome.components import sensor
|
||||
from esphome.components import esp32
|
||||
from esphome.const import (
|
||||
CONF_COUNT_MODE,
|
||||
CONF_DEBOUNCE,
|
||||
CONF_FALLING_EDGE,
|
||||
CONF_ID,
|
||||
CONF_NUMBER,
|
||||
CONF_PIN,
|
||||
CONF_RISING_EDGE,
|
||||
CONF_NUMBER,
|
||||
CONF_SLEEP_DURATION,
|
||||
CONF_DEBOUNCE,
|
||||
CONF_TOTAL,
|
||||
CONF_VALUE,
|
||||
ICON_PULSE,
|
||||
STATE_CLASS_MEASUREMENT,
|
||||
STATE_CLASS_TOTAL_INCREASING,
|
||||
UNIT_PULSES_PER_MINUTE,
|
||||
UNIT_PULSES,
|
||||
)
|
||||
from esphome.core import CORE
|
||||
|
||||
|
@ -37,10 +32,6 @@ PulseCounterUlpSensor = pulse_counter_ulp_ns.class_(
|
|||
"PulseCounterUlpSensor", sensor.Sensor, cg.PollingComponent
|
||||
)
|
||||
|
||||
SetTotalPulsesAction = pulse_counter_ulp_ns.class_(
|
||||
"SetTotalPulsesAction", automation.Action
|
||||
)
|
||||
|
||||
|
||||
def validate_pulse_counter_pin(value):
|
||||
value = pins.internal_gpio_input_pin_schema(value)
|
||||
|
@ -92,12 +83,6 @@ CONFIG_SCHEMA = cv.All(
|
|||
CONF_SLEEP_DURATION, default="20000us"
|
||||
): cv.positive_time_period_microseconds,
|
||||
cv.Optional(CONF_DEBOUNCE, default=3): cv.positive_int,
|
||||
cv.Optional(CONF_TOTAL): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_PULSES,
|
||||
icon=ICON_PULSE,
|
||||
accuracy_decimals=0,
|
||||
state_class=STATE_CLASS_TOTAL_INCREASING,
|
||||
),
|
||||
},
|
||||
)
|
||||
.extend(cv.polling_component_schema("60s")),
|
||||
|
@ -127,25 +112,3 @@ async def to_code(config):
|
|||
cg.add(var.set_falling_edge_mode(count[CONF_FALLING_EDGE]))
|
||||
cg.add(var.set_sleep_duration(config[CONF_SLEEP_DURATION]))
|
||||
cg.add(var.set_debounce(config[CONF_DEBOUNCE]))
|
||||
|
||||
if CONF_TOTAL in config:
|
||||
sens = await sensor.new_sensor(config[CONF_TOTAL])
|
||||
cg.add(var.set_total_sensor(sens))
|
||||
|
||||
|
||||
@automation.register_action(
|
||||
"pulse_counter_ulp.set_total_pulses",
|
||||
SetTotalPulsesAction,
|
||||
cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_ID): cv.use_id(PulseCounterUlpSensor),
|
||||
cv.Required(CONF_VALUE): cv.templatable(cv.uint32_t),
|
||||
}
|
||||
),
|
||||
)
|
||||
async def set_total_action_to_code(config, action_id, template_arg, args):
|
||||
paren = await cg.get_variable(config[CONF_ID])
|
||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||
template_ = await cg.templatable(config[CONF_VALUE], args, int)
|
||||
cg.add(var.set_total_pulses(template_))
|
||||
return var
|
||||
|
|
Loading…
Reference in a new issue