ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
hitachi_ac344.h
Go to the documentation of this file.
1#pragma once
2
3#include "esphome/core/log.h"
5#ifdef USE_SWITCH
7#endif
8
10
11const uint16_t HITACHI_AC344_HDR_MARK = 3300; // ac
12const uint16_t HITACHI_AC344_HDR_SPACE = 1700; // ac
13const uint16_t HITACHI_AC344_BIT_MARK = 400;
14const uint16_t HITACHI_AC344_ONE_SPACE = 1250;
15const uint16_t HITACHI_AC344_ZERO_SPACE = 500;
16const uint32_t HITACHI_AC344_MIN_GAP = 100000; // just a guess.
17const uint16_t HITACHI_AC344_FREQ = 38000; // Hz.
18
19const uint8_t HITACHI_AC344_BUTTON_BYTE = 11;
20const uint8_t HITACHI_AC344_BUTTON_POWER = 0x13;
21const uint8_t HITACHI_AC344_BUTTON_SLEEP = 0x31;
22const uint8_t HITACHI_AC344_BUTTON_MODE = 0x41;
23const uint8_t HITACHI_AC344_BUTTON_FAN = 0x42;
24const uint8_t HITACHI_AC344_BUTTON_TEMP_DOWN = 0x43;
25const uint8_t HITACHI_AC344_BUTTON_TEMP_UP = 0x44;
26const uint8_t HITACHI_AC344_BUTTON_SWINGV = 0x81;
27const uint8_t HITACHI_AC344_BUTTON_SWINGH = 0x8C;
29
30const uint8_t HITACHI_AC344_TEMP_BYTE = 13;
31const uint8_t HITACHI_AC344_TEMP_OFFSET = 2;
32const uint8_t HITACHI_AC344_TEMP_SIZE = 6;
33const uint8_t HITACHI_AC344_TEMP_MIN = 16; // 16C
34const uint8_t HITACHI_AC344_TEMP_MAX = 32; // 32C
35const uint8_t HITACHI_AC344_TEMP_FAN = 27; // 27C
36
37const uint8_t HITACHI_AC344_TIMER_BYTE = 15;
38
39const uint8_t HITACHI_AC344_MODE_BYTE = 25;
40const uint8_t HITACHI_AC344_MODE_FAN = 1;
41const uint8_t HITACHI_AC344_MODE_COOL = 3;
42const uint8_t HITACHI_AC344_MODE_DRY = 5;
43const uint8_t HITACHI_AC344_MODE_HEAT = 6;
44const uint8_t HITACHI_AC344_MODE_AUTO = 7;
45
47const uint8_t HITACHI_AC344_FAN_MIN = 1;
48const uint8_t HITACHI_AC344_FAN_LOW = 2;
49const uint8_t HITACHI_AC344_FAN_MEDIUM = 3;
50const uint8_t HITACHI_AC344_FAN_HIGH = 4;
51const uint8_t HITACHI_AC344_FAN_AUTO = 5;
52const uint8_t HITACHI_AC344_FAN_MAX = 6;
53const uint8_t HITACHI_AC344_FAN_MAX_DRY = 2;
54
55const uint8_t HITACHI_AC344_POWER_BYTE = 27;
56const uint8_t HITACHI_AC344_POWER_ON = 0xF1;
57const uint8_t HITACHI_AC344_POWER_OFF = 0xE1;
58
59const uint8_t HITACHI_AC344_SWINGH_BYTE = 35;
60const uint8_t HITACHI_AC344_SWINGH_OFFSET = 0; // Mask 0b00000xxx
61const uint8_t HITACHI_AC344_SWINGH_SIZE = 3; // Mask 0b00000xxx
62const uint8_t HITACHI_AC344_SWINGH_AUTO = 0; // 0b000
63const uint8_t HITACHI_AC344_SWINGH_RIGHT_MAX = 1; // 0b001
64const uint8_t HITACHI_AC344_SWINGH_RIGHT = 2; // 0b010
65const uint8_t HITACHI_AC344_SWINGH_MIDDLE = 3; // 0b011
66const uint8_t HITACHI_AC344_SWINGH_LEFT = 4; // 0b100
67const uint8_t HITACHI_AC344_SWINGH_LEFT_MAX = 5; // 0b101
68
69const uint8_t HITACHI_AC344_SWINGV_BYTE = 37;
70const uint8_t HITACHI_AC344_SWINGV_OFFSET = 5; // Mask 0b00x00000
71
73const uint8_t HITACHI_AC344_MILDEWPROOF_OFFSET = 2; // Mask 0b00000x00
74
75const uint16_t HITACHI_AC344_STATE_LENGTH = 43;
77
78#define GETBIT8(a, b) ((a) & ((uint8_t) 1 << (b)))
79#define GETBITS8(data, offset, size) (((data) & (((uint8_t) UINT8_MAX >> (8 - (size))) << (offset))) >> (offset))
80
82 public:
89 bool get_mildew_proof() const;
91 void set_mildew_proof(bool on);
92#ifdef USE_SWITCH
94#endif
95
96 void setup() override;
97
98 protected:
99 uint8_t remote_state_[HITACHI_AC344_STATE_LENGTH]{0x01, 0x10, 0x00, 0x40, 0x00, 0xFF, 0x00, 0xCC, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
102 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
103 uint8_t previous_temp_{27};
104#ifdef USE_SWITCH
106#endif
107 // Transmit via IR the state of this climate controller.
108 void transmit_state() override;
109 // The frame with the button byte the remote sends for this change
110 void transmit_state_(uint8_t button);
112 bool get_power_();
113 void set_power_(bool on);
114 uint8_t get_mode_();
115 void set_mode_(uint8_t mode);
116 void set_temp_(uint8_t celsius, bool set_previous = true);
117 uint8_t get_fan_();
118 void set_fan_(uint8_t speed);
119 void set_swing_v_(bool on);
120 bool get_swing_v_();
121 void set_swing_h_(uint8_t position);
122 uint8_t get_swing_h_();
123 void set_button_(uint8_t button);
124 // Handle received IR Buffer
125 bool on_receive(remote_base::RemoteReceiveData data) override;
126 bool parse_mode_(const uint8_t remote_state[]);
127 bool parse_temperature_(const uint8_t remote_state[]);
128 bool parse_fan_(const uint8_t remote_state[]);
129 bool parse_swing_(const uint8_t remote_state[]);
130 bool parse_state_frame_(const uint8_t frame[]);
131 void dump_state_(const char action[], uint8_t remote_state[]);
132};
133
134} // namespace esphome::hitachi_ac344
ClimateMode mode
The active mode of the climate device.
Definition climate.h:317
ClimateAction action
The active state of the climate device.
Definition climate.h:320
ClimateIR(float minimum_temperature, float maximum_temperature, float temperature_step=1.0f, bool supports_dry=false, bool supports_fan_only=false, climate::ClimateFanModeMask fan_modes=climate::ClimateFanModeMask(), climate::ClimateSwingModeMask swing_modes=climate::ClimateSwingModeMask(), climate::ClimatePresetMask presets=climate::ClimatePresetMask())
Definition climate_ir.h:25
bool on_receive(remote_base::RemoteReceiveData data) override
void dump_state_(const char action[], uint8_t remote_state[])
bool parse_temperature_(const uint8_t remote_state[])
bool parse_mode_(const uint8_t remote_state[])
void set_mildew_proof_switch(switch_::Switch *sw)
void set_temp_(uint8_t celsius, bool set_previous=true)
bool parse_fan_(const uint8_t remote_state[])
uint8_t remote_state_[HITACHI_AC344_STATE_LENGTH]
bool parse_swing_(const uint8_t remote_state[])
bool parse_state_frame_(const uint8_t frame[])
void set_mildew_proof(bool on)
Mildew proof keeps the fan running after power off to dry the unit.
Base class for all switches.
Definition switch.h:43
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_SWING_VERTICAL
The fan mode is set to Vertical.
@ CLIMATE_SWING_BOTH
The fan mode is set to Both.
@ 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_QUIET
The fan mode is set to Quiet.
@ CLIMATE_FAN_HIGH
The fan mode is set to High.
const uint8_t HITACHI_AC344_SWINGV_OFFSET
const uint8_t HITACHI_AC344_MILDEWPROOF_BYTE
const uint8_t HITACHI_AC344_SWINGH_LEFT
const uint8_t HITACHI_AC344_TEMP_MIN
const uint8_t HITACHI_AC344_BUTTON_FAN
const uint16_t HITACHI_AC344_BIT_MARK
const uint8_t HITACHI_AC344_BUTTON_BYTE
const uint8_t HITACHI_AC344_TEMP_BYTE
const uint8_t HITACHI_AC344_SWINGH_RIGHT_MAX
const uint8_t HITACHI_AC344_MODE_BYTE
const uint8_t HITACHI_AC344_SWINGV_BYTE
const uint16_t HITACHI_AC344_ZERO_SPACE
const uint8_t HITACHI_AC344_SWINGH_SIZE
const uint8_t HITACHI_AC344_FAN_MIN
const uint8_t HITACHI_AC344_BUTTON_POWER
const uint8_t HITACHI_AC344_MILDEWPROOF_OFFSET
const uint8_t HITACHI_AC344_BUTTON_SWINGH
const uint8_t HITACHI_AC344_FAN_MAX
const uint8_t HITACHI_AC344_MODE_DRY
const uint16_t HITACHI_AC344_HDR_SPACE
const uint8_t HITACHI_AC344_BUTTON_MILDEWPROOF
const uint8_t HITACHI_AC344_FAN_MAX_DRY
const uint8_t HITACHI_AC344_MODE_FAN
const uint16_t HITACHI_AC344_FREQ
const uint8_t HITACHI_AC344_SWINGH_AUTO
const uint8_t HITACHI_AC344_BUTTON_TEMP_DOWN
const uint8_t HITACHI_AC344_SWINGH_RIGHT
const uint8_t HITACHI_AC344_MODE_AUTO
const uint8_t HITACHI_AC344_BUTTON_TEMP_UP
const uint8_t HITACHI_AC344_MODE_COOL
const uint16_t HITACHI_AC344_STATE_LENGTH
const uint8_t HITACHI_AC344_SWINGH_OFFSET
const uint8_t HITACHI_AC344_POWER_ON
const uint8_t HITACHI_AC344_TEMP_SIZE
const uint8_t HITACHI_AC344_BUTTON_SLEEP
const uint8_t HITACHI_AC344_FAN_HIGH
const uint8_t HITACHI_AC344_MODE_HEAT
const uint8_t HITACHI_AC344_BUTTON_MODE
const uint8_t HITACHI_AC344_FAN_BYTE
const uint16_t HITACHI_AC344_BITS
const uint16_t HITACHI_AC344_HDR_MARK
const uint8_t HITACHI_AC344_TIMER_BYTE
const uint8_t HITACHI_AC344_SWINGH_LEFT_MAX
const uint8_t HITACHI_AC344_TEMP_MAX
const uint8_t HITACHI_AC344_TEMP_OFFSET
const uint8_t HITACHI_AC344_FAN_LOW
const uint32_t HITACHI_AC344_MIN_GAP
const uint8_t HITACHI_AC344_FAN_MEDIUM
const uint8_t HITACHI_AC344_POWER_OFF
const uint8_t HITACHI_AC344_SWINGH_MIDDLE
const uint8_t HITACHI_AC344_POWER_BYTE
const uint8_t HITACHI_AC344_FAN_AUTO
const uint16_t HITACHI_AC344_ONE_SPACE
const uint8_t HITACHI_AC344_SWINGH_BYTE
const uint8_t HITACHI_AC344_BUTTON_SWINGV
const uint8_t HITACHI_AC344_TEMP_FAN
static void uint32_t