Broadlink AC Integration (AC Freedom) (AUX, Dunham, Rcool, Akai, Rinnai, Kenwood, Tornado, Ballu)

There are many people trying to get this integration to work, and I though it needed a better guide (Tutorial) on how to implement it.

First of all, the integration was not created by me. It was created by a guy named Liaan and you can find his integration on GitHub by navigating to this link: GitHub - liaan/broadlink_ac_mqtt: Broadlink Air Conditioners to mqtt

The are 2 versions: One is for docker, which is not the one I am using and you can find here: GitHub - broadlink-ac/broadlink_ac_mqtt_docker: Docker version of Broadlink AC to Mqtt and one for non docker, Linux installations. If I got this right, this program, becomes the middleman between your Broadlink AC and your Home Assistant application.

In my case, I have installed this program on a raspberry pi that I use to host my Unifi Controller.

To get started, you are some prerequisites:

You need to have an MQTT broker setup on your Home Assistant. As this is completely outside our scope, you can watch this video to set it up:

You need to have PIP installed, which if you don’t can be installed using this command:

  • apt install python-pip

You also need to have git installed, which if you don’t can be installed using this command:

  • apt install git

You also need to have nano installed, which if you don’t can be installed using this command:

  • apt install nano

Then you are ready to start installing the program. Copy and paste the commands one by one and run them on your Linux Machine (Not HA).

  1. pip install paho-mqtt
  2. pip install pyyaml
  3. pip install PyCrypto
  4. git clone GitHub - liaan/broadlink_ac_mqtt: Broadlink Air Conditioners to mqtt
  5. cd broadlink_ac_mqtt
  6. cp settings/config_sample.yml settings/config.yml
  7. cd settings
  8. nano config.yml

You now need to edit the config.yml file and add your MQTT details.

This will look something like this:

service:
    daemon_mode: True
    update_interval: 10
    self_discovery: True
    bind_to_ip: False

mqtt:
    host: 192.168.10.200
    port: 1883
    client_id: ac_to_mqtt
    user: yourmqttuserhere
    passwd: yourpassowrdhere
    topic_prefix: /aircon
    auto_discovery_topic: homeassistant
    auto_discovery_topic_retain: False
    discovery: False

##Devices
devices:
- ip: 192.168.10.56
  mac: a3df4af45f
  name: Living Room
  port: 80

There are 5 things that you need to edit under mqtt and 3 things you need to edit under devices:

mqtt:

  • You need to add your mqtt ip address next to host
  • You need to add your mqtt broker port next to port
  • You need to add your mqtt username next to user
  • You need to add your mqtt user password next to passwd

devices

  • You need to add your Air Conditioner’s IP address next to ip
  • You need to add your Air Conditioner’s MAC address next to mac
  • You need to add a name for your Air Conditioner next to name

Once done, you can press ctrl & x on your keyboard and then enter to save and exit the config.yml file.

You are now ready to start the program: Please note that you need to be inside the root broadlink_ac_mqtt folder to do so. As you are currently at broadlink_ac_mqtt/settings directory, type

  • cd …

to go back on directory.

Now start the program by typing

  • python monitor.yml

If everything starts correctly without errors, you are ready to go.

Restart your Home Assistant, navigate to Integrations, find your MQTT broker, for example Mosquitto broker and check if your devices have been increased by one.

If yes, you can navigate to your Lovelace dashboard, edit, add card by entity, search for your AC, select it and add it your dashboard.

By following this guide you should be able to control Power, Modes, Temperature and Fan speed.

As for these properties: fixation_v, mildew, ifeel, sleep, clean, health, display, or fixation_h, unfortunately, you can get the values from the mqtt broker but cannot currently set them via mqtt. To be honest the only one i care is the fixation_v property which is a bit of a deal breaker for me.

This guy also managed to get it to work as a service, so that you don’t have to keep starting the program. Air conditioner - AUX - mqtt configuration

Finally if you need Swing, the developer just added it to his program!

Just copy and paste this to your Home Assistant configuration.yaml file:

climate:
- action_topic: /aircon/c8f742348bec/homeassistant/set
  availability_topic: /aircon/LWT
  current_temperature_topic: /aircon/c8f742348bec/ambient_temp/value
  fan_mode_command_topic: /aircon/c8f742348bec/fanspeed_homeassistant/set
  fan_mode_state_topic: /aircon/c8f742348bec/fanspeed_homeassistant/value
  fan_modes:
  - Auto
  - Low
  - Medium
  - High
  - Turbo
  - Mute
  max_temp: 32.0
  min_temp: 16.0
  mode_command_topic: /aircon/c8f742348bec/mode_homeassistant/set
  mode_state_topic: /aircon/c8f742348bec/mode_homeassistant/value
  modes:
  - 'off'
  - cool
  - heat
  - fan_only
  - dry
  name: 'Living Room AC'
  platform: mqtt
  precision: 0.5
  temp_step: 0.5
  temperature_command_topic: /aircon/c8f742348bec/temp/set
  temperature_state_topic: /aircon/c8f742348bec/temp/value
  unique_id: c8f742348bec
  swing_mode_command_topic: /aircon/c8f742348bec/fixation_v/set
  swing_mode_state_topic: /aircon/c8f742348bec/fixation_v/value
  swing_modes:
  - SWING
  - TOP
  - AUTO
  - MIDDLE1
  - MIDDLE2
  - MIDDLE3

Note. If you had this integration before and need swing support. Delete everything, redownload and set it up again from scratch. Here is the relevant topic: Feature Request: Control of the Vertical and or Horizontal "Fixation" · Issue #84 · liaan/broadlink_ac_mqtt · GitHub

MAY 2022 update!

This issue is first and foremost with the AC Freedom app.

V2 and above does not work at all, but version 1.2.28 from apkpure, manages to successfully
add the AC WIFI modules to your WIFI router.

Important! These modules cannot be connected to 5Ghz WIFI. If you are running a mixed band WIFI you will need to disable 5Ghz and enable it after this process has ended.

Just open the AC Freedom 1.2.28 app press the health button 8 times on your AC remote
until you hear the bip bip, and tap on the app to add a new device.
Continue with the add process adding the WIFI network and password.
Adding using the app will most likely fail, but the AC WIFI module will most likely be
added successfully to your WIFI router.

As you can see bellow in my unify controller the modules have been added successfully.
All you need now is to set the devices to use a fixed IP address on your router.
After you have done that, copy the mac address of your WIFI module and add
the device to the configuration file, where you have installed broadlink_ac_mqtt

for multiple devices you can reference the example bellow.

service:
    daemon_mode: True
    update_interval: 10
    self_discovery: True
    bind_to_ip: False

mqtt:
    host: 10.10.10.244
    port: 1883
    client_id: ac_to_mqtt
    user: yourmqttuserhere
    passwd: yourpassowrdhere
    topic_prefix: /aircon
    auto_discovery_topic: homeassistant
    auto_discovery_topic_retain: False
    discovery: False

##Devices
devices:
- ip: 10.10.10.139
  mac: c8f742348bec
  name: 'Living Room AC'
  port: 80

- ip: 10.10.10.79
  mac: a043b0088f14
  name: 'Home Cinema AC'
  port: 80

- ip: 10.10.10.80
  mac: a043b008e504
  name: 'Office AC'
  port: 80

Then go to the configuration.yaml file and add the device there.

More multiple devices please reference the example bellow.

climate:
- action_topic: /aircon/c8f742348bec/homeassistant/set
  availability_topic: /aircon/LWT
  current_temperature_topic: /aircon/c8f742348bec/ambient_temp/value
  fan_mode_command_topic: /aircon/c8f742348bec/fanspeed_homeassistant/set
  fan_mode_state_topic: /aircon/c8f742348bec/fanspeed_homeassistant/value
  fan_modes:
  - Auto
  - Low
  - Medium
  - High
  - Turbo
  - Mute
  max_temp: 32.0
  min_temp: 16.0
  mode_command_topic: /aircon/c8f742348bec/mode_homeassistant/set
  mode_state_topic: /aircon/c8f742348bec/mode_homeassistant/value
  modes:
  - 'off'
  - cool
  - heat
  - fan_only
  - dry
  name: 'Living Room AC'
  platform: mqtt
  precision: 0.5
  temp_step: 0.5
  temperature_command_topic: /aircon/c8f742348bec/temp/set
  temperature_state_topic: /aircon/c8f742348bec/temp/value
  unique_id: c8f742348bec
  swing_mode_command_topic: /aircon/c8f742348bec/fixation_v/set
  swing_mode_state_topic: /aircon/c8f742348bec/fixation_v/value
  swing_modes:
  - SWING
  - TOP
  - AUTO
  - MIDDLE1
  - MIDDLE2
  - MIDDLE3

- action_topic: /aircon/a043b008e504/homeassistant/set
  availability_topic: /aircon/LWT
  current_temperature_topic: /aircon/a043b008e504/ambient_temp/value
  fan_mode_command_topic: /aircon/a043b008e504/fanspeed_homeassistant/set
  fan_mode_state_topic: /aircon/a043b008e504/fanspeed_homeassistant/value
  fan_modes:
  - Auto
  - Low
  - Medium
  - High
  - Turbo
  - Mute
  max_temp: 32.0
  min_temp: 16.0
  mode_command_topic: /aircon/a043b008e504/mode_homeassistant/set
  mode_state_topic: /aircon/a043b008e504/mode_homeassistant/value
  modes:
  - 'off'
  - cool
  - heat
  - fan_only
  - dry
  name: 'Office AC WIFI'
  platform: mqtt
  precision: 0.5
  temp_step: 0.5
  temperature_command_topic: /aircon/a043b008e504/temp/set
  temperature_state_topic: /aircon/a043b008e504/temp/value
  unique_id: a043b008e504
  swing_mode_command_topic: /aircon/a043b008e504/fixation_v/set
  swing_mode_state_topic: /aircon/a043b008e504/fixation_v/value
  swing_modes:
  - SWING
  - TOP
  - AUTO
  - MIDDLE1
  - MIDDLE2
  - MIDDLE3

- action_topic: /aircon/a043b0088f14/homeassistant/set
  availability_topic: /aircon/LWT
  current_temperature_topic: /aircon/a043b0088f14/ambient_temp/value
  fan_mode_command_topic: /aircon/a043b0088f14/fanspeed_homeassistant/set
  fan_mode_state_topic: /aircon/a043b0088f14/fanspeed_homeassistant/value
  fan_modes:
  - Auto
  - Low
  - Medium
  - High
  - Turbo
  - Mute
  max_temp: 32.0
  min_temp: 16.0
  mode_command_topic: /aircon/a043b0088f14/mode_homeassistant/set
  mode_state_topic: /aircon/a043b0088f14/mode_homeassistant/value
  modes:
  - 'off'
  - cool
  - heat
  - fan_only
  - dry
  name: 'Home Cinema AC'
  platform: mqtt
  precision: 0.5
  temp_step: 0.5
  temperature_command_topic: /aircon/a043b0088f14/temp/set
  temperature_state_topic: /aircon/a043b0088f14/temp/value
  unique_id: a043b0088f14
  swing_mode_command_topic: /aircon/a043b0088f14/fixation_v/set
  swing_mode_state_topic: /aircon/a043b0088f14/fixation_v/value
  swing_modes:
  - SWING
  - TOP
  - AUTO
  - MIDDLE1
  - MIDDLE2
  - MIDDLE3

Hope this helps.

  • I had an issue where the device was actually successfully added to the AC Freedom
    1.2.28 app but broadlink_ac_mqtt get spitting out an error.
    I removed the device from AC Freedom and re-added it using the process above
    without being added to AC Freedom and it works great without issues.

Note that of course you need to restart Home Assistant after adding the devices in the configuration.yaml file.

4 Likes

By the way. I was thinking if it will be good idea to convert whole script to AppDaemon format. It could be more convenient in a way.

Hi All, here is idea to support this integration officialy:

Votes needed, Thanks in advance!

2 Likes

Stuck at running the program. Could be that its running discontinued python.

Mine works i don’t know

Installation of PyCrypto keeps failing:

Installing collected packages: PyCrypto
    Running setup.py install for PyCrypto ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py'"'"'; __file__='"'"'/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-han661ge/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/PyCrypto
         cwd: /tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/
    Complete output (189 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-3.9
    creating build/lib.linux-aarch64-3.9/Crypto
    copying lib/Crypto/__init__.py -> build/lib.linux-aarch64-3.9/Crypto
    copying lib/Crypto/pct_warnings.py -> build/lib.linux-aarch64-3.9/Crypto
    creating build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/MD4.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/SHA384.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/SHA256.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/MD2.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/SHA512.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/SHA224.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/hashalgo.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/SHA.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    copying lib/Crypto/Hash/MD5.py -> build/lib.linux-aarch64-3.9/Crypto/Hash
    creating build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/blockalgo.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/DES3.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/XOR.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_OAEP.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/Blowfish.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC2.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/DES.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/AES.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_v1_5.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/CAST.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC4.py -> build/lib.linux-aarch64-3.9/Crypto/Cipher
    creating build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/randpool.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/_number_new.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/py3compat.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/asn1.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/Counter.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/winrandom.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    copying lib/Crypto/Util/number.py -> build/lib.linux-aarch64-3.9/Crypto/Util
    creating build/lib.linux-aarch64-3.9/Crypto/Random
    copying lib/Crypto/Random/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Random
    copying lib/Crypto/Random/_UserFriendlyRNG.py -> build/lib.linux-aarch64-3.9/Crypto/Random
    copying lib/Crypto/Random/random.py -> build/lib.linux-aarch64-3.9/Crypto/Random
    creating build/lib.linux-aarch64-3.9/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/SHAd256.py -> build/lib.linux-aarch64-3.9/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaGenerator.py -> build/lib.linux-aarch64-3.9/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaAccumulator.py -> build/lib.linux-aarch64-3.9/Crypto/Random/Fortuna
    creating build/lib.linux-aarch64-3.9/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/fallback.py -> build/lib.linux-aarch64-3.9/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/rng_base.py -> build/lib.linux-aarch64-3.9/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/posix.py -> build/lib.linux-aarch64-3.9/Crypto/Random/OSRNG
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest
    copying lib/Crypto/SelfTest/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest
    copying lib/Crypto/SelfTest/st_common.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/common.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES3.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC2.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CAST.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_AES.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_XOR.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC4.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Cipher
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/common.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD2.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA512.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_HMAC.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA224.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA384.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA256.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD5.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_RIPEMD.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD4.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Hash
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_AllOrNothing.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_KDF.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_chaffing.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Protocol
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_importKey.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_RSA.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_DSA.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/PublicKey
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_random.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test__UserFriendlyRNG.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_rpoolcompat.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaGenerator.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaAccumulator.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_SHAd256.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/Fortuna
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_fallback.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_winrandom.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_generic.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_nt.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_posix.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Random/OSRNG
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_Counter.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_winrandom.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_number.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_asn1.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Util
    creating build/lib.linux-aarch64-3.9/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_pss.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py -> build/lib.linux-aarch64-3.9/Crypto/SelfTest/Signature
    creating build/lib.linux-aarch64-3.9/Crypto/Protocol
    copying lib/Crypto/Protocol/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Protocol
    copying lib/Crypto/Protocol/KDF.py -> build/lib.linux-aarch64-3.9/Crypto/Protocol
    copying lib/Crypto/Protocol/AllOrNothing.py -> build/lib.linux-aarch64-3.9/Crypto/Protocol
    copying lib/Crypto/Protocol/Chaffing.py -> build/lib.linux-aarch64-3.9/Crypto/Protocol
    creating build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_DSA.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_slowmath.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/ElGamal.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/DSA.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_RSA.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/RSA.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    copying lib/Crypto/PublicKey/pubkey.py -> build/lib.linux-aarch64-3.9/Crypto/PublicKey
    creating build/lib.linux-aarch64-3.9/Crypto/Signature
    copying lib/Crypto/Signature/__init__.py -> build/lib.linux-aarch64-3.9/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-aarch64-3.9/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-aarch64-3.9/Crypto/Signature
    Skipping optional fixer: buffer
    Skipping optional fixer: idioms
    Skipping optional fixer: set_literal
    Skipping optional fixer: ws_comma
    running build_ext
    running build_configure
    checking for gcc... no
    checking for cc... no
    checking for cl.exe... no
    configure: error: in `/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py", line 456, in <module>
        core.setup(**kw)
      File "/usr/lib/python3.9/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.9/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.9/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python3.9/distutils/command/install.py", line 546, in run
        self.run_command('build')
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.9/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py", line 251, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py", line 278, in run
        raise RuntimeError("autoconf error")
    RuntimeError: autoconf error
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py'"'"'; __file__='"'"'/tmp/pip-install-toule5rt/pycrypto_8bfce04c62e84272ba9eee1456a7dcad/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-han661ge/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/PyCrypto Check the logs for full command output.
➜  ~

Any idea why?

I will try this on a raspberry pi zero w, my home assistant is on a different device.

To call the service, I only need to add the automation in home assistant?

Oké, I tried it with installing pip3, everything went fine, but as soon as a want to run the monitor.py… I get stuck

pi@raspberrypi:~/broadlink_ac_mqtt $ cp settings/config_sample.yml settings/config.yml
pi@raspberrypi:~/broadlink_ac_mqtt $ cd settings
pi@raspberrypi:~/broadlink_ac_mqtt/settings $ nano config.yml
pi@raspberrypi:~/broadlink_ac_mqtt/settings $ cd
pi@raspberrypi:~ $ cd broadlink_ac_mqtt
pi@raspberrypi:~/broadlink_ac_mqtt $ ./monitor.py -S
*********** start copy below ************
devices:

  • ip: 192.168.178.56
    mac: a043b0192931
    name: !!binary “”
    port: 80

*********** stop copy above ************
pi@raspberrypi:~/broadlink_ac_mqtt $ ./monitor.py
Starting Monitor…
object of type ‘int’ has no len()
Stopping
pi@raspberrypi:~/broadlink_ac_mqtt $ python monitor.yml
This is what I get, the script with -S shows something, but when I want to run it it stops!

python: can’t open file ‘/home/pi/broadlink_ac_mqtt/monitor.yml’: [Errno 2] No such file or directory
pi@raspberrypi:~/broadlink_ac_mqtt $ ./monitor.py -d
Starting Monitor…
object of type ‘int’ has no len()
Stopping

I don’t want to be a spoiler, but anyone tried SmartIR?

Big chance it already knows your model (otherwise you need to teach it, after which you can share your codes and share it)

I can surely recommend!

1 Like

@aceindy

looks interesting, but you need a Broadlink ir controller for that. for this moment I don’t have one

Bought broadlink rm4c IR remote/ adapter and works with HACS SmartIR remote no 1800 in my case.
However, not the best experience, at least missing some options (maybe power levels) and ofc no update when normal remote is used

There is an integration on Homebridge is it possible to ask help from the homebridge community

1 Like

Do the devices also work with the app AC Freedom, or just with this integration?

Here is an alternative if you are haven’t native wifi-dongle and/or like esp8266/esp32 and ESPHome. This link is my custom esphome component for AUX air conditioner (and for many other brands based on the AUX).
This solution gives you complete control of air conditioner.
For better help I write readme in English (located on github too). And there is a link to telegram chat where you can ask questions.
Hope this component will help you.
Peace :v:t2::slight_smile:

1 Like

Wow this looks promising!

Good day,
I’m using HA+Yandex Alisa, but when I’m using turn on command by default it enables Heat mode.

How can I change it to this logic:
Turn on enables last mode OR Turn on enables Cooling mode ?

I have the same issue. I made an automation that if the ac enables heat mode, it switches to cool. I also set temp to 22 as it would turn on to cool and be set to 31 or something.

I have created homeassistant based integration.

6 Likes

Oh wow - checking this out now! thank you!!!