Climate IR driver for the Daikin BRCxxxx remotes?

Wondering if anyone has worked with this specific remote model for Daikin Heatpumps? It is not the same as the one for the Daikin driver, that one is for the ARC family of remotes. I actually have both the BRC remote is for the in-ceiling cassette style units.

I have started reverse engineering the protocol and it appears to be a good bit different then the one used for the ARC remotes. I have identified the temperature byte and was a little shocked it was actually the fahrenheit value given the ARC is in celsius and Daiken is a Japanese company.

Anyhow if someone has already done this work that would be great. Otherwise I will finish reverse engineering the protocol and try and code my own driver for it to work with esphome.

1 Like

Hi Jeff, did you have any success getting BRC remotes to work with ESPHome? I don’t believe you have to reverse engineer the protocol from scratch. The code from DannySTW (https://github.com/danny-source/Arduino_DY_IRDaikin) offers support for both ARC and BRC remotes. Maybe this can offer a start to get the ESPHome Climate component expanded to support BRC remote. Really would love to see this happening.

Actually I found that link right after i finished my reverse engineering, so it made for a nice check. I have finished my BRC code but I need to clean up my repo so I can submit a proper PR.

Amazing news. Looking forward to seeing your code committed. I have already prepared a bunch of FK-UFO-R6 remotes with ESP-12S chips. They do work great for my wall-mounted ACs that have ARC remotes. Unfortunately, most of my ACs are ceiling-mounted units with BRC remotes.

Loaded your code as an external component:

First tests on the receiver side look promising. Off, On (cool) and fan speed are coming through fine. The temperature seems to read by default in increments of 2 degrees instead of 1degree.

Yeah I think the temp. changes are a bit odd. Particularly when it comes to converting between C and F. Surprising thing I found with the BRC is that the protocol is using F, but their other units use C. Weird.

Have a few updates I am testing locally and will try and put up a cleaned version in to GitHub this weekend if I find some free time.

Here is an example of the output logs of ESPHome. Started with my remote set to off and to the highest temperature available (32°C on my remote). I then pressed the ‘down’ button on the remote a few times.

It does read the temperature changes in decrements of 2°C (instead of 1°C) and starting at 46°C (instead of 32°C). However, it doesn’t update the target temperature accordingly. In my case the target value gets set to 15.56 which is as you mentioned presumably converted from 60 °F ( (60°F − 32) × 5/9 = 15.556°C ).

For reference, here is an example of the output logs for a second device but using the standard ESPHome daikin component with an ARC remote. The target temperature starts at 31°C even though the temperature on the remote starts at 32°C, but from 31°C degrees onward the target temperature nicely follows the temperature shown on the remote’s display.

So I suspect I know what is happening here and if it is the case I find it a very odd choice for Daikin. I think the remotes are different based on region. I mentioned I was surprised when I did my reverse engineering that the data for the temp. was actually in degrees F and not C. Particularly for a company not based in US and also knowing their other remote I have is in C. Then I noticed that my remote has no obvious way to change the display from F to C like the ARC version. I suspect your remote unit is slightly different and actually sending the encoded temp. in degrees C not F like mine. Very odd choice for them to not communicate in a set unit and just do conversion in display.

The reason the temp is showing 15.56C is because 60F is the min. temp allowed so anything below that is sent as 60F.

My remotes are marked BRC4C163, are yours the same? I suspect not.

Mine are BRC4C154. I do live in Thailand, where these are quite common.

My remote does say “Made in Philippines”

Yep pretty sure the remote is sending the temp in C. That number you circled is the RAW value of the binary data. On my remote that number is the actually temp in degrees F. So I am expecting it in F, but your remote actually sends it in C but will a little bit of encoding for decimals. I will probably have to 1 figure out why it is 46 and not 64 if the input was 32. Second I would have to have a property that tells me if your remote is in C or F.

Can you do me a favor and do a test like you did before with the temperature moving from 32C (Assume this is the max temp your unit allows) to the lowest temp your system allows? You can just give me the last few degree values you get.
Thanks

EDIT: Guessing your lowest temp setting is 16C, does it move in 0.5 increments?

Yes, my control goes from 32 to 16 but in 1-degree increments. The log below shows a few on off on off, before cycling from 32 to 16. I did keep pressing ‘down’ a few more times when the temperature was already at 16.

INFO Reading configuration /config/esphome/ir-office.yaml...
INFO Updating https://github.com/hagak/esphome@dev
INFO Starting log output from ir-office.local using esphome API
INFO Successfully connected to ir-office.local
[17:56:02][I][app:102]: ESPHome version 2022.6.3 compiled on Aug 12 2022, 07:50:16
[17:56:02][C][status_led:019]: Status LED:
[17:56:02][C][status_led:020]:   Pin: GPIO0
[17:56:02][C][wifi:491]: WiFi:
[17:56:02][C][wifi:353]:   Local MAC: xxx
[17:56:02][C][wifi:354]:   SSID: xxx
[17:56:02][C][wifi:355]:   IP Address: xxx
[17:56:02][C][wifi:356]:   BSSID: xxxx
[17:56:02][C][wifi:358]:   Hostname: 'ir-office'
[17:56:02][C][wifi:360]:   Signal strength: -59 dB ▂▄▆█
[17:56:02][C][wifi:364]:   Channel: 1
[17:56:02][C][wifi:365]:   Subnet: 255.255.255.0
[17:56:02][C][wifi:366]:   Gateway: xxxx
[17:56:02][C][wifi:367]:   DNS1: xxxx
[17:56:02][C][wifi:368]:   DNS2: 0.0.0.0
[17:56:02][C][logger:275]: Logger:
[17:56:02][C][logger:276]:   Level: DEBUG
[17:56:02][C][logger:277]:   Log Baud Rate: 0
[17:56:02][C][logger:278]:   Hardware UART: UART0
[17:56:02][C][uart.arduino_esp8266:102]: UART Bus:
[17:56:02][C][uart.arduino_esp8266:103]:   TX Pin: GPIO1
[17:56:02][C][uart.arduino_esp8266:104]:   RX Pin: GPIO3
[17:56:02][C][uart.arduino_esp8266:106]:   RX Buffer Size: 256
[17:56:02][C][uart.arduino_esp8266:108]:   Baud Rate: 9600 baud
[17:56:02][C][uart.arduino_esp8266:109]:   Data Bits: 8
[17:56:02][C][uart.arduino_esp8266:110]:   Parity: NONE
[17:56:02][C][uart.arduino_esp8266:111]:   Stop bits: 1
[17:56:02][C][uart.arduino_esp8266:113]:   Using hardware serial interface.
[17:56:02][C][status:034]: Status Binary Sensor 'Office AC Link'
[17:56:02][C][status:034]:   Device Class: 'connectivity'
[17:56:02][C][remote_transmitter:018]: Remote Transmitter...
[17:56:02][C][remote_transmitter:019]:   Carrier Duty: 50%
[17:56:02][C][remote_transmitter:020]:   Pin: GPIO4
[17:56:02][C][climate_ir:076]: IR Climate 'Office AC'
[17:56:02][C][climate_ir:077]:   Min. Temperature: 15.6°C
[17:56:02][C][climate_ir:078]:   Max. Temperature: 32.2°C
[17:56:02][C][climate_ir:079]:   Supports HEAT: NO
[17:56:02][C][climate_ir:080]:   Supports COOL: YES
[17:56:02][C][tuya.sensor:028]: Tuya Sensor 'Office Temperature'
[17:56:02][C][tuya.sensor:028]:   Device Class: 'temperature'
[17:56:02][C][tuya.sensor:028]:   State Class: 'measurement'
[17:56:02][C][tuya.sensor:028]:   Unit of Measurement: '°C'
[17:56:02][C][tuya.sensor:028]:   Accuracy Decimals: 1
[17:56:02][C][tuya.sensor:029]:   Sensor has datapoint ID 101
[17:56:02][C][tuya.sensor:028]: Tuya Sensor 'Office Humidity'
[17:56:02][C][tuya.sensor:028]:   Device Class: 'humidity'
[17:56:02][C][tuya.sensor:028]:   State Class: 'measurement'
[17:56:02][C][tuya.sensor:028]:   Unit of Measurement: '%'
[17:56:02][C][tuya.sensor:028]:   Accuracy Decimals: 0
[17:56:02][C][tuya.sensor:029]:   Sensor has datapoint ID 102
[17:56:02][C][remote_receiver.esp8266:060]: Remote Receiver:
[17:56:02][C][remote_receiver.esp8266:061]:   Pin: GPIO5
[17:56:02][C][remote_receiver.esp8266:066]:   Buffer Size: 1000
[17:56:02][C][remote_receiver.esp8266:067]:   Tolerance: 25%
[17:56:02][C][remote_receiver.esp8266:068]:   Filter out pulses shorter than: 50 us
[17:56:02][C][remote_receiver.esp8266:069]:   Signal is done after 10000 us of no changes
[17:56:02][C][captive_portal:088]: Captive Portal:
[17:56:02][C][mdns:084]: mDNS:
[17:56:02][C][mdns:085]:   Hostname: ir-office
[17:56:02][C][ota:085]: Over-The-Air Updates:
[17:56:02][C][ota:086]:   Address: ir-office.local:8266
[17:56:02][C][ota:089]:   Using Password.
[17:56:02][C][api:138]: API Server:
[17:56:02][C][api:139]:   Address: ir-office.local:6053
[17:56:02][C][api:141]:   Using noise encryption: YES
[17:56:02][C][wifi_info:009]: WifiInfo IPAddress 'Office AC IP Address'
[17:56:02][C][tuya:033]: Tuya:
[17:56:02][C][tuya:050]:   Datapoint 101: int value (value: 317)
[17:56:02][C][tuya:050]:   Datapoint 102: int value (value: 54)
[17:56:02][C][tuya:068]:   Product: '{"p":"4qkxesklj5uch9zt","v":"1.0.0","m":0,"n":0,"ir":"9.8","low":0}'
[17:56:02][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0007 06C3
[17:56:02][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0003 0000 0008 0078 0008 0011 0006 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0007 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0003 0000 0025 000D 000B 000D 0018 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0002 0000 0008 001A 0008 06C3
[17:56:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0006 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0007 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0005 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0002 0000 0008 000F 000D 06C3
[17:56:04][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0005 06C3
[17:56:47][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:56:56][D][tuya:288]: Datapoint 101 update to 317
[17:56:56][D][sensor:124]: 'Office Temperature': Sending state 31.70000 °C with 1 decimals of accuracy
[17:56:56][D][climate:385]: 'Office AC' - Sending state:
[17:56:56][D][climate:388]:   Mode: OFF
[17:56:56][D][climate:393]:   Fan Mode: LOW
[17:56:56][D][climate:405]:   Swing Mode: OFF
[17:56:56][D][climate:408]:   Current Temperature: 31.70°C
[17:56:56][D][climate:414]:   Target Temperature: 15.56°C
[17:56:56][D][tuya:288]: Datapoint 102 update to 54
[17:56:56][D][sensor:124]: 'Office Humidity': Sending state 54.00000 % with 0 decimals of accuracy
[17:57:42][D][remote.pronto:229]: Received Pronto: data=0000 006D 0006 0000 0011 0011 0010 0011 0010 0011 0010 0011 0010 0011 0010 06C3
[17:57:42][D][remote.pronto:229]: Received Pronto: data=0000 006D 0042 0000 0085 0042 0011 0031 0011 0011 0010 0011 0010 0011 0010 0032 0010 0011 0010 0011 0010 0011 0010 0011 0010 0031 0011 0011 0010 0031 0011 0031 0011 0011 0010 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0032 001
[17:57:42][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400A300
[17:57:42][D][remote.pronto:229]: Received Pronto: data=0000 006D 0042 0000 0084 0043 0010 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0032 0010 0012 000F 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000
[17:57:42][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400426C
[17:57:43][D][remote.pronto:229]: Received Pronto: data=0000 006D 009A 0000 0084 0043 0010 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0032 0010 0012 000F 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000
[17:57:43][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400009C
[17:57:44][D][remote.pronto:229]: Received Pronto: data=0000 006D 0006 0000 0011 0011 0010 0011 0010 0011 0010 0011 0010 0011 0010 06C3
[17:57:44][D][remote.pronto:229]: Received Pronto: data=0000 006D 0042 0000 0085 0042 0011 0031 0011 0011 0010 0011 0010 0011 0010 0031 0011 0011 0010 0011 0010 0011 0010 0011 0010 0031 0011 0011 0010 0031 0011 0031 0011 0011 0010 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0032 001
[17:57:44][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400A300
[17:57:44][D][remote.pronto:229]: Received Pronto: data=0000 006D 0042 0000 0084 0043 0010 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0032 0010 0012 000F 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000
[17:57:44][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400426C
[17:57:44][D][remote.pronto:229]: Received Pronto: data=0000 006D 009A 0000 0084 0043 0010 0032 0010 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0032 0010 0012 000F 0032 0010 0032 0010 0012 000F 0032 0010 0032 0010 0032 0010 0032 0010 0032 0010 0012 000F 0012 000F 0032 0010 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000F 0012 000
[17:57:44][D][remote.panasonic:070]: Received Panasonic: address=0x885B, command=0xE400001C
[17:57:56][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 000F 0044 0010 001A 0010 001B 000F 001A 0010 0043 0010 001A 0010 0019 0010 001A 0010 001A 0010 0044 000F 001A 0010 0043 0010 0043 0010 001A 0010 0043 0010 0043 0010 0043 0010 0043 0010 0043 0010 001A 0010 0044 000F 001A 0010 001A 0010 001B 000F 001A 0010 001A 0010 001B 000F 0044 000F 0043 0010 001A 0010 001A 0010 001A 0010 001A 0010 001A 0010 0044 000F 001A 000F 001A 0010 001A 0010 0019 0010 001B 000
[17:57:56][C][daikin_brc.climate:257]: Found HEADER
[17:57:56][C][daikin_brc.climate:190]: Temp 46
[17:57:56][D][climate:385]: 'Office AC' - Sending state:
[17:57:56][D][climate:388]:   Mode: OFF
[17:57:56][D][climate:393]:   Fan Mode: LOW
[17:57:56][D][climate:405]:   Swing Mode: OFF
[17:57:56][D][climate:408]:   Current Temperature: 31.70°C
[17:57:56][D][climate:414]:   Target Temperature: 15.56°C
[17:57:56][D][tuya:288]: Datapoint 101 update to 316
[17:57:56][D][sensor:124]: 'Office Temperature': Sending state 31.60000 °C with 1 decimals of accuracy
[17:57:56][D][climate:385]: 'Office AC' - Sending state:
[17:57:56][D][climate:388]:   Mode: OFF
[17:57:56][D][climate:393]:   Fan Mode: LOW
[17:57:56][D][climate:405]:   Swing Mode: OFF
[17:57:56][D][climate:408]:   Current Temperature: 31.60°C
[17:57:56][D][climate:414]:   Target Temperature: 15.56°C
[17:57:56][D][tuya:288]: Datapoint 102 update to 55
[17:57:56][D][sensor:124]: 'Office Humidity': Sending state 55.00000 % with 0 decimals of accuracy
[17:57:59][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0052 000F 0044 0010 001A 000F 001B 000E 001B 000F 0043 0011 001A 000F 001A 0010 001A 000F 001A 000F 0043 0011 001A 000F 0043 0011 0043 0011 001A 000F 0043 000F 0044 000F 0044 000F 0044 000F 0044 000F 001C 000E 0045 000E 001B 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0044 000F 0045 000E 001C 000E 001C 000E 001C 000E 001B 000E 001C 000E 0044 000F 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:57:59][C][daikin_brc.climate:257]: Found HEADER
[17:57:59][C][daikin_brc.climate:190]: Temp 46
[17:57:59][D][climate:385]: 'Office AC' - Sending state:
[17:57:59][D][climate:388]:   Mode: COOL
[17:57:59][D][climate:393]:   Fan Mode: LOW
[17:57:59][D][climate:405]:   Swing Mode: OFF
[17:57:59][D][climate:408]:   Current Temperature: 31.60°C
[17:57:59][D][climate:414]:   Target Temperature: 15.56°C
[17:58:00][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0022 06C3
[17:58:00][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:58:00][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:58:01][D][remote.pronto:229]: Received Pronto: data=0000 006D 0002 0000 0008 00B9 0006 06C3
[17:58:01][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0006 06C3
[17:58:01][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:58:02][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0005 06C3
[17:58:02][D][remote.pronto:229]: Received Pronto: data=0000 006D 0001 0000 0008 06C3
[17:58:02][D][remote.pronto:229]: Received Pronto: data=0000 006D 0003 0000 0007 0019 000C 00A2 0008 06C3
[17:58:03][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C5 0050 0011 0042 0011 001A 000F 001A 000F 001A 000F 0042 0011 001A 000F 001A 000F 001A 000F 001A 000F 0043 0011 001A 000F 0043 0011 0043 0011 001A 000F 0043 0010 0043 0010 0043 0010 0043 0010 0044 000F 001B 000F 0044 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000F 0044 000F 0044 000F 001A 000F 001B 000F 001B 000F 001A 000F 001B 000F 0044 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000
[17:58:03][C][daikin_brc.climate:257]: Found HEADER
[17:58:03][C][daikin_brc.climate:190]: Temp 46
[17:58:03][D][climate:385]: 'Office AC' - Sending state:
[17:58:03][D][climate:388]:   Mode: OFF
[17:58:03][D][climate:393]:   Fan Mode: LOW
[17:58:03][D][climate:405]:   Swing Mode: OFF
[17:58:03][D][climate:408]:   Current Temperature: 31.60°C
[17:58:03][D][climate:414]:   Target Temperature: 15.56°C
[17:58:05][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C8 0050 0011 0042 0011 001A 0010 001A 000F 001A 000F 0042 0011 001A 000F 001A 000F 001A 000F 001A 000F 0043 0011 001A 000F 0043 0011 0043 0011 001A 000F 0043 0010 0043 0010 0043 0010 0043 0010 0044 000F 001B 000F 0044 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000F 0044 000F 0044 000F 001B 000F 001B 000F 001B 000F 001B 000F 001B 000F 0044 000F 001B 000F 001B 000F 001A 000F 001B 000F 001B 000
[17:58:05][C][daikin_brc.climate:257]: Found HEADER
[17:58:05][C][daikin_brc.climate:190]: Temp 46
[17:58:05][D][climate:385]: 'Office AC' - Sending state:
[17:58:05][D][climate:388]:   Mode: COOL
[17:58:05][D][climate:393]:   Fan Mode: LOW
[17:58:05][D][climate:405]:   Swing Mode: OFF
[17:58:05][D][climate:408]:   Current Temperature: 31.60°C
[17:58:05][D][climate:414]:   Target Temperature: 15.56°C
[17:58:13][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:13][C][daikin_brc.climate:257]: Found HEADER
[17:58:13][C][daikin_brc.climate:190]: Temp 44
[17:58:13][D][climate:385]: 'Office AC' - Sending state:
[17:58:13][D][climate:388]:   Mode: COOL
[17:58:13][D][climate:393]:   Fan Mode: LOW
[17:58:13][D][climate:405]:   Swing Mode: OFF
[17:58:13][D][climate:408]:   Current Temperature: 31.60°C
[17:58:13][D][climate:414]:   Target Temperature: 15.56°C
[17:58:15][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001B 000E 001C 000
[17:58:15][C][daikin_brc.climate:257]: Found HEADER
[17:58:15][C][daikin_brc.climate:190]: Temp 42
[17:58:15][D][climate:385]: 'Office AC' - Sending state:
[17:58:15][D][climate:388]:   Mode: COOL
[17:58:15][D][climate:393]:   Fan Mode: LOW
[17:58:15][D][climate:405]:   Swing Mode: OFF
[17:58:15][D][climate:408]:   Current Temperature: 31.60°C
[17:58:15][D][climate:414]:   Target Temperature: 15.56°C
[17:58:17][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:17][C][daikin_brc.climate:257]: Found HEADER
[17:58:17][C][daikin_brc.climate:190]: Temp 40
[17:58:17][D][climate:385]: 'Office AC' - Sending state:
[17:58:17][D][climate:388]:   Mode: COOL
[17:58:17][D][climate:393]:   Fan Mode: LOW
[17:58:17][D][climate:405]:   Swing Mode: OFF
[17:58:17][D][climate:408]:   Current Temperature: 31.60°C
[17:58:17][D][climate:414]:   Target Temperature: 15.56°C
[17:58:19][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:19][C][daikin_brc.climate:257]: Found HEADER
[17:58:19][C][daikin_brc.climate:190]: Temp 38
[17:58:19][D][climate:385]: 'Office AC' - Sending state:
[17:58:19][D][climate:388]:   Mode: COOL
[17:58:19][D][climate:393]:   Fan Mode: LOW
[17:58:19][D][climate:405]:   Swing Mode: OFF
[17:58:19][D][climate:408]:   Current Temperature: 31.60°C
[17:58:19][D][climate:414]:   Target Temperature: 15.56°C
[17:58:20][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001B 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:21][C][daikin_brc.climate:257]: Found HEADER
[17:58:21][C][daikin_brc.climate:190]: Temp 36
[17:58:21][D][climate:385]: 'Office AC' - Sending state:
[17:58:21][D][climate:388]:   Mode: COOL
[17:58:21][D][climate:393]:   Fan Mode: LOW
[17:58:21][D][climate:405]:   Swing Mode: OFF
[17:58:21][D][climate:408]:   Current Temperature: 31.60°C
[17:58:21][D][climate:414]:   Target Temperature: 15.56°C
[17:58:22][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001B 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001B 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:22][C][daikin_brc.climate:257]: Found HEADER
[17:58:22][C][daikin_brc.climate:190]: Temp 34
[17:58:22][D][climate:385]: 'Office AC' - Sending state:
[17:58:22][D][climate:388]:   Mode: COOL
[17:58:22][D][climate:393]:   Fan Mode: LOW
[17:58:22][D][climate:405]:   Swing Mode: OFF
[17:58:22][D][climate:408]:   Current Temperature: 31.60°C
[17:58:22][D][climate:414]:   Target Temperature: 15.56°C
[17:58:24][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0044 000F 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:24][C][daikin_brc.climate:257]: Found HEADER
[17:58:24][C][daikin_brc.climate:190]: Temp 32
[17:58:24][D][climate:385]: 'Office AC' - Sending state:
[17:58:24][D][climate:388]:   Mode: COOL
[17:58:24][D][climate:393]:   Fan Mode: LOW
[17:58:24][D][climate:405]:   Swing Mode: OFF
[17:58:24][D][climate:408]:   Current Temperature: 31.60°C
[17:58:24][D][climate:414]:   Target Temperature: 15.56°C
[17:58:25][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:25][C][daikin_brc.climate:257]: Found HEADER
[17:58:25][C][daikin_brc.climate:190]: Temp 30
[17:58:25][D][climate:385]: 'Office AC' - Sending state:
[17:58:25][D][climate:388]:   Mode: COOL
[17:58:25][D][climate:393]:   Fan Mode: LOW
[17:58:25][D][climate:405]:   Swing Mode: OFF
[17:58:25][D][climate:408]:   Current Temperature: 31.60°C
[17:58:25][D][climate:414]:   Target Temperature: 15.56°C
[17:58:27][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001B 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:27][C][daikin_brc.climate:257]: Found HEADER
[17:58:27][C][daikin_brc.climate:190]: Temp 28
[17:58:27][D][climate:385]: 'Office AC' - Sending state:
[17:58:27][D][climate:388]:   Mode: COOL
[17:58:27][D][climate:393]:   Fan Mode: LOW
[17:58:27][D][climate:405]:   Swing Mode: OFF
[17:58:27][D][climate:408]:   Current Temperature: 31.60°C
[17:58:27][D][climate:414]:   Target Temperature: 15.56°C
[17:58:29][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:29][C][daikin_brc.climate:257]: Found HEADER
[17:58:29][C][daikin_brc.climate:190]: Temp 26
[17:58:29][D][climate:385]: 'Office AC' - Sending state:
[17:58:29][D][climate:388]:   Mode: COOL
[17:58:29][D][climate:393]:   Fan Mode: LOW
[17:58:29][D][climate:405]:   Swing Mode: OFF
[17:58:29][D][climate:408]:   Current Temperature: 31.60°C
[17:58:29][D][climate:414]:   Target Temperature: 15.56°C
[17:58:31][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:31][C][daikin_brc.climate:257]: Found HEADER
[17:58:31][C][daikin_brc.climate:190]: Temp 24
[17:58:31][D][climate:385]: 'Office AC' - Sending state:
[17:58:31][D][climate:388]:   Mode: COOL
[17:58:31][D][climate:393]:   Fan Mode: LOW
[17:58:31][D][climate:405]:   Swing Mode: OFF
[17:58:31][D][climate:408]:   Current Temperature: 31.60°C
[17:58:31][D][climate:414]:   Target Temperature: 15.56°C
[17:58:33][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0044 000F 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001B 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:33][C][daikin_brc.climate:257]: Found HEADER
[17:58:33][C][daikin_brc.climate:190]: Temp 22
[17:58:33][D][climate:385]: 'Office AC' - Sending state:
[17:58:33][D][climate:388]:   Mode: COOL
[17:58:33][D][climate:393]:   Fan Mode: LOW
[17:58:33][D][climate:405]:   Swing Mode: OFF
[17:58:33][D][climate:408]:   Current Temperature: 31.60°C
[17:58:33][D][climate:414]:   Target Temperature: 15.56°C
[17:58:35][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:35][C][daikin_brc.climate:257]: Found HEADER
[17:58:35][C][daikin_brc.climate:190]: Temp 20
[17:58:35][D][climate:385]: 'Office AC' - Sending state:
[17:58:35][D][climate:388]:   Mode: COOL
[17:58:35][D][climate:393]:   Fan Mode: LOW
[17:58:35][D][climate:405]:   Swing Mode: OFF
[17:58:35][D][climate:408]:   Current Temperature: 31.60°C
[17:58:35][D][climate:414]:   Target Temperature: 15.56°C
[17:58:36][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0043 0010 001B 000E 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:37][C][daikin_brc.climate:257]: Found HEADER
[17:58:37][C][daikin_brc.climate:190]: Temp 18
[17:58:37][D][climate:385]: 'Office AC' - Sending state:
[17:58:37][D][climate:388]:   Mode: COOL
[17:58:37][D][climate:393]:   Fan Mode: LOW
[17:58:37][D][climate:405]:   Swing Mode: OFF
[17:58:37][D][climate:408]:   Current Temperature: 31.60°C
[17:58:37][D][climate:414]:   Target Temperature: 15.56°C
[17:58:38][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001C 000D 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:38][C][daikin_brc.climate:257]: Found HEADER
[17:58:38][C][daikin_brc.climate:190]: Temp 16
[17:58:38][D][climate:385]: 'Office AC' - Sending state:
[17:58:38][D][climate:388]:   Mode: COOL
[17:58:38][D][climate:393]:   Fan Mode: LOW
[17:58:38][D][climate:405]:   Swing Mode: OFF
[17:58:38][D][climate:408]:   Current Temperature: 31.60°C
[17:58:38][D][climate:414]:   Target Temperature: 15.56°C
[17:58:40][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0044 000F 0045 000E 0045 000E 0045 000E 001B 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:40][C][daikin_brc.climate:257]: Found HEADER
[17:58:40][C][daikin_brc.climate:190]: Temp 14
[17:58:40][D][climate:385]: 'Office AC' - Sending state:
[17:58:40][D][climate:388]:   Mode: COOL
[17:58:40][D][climate:393]:   Fan Mode: LOW
[17:58:40][D][climate:405]:   Swing Mode: OFF
[17:58:40][D][climate:408]:   Current Temperature: 31.60°C
[17:58:40][D][climate:414]:   Target Temperature: 15.56°C
[17:58:42][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:42][C][daikin_brc.climate:257]: Found HEADER
[17:58:42][C][daikin_brc.climate:190]: Temp 14
[17:58:42][D][climate:385]: 'Office AC' - Sending state:
[17:58:42][D][climate:388]:   Mode: COOL
[17:58:42][D][climate:393]:   Fan Mode: LOW
[17:58:42][D][climate:405]:   Swing Mode: OFF
[17:58:42][D][climate:408]:   Current Temperature: 31.60°C
[17:58:42][D][climate:414]:   Target Temperature: 15.56°C
[17:58:44][D][remote.pronto:229]: Received Pronto: data=0000 006D 003A 0000 00C4 0051 0010 0044 0010 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 001B 000E 001B 000E 001B 000E 0044 0010 001B 000E 0044 0010 0044 0010 001B 000E 0044 000F 0045 000E 0045 000E 0045 000E 0045 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000E 0045 000E 001C 000E 001C 000E 001C 000E 001C 000E 001C 000
[17:58:45][C][daikin_brc.climate:257]: Found HEADER
[17:58:45][C][daikin_brc.climate:190]: Temp 14
[17:58:45][D][climate:385]: 'Office AC' - Sending state:
[17:58:45][D][climate:388]:   Mode: COOL
[17:58:45][D][climate:393]:   Fan Mode: LOW
[17:58:45][D][climate:405]:   Swing Mode: OFF
[17:58:45][D][climate:408]:   Current Temperature: 31.60°C
[17:58:45][D][climate:414]:   Target Temperature: 15.56°C
[17:58:56][D][tuya:288]: Datapoint 101 update to 314
[17:58:56][D][sensor:124]: 'Office Temperature': Sending state 31.40000 °C with 1 decimals of accuracy
[17:58:56][D][climate:385]: 'Office AC' - Sending state:
[17:58:56][D][climate:388]:   Mode: COOL
[17:58:56][D][climate:393]:   Fan Mode: LOW
[17:58:56][D][climate:405]:   Swing Mode: OFF
[17:58:56][D][climate:408]:   Current Temperature: 31.40°C

Perfect thank you, I have pushed an update to my repo. The new update adds a parameter to it “use_fahrenheit: true”:

It defaults to false, so you should not need it but not bad idea to define it. If this works on the receive side, I highly recommend you build up a separate transmitter ESP and use the receive ESP to confirm my transmit code works as well. Let me know how it goes.

climate:
  - platform: daikin_brc    # adjust to match your AC unit!
    name: "Master Bedroom Heatpump"
    receiver_id: rcvr
    use_fahrenheit: true
    sensor: current_temperature

Thanks, I have several identical IR devices ready as I have multiple ACs in the house I’d like to control from Home Assistant. I’ll put them side by side to validate the transmitted codes.

I’ll leave the use_fahrenheit parameter for now. It does return an error:

Also the increments still go in steps of 2. The screenshot below shows the output from the receiver increasing the temperature from 20C to 22C.

Make sure you have:

external_components:
  - source:
      type: git
      url: https://github.com/hagak/esphome
      ref: dev
    components: [ daikin_brc ]
    refresh: 0s

Note the refresh: 0s (you can make this longer but you want it probably shorter then default to get the latest)