ESPHome 2026.5.1
Loading...
Searching...
No Matches
daikin_brc.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace esphome::daikin_brc {
6
7// Values for Daikin BRC4CXXX IR Controllers
8// Temperature
9const uint8_t DAIKIN_BRC_TEMP_MIN_F = 60; // fahrenheit
10const uint8_t DAIKIN_BRC_TEMP_MAX_F = 90; // fahrenheit
11const float DAIKIN_BRC_TEMP_MIN_C = (DAIKIN_BRC_TEMP_MIN_F - 32) / 1.8; // fahrenheit
12const float DAIKIN_BRC_TEMP_MAX_C = (DAIKIN_BRC_TEMP_MAX_F - 32) / 1.8; // fahrenheit
13
14// Modes
15const uint8_t DAIKIN_BRC_MODE_AUTO = 0x30;
16const uint8_t DAIKIN_BRC_MODE_COOL = 0x20;
17const uint8_t DAIKIN_BRC_MODE_HEAT = 0x10;
18const uint8_t DAIKIN_BRC_MODE_DRY = 0x70;
19const uint8_t DAIKIN_BRC_MODE_FAN = 0x00;
20const uint8_t DAIKIN_BRC_MODE_OFF = 0x00;
21const uint8_t DAIKIN_BRC_MODE_ON = 0x01;
22
23// Fan Speed
24const uint8_t DAIKIN_BRC_FAN_1 = 0x10;
25const uint8_t DAIKIN_BRC_FAN_2 = 0x30;
26const uint8_t DAIKIN_BRC_FAN_3 = 0x50;
27const uint8_t DAIKIN_BRC_FAN_AUTO = 0xA0;
28
29// IR Transmission
37
38const uint8_t DAIKIN_BRC_IR_DRY_FAN_TEMP_F = 72; // Dry/Fan mode is always 17 Celsius.
39const uint8_t DAIKIN_BRC_IR_DRY_FAN_TEMP_C = (17 - 9) * 2; // Dry/Fan mode is always 17 Celsius.
40const uint8_t DAIKIN_BRC_IR_SWING_ON = 0x5;
41const uint8_t DAIKIN_BRC_IR_SWING_OFF = 0x6;
42const uint8_t DAIKIN_BRC_IR_MODE_BUTTON = 0x4; // This is set after a mode action
43
44// State Frame size
45const uint8_t DAIKIN_BRC_STATE_FRAME_SIZE = 15;
46// Preamble size
47const uint8_t DAIKIN_BRC_PREAMBLE_SIZE = 7;
48// Transmit Frame size - includes a preamble
50
52 public:
57
59 void set_fahrenheit(bool value) {
60 this->fahrenheit_ = value;
61 this->temperature_step_ = value ? 0.5f : 1.0f;
62 }
63
64 protected:
65 uint8_t mode_button_ = 0x00;
66 // Capture if the MODE was changed
67 void control(const climate::ClimateCall &call) override;
68 // Transmit via IR the state of this climate controller.
69 void transmit_state() override;
70 uint8_t alt_mode_();
71 uint8_t operation_mode_();
72 uint8_t fan_speed_swing_();
73 uint8_t temperature_();
74 // Handle received IR Buffer
76 bool parse_state_frame_(const uint8_t frame[]);
77 bool fahrenheit_{false};
78};
79
80} // namespace esphome::daikin_brc
This class is used to encode all control actions on a climate device.
Definition climate.h:34
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[])
void control(const climate::ClimateCall &call) override
Definition daikin_brc.cpp:8
void set_fahrenheit(bool value)
Set use of Fahrenheit units.
Definition daikin_brc.h:59
bool on_receive(remote_base::RemoteReceiveData data) override
@ CLIMATE_SWING_OFF
The swing mode is set to Off.
@ CLIMATE_SWING_BOTH
The fan mode is set to Both.
@ CLIMATE_FAN_MEDIUM
The fan mode is set to Medium.
@ CLIMATE_FAN_LOW
The fan mode is set to Low.
@ CLIMATE_FAN_HIGH
The fan mode is set to High.
const uint8_t DAIKIN_BRC_FAN_2
Definition daikin_brc.h:25
const uint8_t DAIKIN_BRC_FAN_AUTO
Definition daikin_brc.h:27
const uint8_t DAIKIN_BRC_MODE_FAN
Definition daikin_brc.h:19
const uint8_t DAIKIN_BRC_MODE_OFF
Definition daikin_brc.h:20
const uint32_t DAIKIN_BRC_ONE_SPACE
Definition daikin_brc.h:34
const uint8_t DAIKIN_BRC_IR_SWING_OFF
Definition daikin_brc.h:41
const uint8_t DAIKIN_BRC_TEMP_MIN_F
Definition daikin_brc.h:9
const uint32_t DAIKIN_BRC_HEADER_MARK
Definition daikin_brc.h:31
const uint8_t DAIKIN_BRC_FAN_1
Definition daikin_brc.h:24
const uint8_t DAIKIN_BRC_MODE_DRY
Definition daikin_brc.h:18
const uint8_t DAIKIN_BRC_TEMP_MAX_F
Definition daikin_brc.h:10
const uint8_t DAIKIN_BRC_IR_DRY_FAN_TEMP_C
Definition daikin_brc.h:39
const uint8_t DAIKIN_BRC_MODE_COOL
Definition daikin_brc.h:16
const uint8_t DAIKIN_BRC_TRANSMIT_FRAME_SIZE
Definition daikin_brc.h:49
const uint8_t DAIKIN_BRC_IR_MODE_BUTTON
Definition daikin_brc.h:42
const uint8_t DAIKIN_BRC_FAN_3
Definition daikin_brc.h:26
const uint32_t DAIKIN_BRC_HEADER_SPACE
Definition daikin_brc.h:32
const uint8_t DAIKIN_BRC_IR_SWING_ON
Definition daikin_brc.h:40
const uint8_t DAIKIN_BRC_PREAMBLE_SIZE
Definition daikin_brc.h:47
const uint8_t DAIKIN_BRC_MODE_AUTO
Definition daikin_brc.h:15
const float DAIKIN_BRC_TEMP_MIN_C
Definition daikin_brc.h:11
const uint32_t DAIKIN_BRC_BIT_MARK
Definition daikin_brc.h:33
const float DAIKIN_BRC_TEMP_MAX_C
Definition daikin_brc.h:12
const uint8_t DAIKIN_BRC_STATE_FRAME_SIZE
Definition daikin_brc.h:45
const uint32_t DAIKIN_BRC_MESSAGE_SPACE
Definition daikin_brc.h:36
const uint8_t DAIKIN_BRC_MODE_ON
Definition daikin_brc.h:21
const uint8_t DAIKIN_BRC_MODE_HEAT
Definition daikin_brc.h:17
const uint32_t DAIKIN_BRC_ZERO_SPACE
Definition daikin_brc.h:35
const uint32_t DAIKIN_BRC_IR_FREQUENCY
Definition daikin_brc.h:30
const uint8_t DAIKIN_BRC_IR_DRY_FAN_TEMP_F
Definition daikin_brc.h:38
static void uint32_t