ESPHome 2025.5.0
Loading...
Searching...
No Matches
hitachi_ac424.h
Go to the documentation of this file.
1#pragma once
2
3#include "esphome/core/log.h"
5
6namespace esphome {
7namespace hitachi_ac424 {
8
9const uint16_t HITACHI_AC424_HDR_MARK = 3416; // ac
10const uint16_t HITACHI_AC424_HDR_SPACE = 1604; // ac
11const uint16_t HITACHI_AC424_BIT_MARK = 463;
12const uint16_t HITACHI_AC424_ONE_SPACE = 1208;
13const uint16_t HITACHI_AC424_ZERO_SPACE = 372;
14const uint32_t HITACHI_AC424_MIN_GAP = 100000; // just a guess.
15const uint16_t HITACHI_AC424_FREQ = 38000; // Hz.
16
17const uint8_t HITACHI_AC424_BUTTON_BYTE = 11;
18const uint8_t HITACHI_AC424_BUTTON_POWER = 0x13;
19const uint8_t HITACHI_AC424_BUTTON_SLEEP = 0x31;
20const uint8_t HITACHI_AC424_BUTTON_MODE = 0x41;
21const uint8_t HITACHI_AC424_BUTTON_FAN = 0x42;
22const uint8_t HITACHI_AC424_BUTTON_TEMP_DOWN = 0x43;
23const uint8_t HITACHI_AC424_BUTTON_TEMP_UP = 0x44;
24const uint8_t HITACHI_AC424_BUTTON_SWINGV = 0x81;
25const uint8_t HITACHI_AC424_BUTTON_SWINGH = 0x8C;
27
28const uint8_t HITACHI_AC424_TEMP_BYTE = 13;
29const uint8_t HITACHI_AC424_TEMP_OFFSET = 2;
30const uint8_t HITACHI_AC424_TEMP_SIZE = 6;
31const uint8_t HITACHI_AC424_TEMP_MIN = 16; // 16C
32const uint8_t HITACHI_AC424_TEMP_MAX = 32; // 32C
33const uint8_t HITACHI_AC424_TEMP_FAN = 27; // 27C
34
35const uint8_t HITACHI_AC424_TIMER_BYTE = 15;
36
37const uint8_t HITACHI_AC424_MODE_BYTE = 25;
38const uint8_t HITACHI_AC424_MODE_FAN = 1;
39const uint8_t HITACHI_AC424_MODE_COOL = 3;
40const uint8_t HITACHI_AC424_MODE_DRY = 5;
41const uint8_t HITACHI_AC424_MODE_HEAT = 6;
42const uint8_t HITACHI_AC424_MODE_AUTO = 14;
43const uint8_t HITACHI_AC424_MODE_POWERFUL = 19;
44
46const uint8_t HITACHI_AC424_FAN_MIN = 1;
47const uint8_t HITACHI_AC424_FAN_LOW = 2;
48const uint8_t HITACHI_AC424_FAN_MEDIUM = 3;
49const uint8_t HITACHI_AC424_FAN_HIGH = 4;
50const uint8_t HITACHI_AC424_FAN_AUTO = 5;
51const uint8_t HITACHI_AC424_FAN_MAX = 6;
52const uint8_t HITACHI_AC424_FAN_MAX_DRY = 2;
53
54const uint8_t HITACHI_AC424_POWER_BYTE = 27;
55const uint8_t HITACHI_AC424_POWER_ON = 0xF1;
56const uint8_t HITACHI_AC424_POWER_OFF = 0xE1;
57
58const uint8_t HITACHI_AC424_SWINGH_BYTE = 35;
59const uint8_t HITACHI_AC424_SWINGH_OFFSET = 0; // Mask 0b00000xxx
60const uint8_t HITACHI_AC424_SWINGH_SIZE = 3; // Mask 0b00000xxx
61const uint8_t HITACHI_AC424_SWINGH_AUTO = 0; // 0b000
62const uint8_t HITACHI_AC424_SWINGH_RIGHT_MAX = 1; // 0b001
63const uint8_t HITACHI_AC424_SWINGH_RIGHT = 2; // 0b010
64const uint8_t HITACHI_AC424_SWINGH_MIDDLE = 3; // 0b011
65const uint8_t HITACHI_AC424_SWINGH_LEFT = 4; // 0b100
66const uint8_t HITACHI_AC424_SWINGH_LEFT_MAX = 5; // 0b101
67
68const uint8_t HITACHI_AC424_SWINGV_BYTE = 37;
69const uint8_t HITACHI_AC424_SWINGV_OFFSET = 5; // Mask 0b00x00000
70
72const uint8_t HITACHI_AC424_MILDEWPROOF_OFFSET = 2; // Mask 0b00000x00
73
74const uint16_t HITACHI_AC424_STATE_LENGTH = 53;
76
77#define HITACHI_AC424_GETBIT8(a, b) ((a) & ((uint8_t) 1 << (b)))
78#define HITACHI_AC424_GETBITS8(data, offset, size) \
79 (((data) & (((uint8_t) UINT8_MAX >> (8 - (size))) << (offset))) >> (offset))
80
82 public:
88
89 protected:
91 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x13, 0xEC, 0x5C, 0xA3, 0x00, 0xFF, 0x00,
92 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x53, 0xAC, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03,
93 0xFC, 0x01, 0xFE, 0x88, 0x77, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00};
94 uint8_t previous_temp_{27};
95 // Transmit via IR the state of this climate controller.
96 void transmit_state() override;
97 bool get_power_();
98 void set_power_(bool on);
99 uint8_t get_mode_();
100 void set_mode_(uint8_t mode);
101 void set_temp_(uint8_t celsius, bool set_previous = false);
102 uint8_t get_fan_();
103 void set_fan_(uint8_t speed);
104 void set_swing_v_toggle_(bool on);
105 bool get_swing_v_toggle_();
106 void set_swing_v_(bool on);
107 bool get_swing_v_();
108 void set_swing_h_(uint8_t position);
109 uint8_t get_swing_h_();
110 uint8_t get_button_();
111 void set_button_(uint8_t button);
112 // Handle received IR Buffer
113 bool on_receive(remote_base::RemoteReceiveData data) override;
114 bool parse_mode_(const uint8_t remote_state[]);
115 bool parse_temperature_(const uint8_t remote_state[]);
116 bool parse_fan_(const uint8_t remote_state[]);
117 bool parse_swing_(const uint8_t remote_state[]);
118 bool parse_state_frame_(const uint8_t frame[]);
119 void dump_state_(const char action[], uint8_t remote_state[]);
120};
121
122} // namespace hitachi_ac424
123} // namespace esphome
ClimateMode mode
The active mode of the climate device.
Definition climate.h:173
ClimateAction action
The active state of the climate device.
Definition climate.h:176
ClimateIR(float minimum_temperature, float maximum_temperature, float temperature_step=1.0f, bool supports_dry=false, bool supports_fan_only=false, std::set< climate::ClimateFanMode > fan_modes={}, std::set< climate::ClimateSwingMode > swing_modes={}, std::set< climate::ClimatePreset > presets={})
Definition climate_ir.h:26
bool on_receive(remote_base::RemoteReceiveData data) override
bool parse_fan_(const uint8_t remote_state[])
bool parse_mode_(const uint8_t remote_state[])
bool parse_temperature_(const uint8_t remote_state[])
void dump_state_(const char action[], uint8_t remote_state[])
bool parse_swing_(const uint8_t remote_state[])
uint8_t remote_state_[HITACHI_AC424_STATE_LENGTH]
bool parse_state_frame_(const uint8_t frame[])
void set_temp_(uint8_t celsius, bool set_previous=false)
float position
Definition cover.h:0
@ CLIMATE_SWING_OFF
The swing mode is set to Off.
@ CLIMATE_SWING_HORIZONTAL
The fan mode is set to Horizontal.
@ CLIMATE_FAN_MEDIUM
The fan mode is set to Medium.
@ CLIMATE_FAN_AUTO
The fan mode is set to Auto.
@ CLIMATE_FAN_LOW
The fan mode is set to Low.
@ CLIMATE_FAN_HIGH
The fan mode is set to High.
const uint8_t HITACHI_AC424_MODE_HEAT
const uint8_t HITACHI_AC424_FAN_MAX_DRY
const uint8_t HITACHI_AC424_SWINGH_MIDDLE
const uint8_t HITACHI_AC424_FAN_MIN
const uint8_t HITACHI_AC424_SWINGH_LEFT_MAX
const uint16_t HITACHI_AC424_HDR_MARK
const uint8_t HITACHI_AC424_BUTTON_SWINGV
const uint8_t HITACHI_AC424_FAN_AUTO
const uint8_t HITACHI_AC424_SWINGH_SIZE
const uint8_t HITACHI_AC424_SWINGH_RIGHT
const uint8_t HITACHI_AC424_MODE_DRY
const uint8_t HITACHI_AC424_POWER_OFF
const uint8_t HITACHI_AC424_MODE_AUTO
const uint8_t HITACHI_AC424_BUTTON_TEMP_UP
const uint16_t HITACHI_AC424_HDR_SPACE
const uint8_t HITACHI_AC424_MILDEWPROOF_BYTE
const uint8_t HITACHI_AC424_BUTTON_SWINGH
const uint8_t HITACHI_AC424_BUTTON_FAN
const uint8_t HITACHI_AC424_TEMP_FAN
const uint8_t HITACHI_AC424_BUTTON_SLEEP
const uint8_t HITACHI_AC424_BUTTON_TEMP_DOWN
const uint8_t HITACHI_AC424_MODE_FAN
const uint8_t HITACHI_AC424_SWINGV_BYTE
const uint8_t HITACHI_AC424_BUTTON_MILDEWPROOF
const uint8_t HITACHI_AC424_FAN_MAX
const uint8_t HITACHI_AC424_MODE_COOL
const uint8_t HITACHI_AC424_SWINGH_LEFT
const uint32_t HITACHI_AC424_MIN_GAP
const uint16_t HITACHI_AC424_ONE_SPACE
const uint8_t HITACHI_AC424_SWINGH_BYTE
const uint8_t HITACHI_AC424_TEMP_OFFSET
const uint8_t HITACHI_AC424_SWINGH_RIGHT_MAX
const uint8_t HITACHI_AC424_SWINGH_AUTO
const uint8_t HITACHI_AC424_TEMP_MAX
const uint8_t HITACHI_AC424_SWINGH_OFFSET
const uint8_t HITACHI_AC424_FAN_BYTE
const uint8_t HITACHI_AC424_BUTTON_MODE
const uint16_t HITACHI_AC424_ZERO_SPACE
const uint8_t HITACHI_AC424_MODE_POWERFUL
const uint8_t HITACHI_AC424_TEMP_BYTE
const uint8_t HITACHI_AC424_TEMP_MIN
const uint8_t HITACHI_AC424_TEMP_SIZE
const uint16_t HITACHI_AC424_STATE_LENGTH
const uint8_t HITACHI_AC424_FAN_MEDIUM
const uint8_t HITACHI_AC424_MILDEWPROOF_OFFSET
const uint8_t HITACHI_AC424_POWER_BYTE
const uint8_t HITACHI_AC424_FAN_HIGH
const uint8_t HITACHI_AC424_FAN_LOW
const uint16_t HITACHI_AC424_BITS
const uint8_t HITACHI_AC424_TIMER_BYTE
const uint16_t HITACHI_AC424_FREQ
const uint8_t HITACHI_AC424_MODE_BYTE
const uint16_t HITACHI_AC424_BIT_MARK
const uint8_t HITACHI_AC424_BUTTON_BYTE
const uint8_t HITACHI_AC424_BUTTON_POWER
const uint8_t HITACHI_AC424_SWINGV_OFFSET
const uint8_t HITACHI_AC424_POWER_ON
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7