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