mirror of
https://github.com/esphome/esphome.git
synced 2025-04-08 20:00:27 +01:00
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "esphome/components/resistance_sampler/resistance_sampler.h"
|
|
#include "esphome/components/sensor/sensor.h"
|
|
#include "esphome/core/component.h"
|
|
|
|
namespace esphome {
|
|
namespace resistance {
|
|
|
|
enum ResistanceConfiguration {
|
|
UPSTREAM,
|
|
DOWNSTREAM,
|
|
};
|
|
|
|
class ResistanceSensor : public Component, public sensor::Sensor, resistance_sampler::ResistanceSampler {
|
|
public:
|
|
void set_sensor(Sensor *sensor) { sensor_ = sensor; }
|
|
void set_configuration(ResistanceConfiguration configuration) { configuration_ = configuration; }
|
|
void set_resistor(float resistor) { resistor_ = resistor; }
|
|
void set_reference_voltage(float reference_voltage) { reference_voltage_ = reference_voltage; }
|
|
|
|
void setup() override {
|
|
this->sensor_->add_on_state_callback([this](float value) { this->process_(value); });
|
|
if (this->sensor_->has_state())
|
|
this->process_(this->sensor_->state);
|
|
}
|
|
void dump_config() override;
|
|
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
|
|
protected:
|
|
void process_(float value);
|
|
sensor::Sensor *sensor_;
|
|
ResistanceConfiguration configuration_;
|
|
float resistor_;
|
|
float reference_voltage_;
|
|
};
|
|
|
|
} // namespace resistance
|
|
} // namespace esphome
|