RM Mini 3 and Daikin aircon - do you have it set up?

I'm currently in the process of trying to add my Daikin air conditioner to my Home Assistant set-up using a Broadlink RM Mini 3. I've previously had it set up with that aircon unit (it was detected when I pressed the power button into the unit), but I'm now trying to set it up again (using the Broadlink e-Control app on Android) and getting the dreaded "Internet connection is poor" message.

My Daikin remote is an ARC466A16.
If anyone has already extracted the data for this device from the Broadlink, or already has a Daikan air conditioner set up with the e-Control app, it would be great if you could extract the data files for me.

Basically, the process is:
1. In the e-Control app, select "Share" on the left, then "Share to other phones in WLAN"
2. On the 'external storage' or 'sd' for the phone, look for the folder: /broadlink/newremote/SharedData/
3. Copy the files: jsonSubIr, jsonButton, jsonIrCode

and from there I can extract everything I need.

Cheers.

Comments

  • This works wonders with my home assistant / rm mini / fujitsu aircon.

    https://github.com/vpnmaster/homeassistant-custom-components

    I see they have daikin codes already there. With a bit of luck they will match.

    • Thanks. Unfortunately those Daikin codes don't match my control, but that's OK - I can recreate them.

  • Rather than do that, just go to /dev-service (the first icon in Developer Tools) and type in switch.broadlink_learn_command (along with the IP). You can then aim your remote at your RM Mini 3 and press the button you want to record, the code will show as a tile on your home screen. And repeat that for all the buttons you want to record.

    It's a 1.5 minute process to record most of your remote.

  • ausmechkeyboards, could you possibly elaborate on your comment? Specifically, which device can we enter /dev-service?

    • You should have actually replied to my comment so I would have gotten a notification.

      https://hassio.local:8123/dev-service.

  • Ok, so I tracked down the relevant file config file from Broadlink, despite the autodetection not working. (Note: I did this manually after pressing buttons several hundred times and constructing config files).

    I did it like this:
    First, I downloaded all the Broadlink device configuration files:

    import requests
    import subprocess
    import os
    for x in range(0, 10000):
        if x > 10000:
            filename = '{}.gz'.format(str(x).zfill(4))
        else:
            filename = '{}.gz'.format(str(x).zfill(3))
        if not os.path.exists(filename):
            subprocess.run(['wget', 'http://cloud.broadlink.com.cn/irda_code/' + filename])
    

    Then, I pointed the device at my aircon and systematically ran the first command from every file one at a time until one did something using this code:

    import gzip
    import base64
    import broadlink
    import time
    import sys
    
    # settings
    device = broadlink.rm(host=("192.168.10.10",80), mac=bytearray.fromhex("34EA3488DDEE"), devtype=0x2737)
    
    print "Connecting to Broadlink device...."
    device.auth()
    time.sleep(1)
    print "Connected...."
    time.sleep(1)
    device.host
    
    import os
    #for x in range(0, 10000):
    for x in range(1000, 10000):
        if x > 1000:
            filename = 'files/' + str(x).zfill(4) + '.gz'
        elif x <= 1000:
            filename = 'files/' + str(x).zfill(3) + '.gz'
        print "sending for " + str(filename)
        if os.path.exists(filename):
            #subprocess.run(['cp', 'files/' + str(x).zfill(3) + '.gz', 'tmp'])
            #subprocess.run(['gzip', '-d', str(x).zfill(3) + '.gz'])
    
            with gzip.GzipFile(filename, 'rb') as f:
                print "sending for " + str(x)
                data = f.read()
                print(''.join([hex(ord(n))[2:] for n in data[1068:1068+960]]))
                # print(''.join([hex(n)[2:] for n in data[1068:1068+960]]))
                device.send_data(data[1068:1068+960])
                time.sleep(2)
    
    print "Code Sent...."
    

    That's where I'm at now. The next step is to convert the downloaded file to the right structure (somehow).

    Notes:
    These were critical to me being able to do this:
    https://github.com/NightRang3r/Broadlink-e-control-db-dump
    https://github.com/mjg59/python-broadlink/issues/74
    https://github.com/mjg59/python-broadlink/issues/57

    In https://github.com/mjg59/python-broadlink/issues/74 there is a file linked called ac_codes.txt - that appears to have a list of the commands defined in the Broadlink xxxx.gz file. I'm assuming, though, that they are consistent across devices and there isn't some separate thing retrieved that has the offsets and what the actual commands are. No-one, so far as I'm aware, has broken down the Daikin packet structure so I can't be sure.

    (The relevant file is 1015.gz from Broadlink)

    • Did you ever get this working? I'm also trying to get my Daikin XL working with HA. I'm wounder if its worth going down the rabbit hole or waste of time.

Login or Join to leave a comment