ESPHome  2025.3.2
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
tormatic_cover.h
Go to the documentation of this file.
1 #pragma once
2 
5 
6 #include "tormatic_protocol.h"
7 
8 namespace esphome {
9 namespace tormatic {
10 
11 using namespace esphome::cover;
12 
13 class Tormatic : public cover::Cover, public uart::UARTDevice, public PollingComponent {
14  public:
15  void setup() override;
16  void loop() override;
17  void update() override;
18  void dump_config() override;
19  float get_setup_priority() const override { return setup_priority::DATA; };
20 
21  void set_open_duration(uint32_t duration) { this->open_duration_ = duration; }
22  void set_close_duration(uint32_t duration) { this->close_duration_ = duration; }
23 
24  void publish_state(bool save = true, uint32_t ratelimit = 0);
25 
26  cover::CoverTraits get_traits() override;
27 
28  protected:
29  void control(const cover::CoverCall &call) override;
30 
31  void recalibrate_duration_(GateStatus s);
32  void recompute_position_();
33  void control_position_(float target);
34  void stop_at_target_();
35 
36  template<typename T> void send_message_(MessageType t, T r);
37  template<typename T> optional<T> read_data_();
38  void drain_rx_(uint16_t n = 0);
39 
40  void request_gate_status_();
41  optional<GateStatus> read_gate_status_();
42 
43  void send_gate_command_(GateStatus s);
44  void handle_gate_status_(GateStatus s);
45 
46  uint32_t seq_tx_{0};
47 
48  GateStatus current_status_{PAUSED};
49 
50  uint32_t open_duration_{0};
51  uint32_t close_duration_{0};
52  uint32_t last_publish_time_{0};
53  uint32_t last_recompute_time_{0};
54  uint32_t direction_start_time_{0};
55  GateStatus next_command_{OPENED};
56  optional<float> target_position_{};
57 };
58 
59 } // namespace tormatic
60 } // namespace esphome
void setup()
void loop()
const float DATA
For components that import data from directly connected sensors like DHT.
Definition: component.cpp:19
Base class for all cover devices.
Definition: cover.h:111
This class simplifies creating components that periodically check a state.
Definition: component.h:283
void set_open_duration(uint32_t duration)
float get_setup_priority() const override
send_message_t * send_message_
Implementation of SPI Controller mode.
Definition: a01nyub.cpp:7
void set_close_duration(uint32_t duration)
uint8_t duration
Definition: msa3xx.h:430