ESPHome 2026.4.0-dev
Loading...
Searching...
No Matches
mitsubishi_cn105.h
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
5
7
9
11 public:
12 struct Status {
13 bool operator==(const Status &) const = default;
14
15 bool power_on{false};
17 float room_temperature{NAN};
18 };
19
20 explicit MitsubishiCN105(uart::UARTDevice &device) : device_(device) {}
21
22 void initialize();
23 bool update();
24
26 void set_update_interval(uint32_t interval_ms) { this->update_interval_ms_ = interval_ms; }
27
28 const Status &status() const { return this->status_; }
29 bool is_status_initialized() const { return !std::isnan(status_.room_temperature); }
30
31 protected:
42
43 void set_state_(State new_state);
44 void did_transition_(State to);
46 bool process_rx_packet_(uint8_t type, const uint8_t *payload, size_t len);
47 bool process_status_packet_(const uint8_t *payload, size_t len);
48 bool parse_status_payload_(uint8_t msg_type, const uint8_t *payload, size_t len);
49 bool parse_status_settings_(const uint8_t *payload, size_t len);
50 bool parse_status_room_temperature_(const uint8_t *payload, size_t len);
51 void reset_read_position_and_dump_buffer_(const char *prefix);
52 void send_packet_(const uint8_t *packet, size_t len);
53 void update_status_();
55 template<typename T> void send_packet_(const T &packet) { this->send_packet_(packet.data(), packet.size()); }
56 static bool should_transition(State from, State to);
57 static const LogString *state_to_string(State state);
58 static void dump_buffer_vv(const char *prefix, const uint8_t *data, size_t len);
59
62 std::optional<uint32_t> write_timeout_start_ms_;
63 std::optional<uint32_t> status_update_start_ms_;
67
68 private:
69 static constexpr size_t READ_BUFFER_SIZE = 32;
70 uint8_t read_buffer_[READ_BUFFER_SIZE];
71 uint8_t read_pos_{0};
72};
73
74} // namespace esphome::mitsubishi_cn105
static void dump_buffer_vv(const char *prefix, const uint8_t *data, size_t len)
bool process_status_packet_(const uint8_t *payload, size_t len)
void reset_read_position_and_dump_buffer_(const char *prefix)
static bool should_transition(State from, State to)
bool process_rx_packet_(uint8_t type, const uint8_t *payload, size_t len)
std::optional< uint32_t > status_update_start_ms_
std::optional< uint32_t > write_timeout_start_ms_
static const LogString * state_to_string(State state)
bool parse_status_settings_(const uint8_t *payload, size_t len)
void send_packet_(const uint8_t *packet, size_t len)
bool parse_status_payload_(uint8_t msg_type, const uint8_t *payload, size_t len)
void set_update_interval(uint32_t interval_ms)
bool parse_status_room_temperature_(const uint8_t *payload, size_t len)
uint16_t type
bool state
Definition fan.h:2
std::string size_t len
Definition helpers.h:1045
static void uint32_t
bool operator==(const Status &) const =default