ESPHome 2025.9.0-dev
Loading...
Searching...
No Matches
integration_sensor.h
Go to the documentation of this file.
1#pragma once
2
6#include "esphome/core/hal.h"
8
9namespace esphome {
10namespace integration {
11
19
25
27 public:
28 void setup() override;
29 void dump_config() override;
30 void set_sensor(Sensor *sensor) { sensor_ = sensor; }
31 void set_time(IntegrationSensorTime time) { time_ = time; }
32 void set_method(IntegrationMethod method) { method_ = method; }
33 void set_restore(bool restore) { restore_ = restore; }
34 void reset() { this->publish_and_save_(0.0f); }
35
36 protected:
37 void process_sensor_value_(float value);
39 switch (this->time_) {
41 return 1.0f;
43 return 1.0f / 1000.0f;
45 return 1.0f / 60000.0f;
47 return 1.0f / 3600000.0f;
49 return 1.0f / 86400000.0f;
50 default:
51 return 0.0f;
52 }
53 }
54 void publish_and_save_(double result) {
55 this->result_ = result;
56 this->publish_state(result);
57 if (this->restore_) {
58 float result_f = result;
59 this->pref_.save(&result_f);
60 }
61 }
62
68
69 uint32_t last_update_;
70 double result_{0.0f};
71 float last_value_{0.0f};
72};
73
74template<typename... Ts> class ResetAction : public Action<Ts...> {
75 public:
76 explicit ResetAction(IntegrationSensor *parent) : parent_(parent) {}
77
78 void play(Ts... x) override { this->parent_->reset(); }
79
80 protected:
82};
83
84} // namespace integration
85} // namespace esphome
bool save(const T *src)
Definition preferences.h:21
void set_time(IntegrationSensorTime time)
void set_method(IntegrationMethod method)
ResetAction(IntegrationSensor *parent)
Base-class for all sensors.
Definition sensor.h:59
void publish_state(float state)
Publish a new state to the front-end.
Definition sensor.cpp:45
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t x
Definition tt21100.cpp:5