ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
daikin.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace esphome::daikin {
6
7// Values for Daikin ARC43XXX IR Controllers
8// Temperature
9const uint8_t DAIKIN_TEMP_MIN = 10; // Celsius
10const uint8_t DAIKIN_TEMP_MAX = 30; // Celsius
11
12// Modes
13const uint8_t DAIKIN_MODE_AUTO = 0x00;
14const uint8_t DAIKIN_MODE_COOL = 0x30;
15const uint8_t DAIKIN_MODE_HEAT = 0x40;
16const uint8_t DAIKIN_MODE_DRY = 0x20;
17const uint8_t DAIKIN_MODE_FAN = 0x60;
18const uint8_t DAIKIN_MODE_OFF = 0x00;
19const uint8_t DAIKIN_MODE_ON = 0x01;
20
21// Fan Speed
22const uint8_t DAIKIN_FAN_AUTO = 0xA0;
23const uint8_t DAIKIN_FAN_SILENT = 0xB0;
24const uint8_t DAIKIN_FAN_1 = 0x30;
25const uint8_t DAIKIN_FAN_2 = 0x40;
26const uint8_t DAIKIN_FAN_3 = 0x50;
27const uint8_t DAIKIN_FAN_4 = 0x60;
28const uint8_t DAIKIN_FAN_5 = 0x70;
29
30// Presets: bit flags in byte 6 (comfort), byte 29 (powerful, quiet) and byte 32 (sensor, econo)
31const uint8_t DAIKIN_PRESET_COMFORT_ON = 0x10;
32const uint8_t DAIKIN_PRESET_POWERFUL_ON = 0x01;
33const uint8_t DAIKIN_PRESET_QUIET_ON = 0x20;
34const uint8_t DAIKIN_PRESET_ECONO_ON = 0x04;
35const uint8_t DAIKIN_PRESET_SENSOR_ON = 0x02;
36// The unit leaves powerful mode by itself after 20 minutes; mirror that in the entity
37const uint32_t DAIKIN_BOOST_DURATION_MS = 20 * 60 * 1000;
38// The three frames of one transmission arrive well inside this window
40
41// IR Transmission
48static constexpr remote_base::BitTimings DAIKIN_BIT_TIMINGS{
49 .bit_mark = DAIKIN_BIT_MARK, .one_space = DAIKIN_ONE_SPACE, .zero_space = DAIKIN_ZERO_SPACE};
51
52// Frame types (byte 4) and sizes
53const uint8_t DAIKIN_FRAME_TYPE_STATE = 0x00;
54const uint8_t DAIKIN_FRAME_TYPE_COMFORT = 0xC5;
55const uint8_t DAIKIN_STATE_FRAME_SIZE = 19;
56const uint8_t DAIKIN_COMFORT_FRAME_SIZE = 8;
57
59 public:
69
70 protected:
71 void setup() override;
72 void control(const climate::ClimateCall &call) override;
73 // Transmit via IR the state of this climate controller.
74 void transmit_state() override;
75 uint8_t operation_mode_() const;
76 uint16_t fan_speed_() const;
77 uint8_t temperature_() const;
78 void set_presets_(uint8_t *remote_state) const;
80 void update_boost_timer_(bool was_boost);
81 void cancel_boost_mode_();
82 // Handle received IR Buffer
83 bool on_receive(remote_base::RemoteReceiveData data) override;
84 bool parse_state_frame_(const uint8_t frame[]);
85
90};
91
92} // namespace esphome::daikin
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 parse_state_frame_(const uint8_t frame[])
Definition daikin.cpp:188
uint8_t temperature_() const
Definition daikin.cpp:136
PendingComfort
What the 0xC5 frame of the current transmission said about comfort, applied by the state frame.
Definition daikin.h:87
void control(const climate::ClimateCall &call) override
Definition daikin.cpp:26
uint8_t operation_mode_() const
Definition daikin.cpp:72
uint16_t fan_speed_() const
Definition daikin.cpp:99
PendingComfort pending_comfort_
Definition daikin.h:88
void transmit_state() override
Definition daikin.cpp:32
bool on_receive(remote_base::RemoteReceiveData data) override
Definition daikin.cpp:276
void set_presets_(uint8_t *remote_state) const
Definition daikin.cpp:149
void update_boost_timer_(bool was_boost)
Arms or cancels the boost timer when the preset moves into or out of boost.
Definition daikin.cpp:171
@ CLIMATE_PRESET_NONE
No preset is active.
@ CLIMATE_PRESET_COMFORT
Device is in comfort preset.
@ CLIMATE_PRESET_BOOST
Device is in boost preset.
@ CLIMATE_PRESET_ACTIVITY
Device is reacting to activity (e.g., movement sensors)
@ CLIMATE_PRESET_SLEEP
Device is prepared for sleep.
@ CLIMATE_PRESET_ECO
Device is running an energy-saving preset.
@ 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 DAIKIN_MODE_AUTO
Definition daikin.h:13
const uint8_t DAIKIN_COMFORT_FRAME_SIZE
Definition daikin.h:56
const uint8_t DAIKIN_MODE_OFF
Definition daikin.h:18
const uint8_t DAIKIN_PRESET_POWERFUL_ON
Definition daikin.h:32
const uint8_t DAIKIN_STATE_FRAME_SIZE
Definition daikin.h:55
const uint32_t DAIKIN_BIT_MARK
Definition daikin.h:45
const uint8_t DAIKIN_TEMP_MIN
Definition daikin.h:9
const uint8_t DAIKIN_FRAME_TYPE_COMFORT
Definition daikin.h:54
const uint8_t DAIKIN_PRESET_QUIET_ON
Definition daikin.h:33
const uint32_t DAIKIN_IR_FREQUENCY
Definition daikin.h:42
const uint8_t DAIKIN_FAN_4
Definition daikin.h:27
const uint8_t DAIKIN_FRAME_TYPE_STATE
Definition daikin.h:53
const uint32_t DAIKIN_HEADER_MARK
Definition daikin.h:43
const uint8_t DAIKIN_PRESET_SENSOR_ON
Definition daikin.h:35
const uint8_t DAIKIN_MODE_COOL
Definition daikin.h:14
const uint8_t DAIKIN_FAN_5
Definition daikin.h:28
const uint32_t DAIKIN_BOOST_DURATION_MS
Definition daikin.h:37
const uint8_t DAIKIN_PRESET_COMFORT_ON
Definition daikin.h:31
const uint32_t DAIKIN_MESSAGE_SPACE
Definition daikin.h:50
const uint32_t DAIKIN_HEADER_SPACE
Definition daikin.h:44
const uint8_t DAIKIN_FAN_SILENT
Definition daikin.h:23
const uint32_t DAIKIN_ZERO_SPACE
Definition daikin.h:47
const uint8_t DAIKIN_MODE_DRY
Definition daikin.h:16
const uint32_t DAIKIN_ONE_SPACE
Definition daikin.h:46
const uint8_t DAIKIN_FAN_2
Definition daikin.h:25
const uint8_t DAIKIN_MODE_ON
Definition daikin.h:19
const uint32_t DAIKIN_TRANSMISSION_MS
Definition daikin.h:39
const uint8_t DAIKIN_FAN_1
Definition daikin.h:24
const uint8_t DAIKIN_FAN_AUTO
Definition daikin.h:22
const uint8_t DAIKIN_FAN_3
Definition daikin.h:26
const uint8_t DAIKIN_TEMP_MAX
Definition daikin.h:10
const uint8_t DAIKIN_PRESET_ECONO_ON
Definition daikin.h:34
const uint8_t DAIKIN_MODE_HEAT
Definition daikin.h:15
const uint8_t DAIKIN_MODE_FAN
Definition daikin.h:17
static void uint32_t
A bit is a mark (one_mark or zero_mark, both bit_mark unless set) and a space (one_space or zero_spac...
Definition remote_base.h:29