ESPHome  2025.2.0
automation.h
Go to the documentation of this file.
1 #pragma once
3 #include "nextion.h"
4 
5 namespace esphome {
6 namespace nextion {
7 
8 class BufferOverflowTrigger : public Trigger<> {
9  public:
10  explicit BufferOverflowTrigger(Nextion *nextion) {
11  nextion->add_buffer_overflow_event_callback([this]() { this->trigger(); });
12  }
13 };
14 
15 class SetupTrigger : public Trigger<> {
16  public:
17  explicit SetupTrigger(Nextion *nextion) {
18  nextion->add_setup_state_callback([this]() { this->trigger(); });
19  }
20 };
21 
22 class SleepTrigger : public Trigger<> {
23  public:
24  explicit SleepTrigger(Nextion *nextion) {
25  nextion->add_sleep_state_callback([this]() { this->trigger(); });
26  }
27 };
28 
29 class WakeTrigger : public Trigger<> {
30  public:
31  explicit WakeTrigger(Nextion *nextion) {
32  nextion->add_wake_state_callback([this]() { this->trigger(); });
33  }
34 };
35 
36 class PageTrigger : public Trigger<uint8_t> {
37  public:
38  explicit PageTrigger(Nextion *nextion) {
39  nextion->add_new_page_callback([this](const uint8_t page_id) { this->trigger(page_id); });
40  }
41 };
42 
43 class TouchTrigger : public Trigger<uint8_t, uint8_t, bool> {
44  public:
45  explicit TouchTrigger(Nextion *nextion) {
46  nextion->add_touch_event_callback([this](uint8_t page_id, uint8_t component_id, bool touch_event) {
47  this->trigger(page_id, component_id, touch_event);
48  });
49  }
50 };
51 
52 template<typename... Ts> class NextionSetBrightnessAction : public Action<Ts...> {
53  public:
54  explicit NextionSetBrightnessAction(Nextion *component) : component_(component) {}
55 
56  TEMPLATABLE_VALUE(float, brightness)
57 
58  void play(Ts... x) override {
59  this->component_->set_brightness(this->brightness_.value(x...));
60  this->component_->set_backlight_brightness(this->brightness_.value(x...));
61  }
62 
63  void set_brightness(std::function<void(Ts..., float)> brightness) { this->brightness_ = brightness; }
64 
65  protected:
67 };
68 
69 template<typename... Ts> class NextionPublishFloatAction : public Action<Ts...> {
70  public:
71  explicit NextionPublishFloatAction(NextionComponent *component) : component_(component) {}
72 
73  TEMPLATABLE_VALUE(float, state)
74  TEMPLATABLE_VALUE(bool, publish_state)
75  TEMPLATABLE_VALUE(bool, send_to_nextion)
76 
77  void play(Ts... x) override {
78  this->component_->set_state(this->state_.value(x...), this->publish_state_.value(x...),
79  this->send_to_nextion_.value(x...));
80  }
81 
82  void set_state(std::function<void(Ts..., float)> state) { this->state_ = state; }
83  void set_publish_state(std::function<void(Ts..., bool)> publish_state) { this->publish_state_ = publish_state; }
84  void set_send_to_nextion(std::function<void(Ts..., bool)> send_to_nextion) {
85  this->send_to_nextion_ = send_to_nextion;
86  }
87 
88  protected:
90 };
91 
92 template<typename... Ts> class NextionPublishTextAction : public Action<Ts...> {
93  public:
94  explicit NextionPublishTextAction(NextionComponent *component) : component_(component) {}
95 
96  TEMPLATABLE_VALUE(const char *, state)
97  TEMPLATABLE_VALUE(bool, publish_state)
98  TEMPLATABLE_VALUE(bool, send_to_nextion)
99 
100  void play(Ts... x) override {
101  this->component_->set_state(this->state_.value(x...), this->publish_state_.value(x...),
102  this->send_to_nextion_.value(x...));
103  }
104 
105  void set_state(std::function<void(Ts..., const char *)> state) { this->state_ = state; }
106  void set_publish_state(std::function<void(Ts..., bool)> publish_state) { this->publish_state_ = publish_state; }
107  void set_send_to_nextion(std::function<void(Ts..., bool)> send_to_nextion) {
108  this->send_to_nextion_ = send_to_nextion;
109  }
110 
111  protected:
113 };
114 
115 template<typename... Ts> class NextionPublishBoolAction : public Action<Ts...> {
116  public:
117  explicit NextionPublishBoolAction(NextionComponent *component) : component_(component) {}
118 
119  TEMPLATABLE_VALUE(bool, state)
120  TEMPLATABLE_VALUE(bool, publish_state)
121  TEMPLATABLE_VALUE(bool, send_to_nextion)
122 
123  void play(Ts... x) override {
124  this->component_->set_state(this->state_.value(x...), this->publish_state_.value(x...),
125  this->send_to_nextion_.value(x...));
126  }
127 
128  void set_state(std::function<void(Ts..., bool)> state) { this->state_ = state; }
129  void set_publish_state(std::function<void(Ts..., bool)> publish_state) { this->publish_state_ = publish_state; }
130  void set_send_to_nextion(std::function<void(Ts..., bool)> send_to_nextion) {
131  this->send_to_nextion_ = send_to_nextion;
132  }
133 
134  protected:
136 };
137 
138 } // namespace nextion
139 } // namespace esphome
void set_brightness(std::function< void(Ts..., float)> brightness)
Definition: automation.h:63
void add_new_page_callback(std::function< void(uint8_t)> &&callback)
Add a callback to be notified when the nextion changes pages.
Definition: nextion.cpp:185
void set_publish_state(std::function< void(Ts..., bool)> publish_state)
Definition: automation.h:83
void add_wake_state_callback(std::function< void()> &&callback)
Add a callback to be notified of wake state changes.
Definition: nextion.cpp:177
uint16_t x
Definition: tt21100.cpp:17
void add_setup_state_callback(std::function< void()> &&callback)
Add a callback to be notified when the nextion completes its initialize setup.
Definition: nextion.cpp:181
TEMPLATABLE_VALUE(float, brightness) void play(Ts... x) override
Definition: automation.h:56
void set_state(std::function< void(Ts..., const char *)> state)
Definition: automation.h:105
void add_buffer_overflow_event_callback(std::function< void()> &&callback)
Add a callback to be notified when the nextion reports a buffer overflow.
Definition: nextion.cpp:193
void trigger(Ts... x)
Inform the parent automation that the event has triggered.
Definition: automation.h:95
void set_state(std::function< void(Ts..., float)> state)
Definition: automation.h:82
void add_sleep_state_callback(std::function< void()> &&callback)
Add a callback to be notified of sleep state changes.
Definition: nextion.cpp:173
void set_send_to_nextion(std::function< void(Ts..., bool)> send_to_nextion)
Definition: automation.h:107
WakeTrigger(Nextion *nextion)
Definition: automation.h:31
void set_publish_state(std::function< void(Ts..., bool)> publish_state)
Definition: automation.h:129
NextionSetBrightnessAction(Nextion *component)
Definition: automation.h:54
NextionPublishBoolAction(NextionComponent *component)
Definition: automation.h:117
void set_send_to_nextion(std::function< void(Ts..., bool)> send_to_nextion)
Definition: automation.h:130
NextionPublishTextAction(NextionComponent *component)
Definition: automation.h:94
void set_state(std::function< void(Ts..., bool)> state)
Definition: automation.h:128
PageTrigger(Nextion *nextion)
Definition: automation.h:38
void add_touch_event_callback(std::function< void(uint8_t, uint8_t, bool)> &&callback)
Add a callback to be notified when Nextion has a touch event.
Definition: nextion.cpp:189
void set_publish_state(std::function< void(Ts..., bool)> publish_state)
Definition: automation.h:106
NextionPublishFloatAction(NextionComponent *component)
Definition: automation.h:71
SleepTrigger(Nextion *nextion)
Definition: automation.h:24
Implementation of SPI Controller mode.
Definition: a01nyub.cpp:7
SetupTrigger(Nextion *nextion)
Definition: automation.h:17
TouchTrigger(Nextion *nextion)
Definition: automation.h:45
void set_send_to_nextion(std::function< void(Ts..., bool)> send_to_nextion)
Definition: automation.h:84
bool state
Definition: fan.h:34