Actron Connect and Home Assistant

“Gentlemen, I am now about to send a signal from this laptop through our local ISP, racing down fiber-optic cable at the speed of light to San Francisco, bouncing off a satellite in geosynchronous orbit to Lisbon, Portugal, where the data packets will be handed off to submerged transatlantic cables terminating in Halifax, Nova Scotia, and transferred across the continent via microwave relays back to our ISP and the X10 receiver attached to this (clicks mouse, lamp switches on) lamp.” – Howard Wolowitz.

As mentioned in a previous post (here), I was able to integrate an Actron air conditioner using the ActronConnect Wi-Fi module with my home automation software. Recently however, I decided to create an add-on for Home Assistant so that it could interface with that unit.

The add-on needs an MQTT broker to handle messaging to Home Assistant. The default configuration assumes you’re using the Mosquitto MQTT broker that comes with Home Assistant, but you could use any other product if you preferred.

The add-on has been compiled for amd64, armhf, armv7, and i386, and tested on a Linux 64bit virtual machine, and a Raspberry Pi using a 32-bit Home Assistant image.

Installation

Add a new add-on repository to your Home Assistant deployment, and you should be able to access the compiled add-on.

Add On

The repository for the add-on is here: https://github.com/MikeJMcGuire/HASSAddons. It should install fairly quickly, the add-on is about 200mb.

Add On

You need only configure a couple of settings to use it. If you leave the default MQTTBroker of ‘core-mosquitto,’ it will use the Mosquitto add-on of Home Assistant (core-mosquitto is the internal name of the Mosquitto add-on (when hosted by Home Assistant). You could also put the IP address/host name of your broker if you host it elsewhere.

The logging is a little intense at the moment, but I’ll back that off once its had a bit more testing.

Once the add-on is installed, you’ll need to configure your home DNS (whether its on your router or otherwise), to make the the add-on look like the cloud service used by the Actron Connect module.

You will need to create DNS entries for these hosts, and resolve them to the IP address of your Home Assistant. Once you’ve done that, a reboot of the air conditioner will force the ActronConnect to lookup those IP addresses again, and then connect to your Home Assistant. Entries:

  • actron.ninja.is
  • actron-connect.actronair.com.au
  • que.actronair.com.au

Enjoy!

Edit: I’ve released a couple of updates since the original release. The add-on can now create per-zone temperature sensors if your Actron has a per-zone temperature readout.

The more recent versions of the Actron Connect use a different web service (que.actronair.com.au). If anyone is using the newer firmware (around v0.18g) and would like to help me do some additional testing, please let me know. This seems to be working well though.

~ Mike

43 thoughts on “Actron Connect and Home Assistant

    1. The bulk of the code would be the same. You’d probably need to move the config file path to somewhere modifiable from outside the container, and maybe tweak the dockerfile slightly, then you could just run it as a standard container.

  1. OK. I’ve installed Hass.io in a docker container on RPi3 running Raspbian Lite. Previously I used the python virtual environment install for HA but you don’t get the add-on store with that option and I wanted to get my Actron Connect working with Siri ASAP. If anyone else is running HA and wants to switch to Hass.io but running on Raspbian Lite, the guide for doing this is here: https://www.home-assistant.io/hassio/installation/#alternative-install-on-generic-linux-server (there were a few RPi specific issues with the directions in that link; I’ll elaborate on the fixes for them once I get this working).

    I also setup dnsmasq on my Netgear R7000 running merlin xwrt-vortex firmware. Once I had that setup I put a DNS redirect on the router so those two urls point to the Hass.io server.

    Installed the add-on from the store. Reconfigured all of my existing HA devices…. this took a while. I got a call from my wife to open the garage door because Siri wouldn’t do it for her – had to get up and do it manually. First world problems.

    Now, it looks like Actron Connect is talking to MQTT as per the logs:

    09-01-2019 19:06:51.71 DeviceController.Data() Client: ::ffff:192.168.0.88:3053
    09-01-2019 19:06:51.87 DeviceController.Data() Data: {“G”:”0″,”V”:2,”D”:6,”DA”:{“isOn”:true,”mode”:2,”fanSpeed”:2,”setPoint”:25.0,”roomTemp_oC”:25.0,”isInESP_Mode”:true,”fanIsCont”:0,”compressorActivity”:2,”errorCode”:””,”individualZoneTemperatures_oC”:[26.1,26.1,26.4,25.9,25.6,26.5,25.4,25.0],”enabledZones”:[0,0,0,0,0,0,0,1],”liveTimer”:null}}

    However I’m not seeing a climate component showing up on the overview screen. Do I need to add something to configuration.yaml?

    Thanks Mike!!

    1. Well, the add-on is hearing from the air conditioner which is good. MQTT on the other hand – not necessarily.

      What MQTT server are you using? The default configuration of the add-on is to use ‘core-mosquitto’ which is the internal network name for the mosquitto MQTT add-on. Does the MQTT addon show the air conditioner add-on log in to it?

      1. Fantastic! Got this up and running with a bit of debugging with Mike’s input (had to add MQTT discovery option to configuration.yaml). Amazing to have HA / Siri integration to control the Actron A/C and also discarding the slow and unencrypted cloud integration. Thanks for your impressive work on this add-on Mike.

  2. Thanks for your work Mike, incredible improvement to Home Assistant, and delivered where Actron wouldnt. I know, I tried asking.

  3. Thanks, this is awesome! Managed to get the docker container running on my Synology communicating with mosquitto (docker) to Home Assistant (docker) which in turn is also connecting to HomeKit. Can now ditch the Actron Connect iOS app and not have to worry about the online service being shut down. I additionally used the reverse proxy feature of the Synology to forward to the port 80 web service.
    One question though is there a way to set the fan speed to ESP and the additional ‘const’ modes?

    1. Glad you’re getting some use from it! Unfortunately even the original iOS app to my knowledge couldn’t set ESP mode. It can report on ESP mode, but it didn’t seem to have the option to change it.

    2. Hi Andreas,
      I am completely new to Home Assistant, but was am keen to get exactly what you have working too.
      I have Home Assistant installed as a docker image on my Synology NAS. But how do I get Mike’s add-on working with this?
      Can you point me to a blog or something?
      Any help is much appreciated!

      1. I guess my question is how do I install this add-on as a docker container on my synology nas?

      2. Basically you install it as you have installed the Home Assistant Docker container on the Synology NAS through the Docker app.
        The container for a + series Synology NAS is ‘mikejmcguire/mikejmcguire-hass-actron-amd64’
        You must specify:
        Volume: Mount path ‘/data’ to a folder where you’re keeping the configuration file
        Port Settings: Local Port: 8186; Container Port: 80

        Inside the folder you pointed ‘/data’ to you need to make a file called ‘options.json’. below is mine:
        {
        “MQTTBroker”:”192.168.34.150″,
        “MQTTUser”:”homeassistant”,
        “MQTTPassword”:”{your password here}”,
        “Zones”: [
        {
        “Id”:1,”Name”:”Living”
        },
        {
        “Id”:2,”Name”:”Theatre”
        },
        {
        “Id”:3,”Name”:”Study”
        }
        ,{
        “Id”:4,”Name”:”Master Bedroom”
        },
        {
        “Id”:5,”Name”:”Bedroom 2″
        }
        ,
        {
        “Id”:6,”Name”:”Bedroom 3″
        }
        ]
        }

        This also brings up the point you need to setup an MQTTBroker Docker container too, I used Mosquitto https://www.home-assistant.io/docs/mqtt/broker/ .
        One thing I have noticed are that the commands sent to the Airconditioner are a bit laggy, can take 30 seconds to make a change. Also the Actron modules don’t show up under the MQTT integrations like other MQTT items.

  4. Hi Andreas,
    Many thanks for your reply!

    I have a mosquitto mqtt container up and running, and with your instructions, I now have the actron container running too. Couple of questions:

    How do I integrate the actron container with the home assistant container? Do I need to update the configuration.yaml file?

    I am going to have a problem setting the two required dns entries to point back to my home assistant container. I am using an eero router which does not support setting ip addresses for hostnames. Any ideas? I am thinking maybe another docker container that I can then use as a dns server.

    Thanks again for your help

    1. The only thing in the configuration.yaml is “discovery:”
      And in the Home Assistant UI go to ‘Configuration’ -> ‘Integrations’ -> Selected MQTT and add in the MQTT credentials.
      The Actron controls should be auto discovered as ‘climate.air_conditioner’ and the zones should appear as ‘switch.{name}_zone’

      1. I’ve solved my dns host name issue, but still getting no love. Here’s what I have:

        * I have the mikejmcquire-hass-actron-i386 docker container up and running. I am using the i386 image as my synology has an intel cpu. The docker container log shows that it starts up and then every 5 mins does an MQTT.SendMessage() hass-actron/status.
        I set up the options.json file for the actron contrainer. It only has the mqttbroker and zones, as I do not have a username/password for my boker.
        As far as I can tell, this container is working correctly.

        * Mosquitto MQTT is up and running as a docker container. It does not have a username/password, but I think that is OK. I can test it with MQTT.fx and can verify that I can connect, subscribe, and publish updates. I can see that the hass-actron container is connecting as I can see the following docker container log message “New client connected from 172.17.0.2 as hass-actron (c1, k15, u”)”. So I also think that this working correctly.

        * I set up a DNSmasq docker container to allow me to set host names that resolve to my synology ip address. I then set my eero router to use this as the dns server for the whole network. I can correctly resolve the two hostnames in this article as my synology nas ip address. Also the actron app no longer works. So it also seems that this is working correctly.

        * I have my home assistant docker container up and running. It is integrated with my zwave hub, and to apple homekit. So this container is working. I also set up the mqtt integration.

        However, home assistant does not have any climate entities. So it seems that the auto config is not working, or I am missing a step to get the integration working.

        Almost there! Any ideas why the climate entities are not showing up?

        Many thanks!

  5. In the log for the container, are you seeing incoming web requests from the Air Conditioner to the add-on? It should be fairly verbose. If not, check that you’re forwarding port 80 from the nas IP to the container’s port 80. The air conditioner will *only* connect to the add-on on port 80. Based on you only seeing the status message every 5 minutes, you’re probably not getting a feed from the air conditioner itself.

    1. Also. Is MQTT discovery turned on within Home Assistant? You can do that in the configuration file, or the configuration of the MQTT integration. Without that, Home Assistant won’t discover the climate device from the MQTT server. You should be seeing this regardless of whether or not the airconditioenr is sending data to the add-on.

      1. Turning discovery on has allowed the discovery of the devices, so home assistant now has all the AC entities configured correctly.

        However, I cannot control the AC most likely as per Mike’s previous comment, as the AC cannot connect to the container on port 80.

        Last piece of the puzzle! 🙂

    2. I think this is exactly what is happening.

      The container is currently configured as “Port Settings: Local Port: 8186; Container Port: 80” as per Andreas’ suggestion.

      Andreas, if this is taking traffic from port 8186 on the nas and redirecting it to port 80 on the container, then what redirects the connection from the air conditioner on port 80 to port 8186?

      1. It’s working!!!!!

        I re-read Andreas’ original comments and setup reverse proxies for the two hostnames from port 80 to 8186. This is then mapped to port 80 on the container in the container settings.

        Mike, you are an absolute champion for putting this all together. From reverse engineering Actron, to creating a solution for yourself, and then also making docker images available for other people to use. And to make yourself available to answer questions from newbies. A huge thank you!

        Andreas, I want to also thank you for the help you gave me in getting this working. Also a huge thank you!

        Cheers

  6. You’ll either need to change the local port to 80 (recommended), or you’ll need some other network device proxying that traffic for you. Either way, something will need to be listening on 80 for the air con to connect to it.

  7. Hey Mike,

    I’ve spent the last 6 months or so tinkering in python to do what you have done. I have had success getting the actron to do a GET a command from my webserver (which changes the indoor unit) but after a few minutes the GET commands drop off and eventually stop. You mentioned that the airconditioner is probably unhappy about something but I just can’t work it out. I’ve tried to compare what you have done which is obviously more comprehensive than my very non-technical approach but I can’t work it out

    Do you have any capacity to check out my code and see if you can point me in the right direction?

    https://pastebin.com/Za0JqU1F

  8. I’ll give it a go in the next few nights. It’s a bit tricky because I have to move some hardware around to do it but I’ll do it and report back

    Thanks

      1. I captured a bit more traffic between the indoor unit and the actron webserver and noticed that I only send the command I want processed ie {“tempTarget”:23} whereas actron’s webserver sends the entire message 4 or 5. Do you think that not getting the entire message might make the device unhappy? I thought the single command might be ok. I’ll do the same now with my webserver and see what happens

      2. Ok so I captured the traffic between the python service and the indoor unit. Its a lot so i’m not sure what is relevant so I’ve pasted a bit but can add more if something is missing:
        https://pastebin.com/JMq6tiPh

        I also noticed an error (“Last”:”JsonErr(2)Expected”) at the second endpoint (2.json) :
        {“ConnectionStatus”:”111″,”CurrentConnection”:{“SSID”:”xxxx”,”key”:”xxxxxx”,”IP”:”192.168.1.6″,”LinkStats”:{“errors”:{“flags”:”[C,N]”,”Count”:23,”Last”:”JsonErr(2)Expected”},”stats”:{“good”:[42,315],”bad”:[0,0,0,0]}}},”PreferredConnection”:{“SSID”:”xxxx”,”key”:”xxxxxx”,”httpProxy”:null},”RemoteServer”:”actron.ninja.is”,”ApiToken”:”xxxxxx

  9. Mike you’re an absolute legend doing this. I have the addon installed on latest hassio, MQTT broker running fine (using it for tasmota) and enabled MQTT discovery. When I attempt to start the addon I see the following message in the log:

    19-07-24 13:37:15 ERROR (SyncWorker_6) [hassio.docker] Can’t start addon_e4641267_hass-actron: 500 Server Error: Internal Server Error (“driver failed programming external connectivity on endpoint addon_e4641267_hass-actron (edc4148e4ea36203e7…): Bind for 0.0.0.0:80 failed: port is already allocated”)

    Any idea what’s causing this?
    Cheers

    1. Yep – the bind for 0.0.0.0:80 means you’ve got another application listening on port 80 – i.e. if you can simply type a hostname/ip into the browser without a :port at the end. You’ve probably got another add-on or something listening on the standard HTTP port. HA listens on 8123 by default. The Actron add-on must be on port 80, as that’s what the air conditioner will try and connect on.

  10. Hi Mike,

    You’re doing a great service here for Actron owners! It’s nice work. I can see the hours and frustration that went into this.

    I have a question for you: Have you figured out how to set the temperature of individual zones (ESP Ultima system)? I have had a 5 min skim through your code and I have a feeling the answer is no, but before I go down the rabbit hole and try to make that work, I thought it prudent to ask if it was something you tried to figure out and whether it was worth me attempting.

  11. Fantastic work Mike, thank you for the add-on – this has finally made me pull the trigger and order an actron connect module. While waiting for it to arrive I’ve installed your add-on in a container built with docker-compose for anyone that doesnt run Hassio and wants to give it a shot (this is for a x64 install):

    version: “3.6”
    services:

    hass-acton:
    build:
    context: “https://github.com/MikeJMcGuire/hass-actron.git”
    args:
    BUILD_FROM: “microsoft/dotnet:2.2-runtime”
    image: “mikejmcguire/hass-actron-amd64”
    container_name: “hass-actron”
    volumes:
    – /LOCAL/DIRECTORY/FOR/PERSISTENT/CONFIG:/data
    ports:
    – “80:80”
    restart: always
    environment:
    – PUID=${PUID}
    – PGID=${PGID}
    – TZ=${TZ}

    As Andreas mentioned in an earlier comment you will need to create the options.json and save it in the volume mounted to /data

    Also Mike, judging by your response to Brad’s question on the individual zone temp selection – I’m assuming there will be no sensor.zone(x) to show the individual zone temps and target temps on the ESP ultima systems? If not – is the logging level verbose enough so that I may pick up the temps being sent in the message from the aircon and something you could look at including in the add-on?

    Once again, thanks for all of your work.

    1. Howdy, thanks for the feedback, good that its getting used. Yep – I have sample output now from a system with multiple zone temperature sensors. I just need to do an update that exposes those as sensors. I’ll email you separately – and get you to do the testing for me if that’s alright (mine doesn’t provide per zone temperatures).

  12. Mike, very cool. Thank you!
    I’m running this within hass 0.98.2 on a Synology diskstation. It’s working perfectly, climate control picked up and configured for a 4 zone system.

    One question, there is a long lag from changing a control, doesn’t matter if it’s turning aircon on/off, changing zone or temperature from within HA (lovelace) to it changing on the aircon, I’m guessing up to 40 seconds. This isn’t a major issue but wonder if you have any ideas what might be causing the delay?

    1. Howdy. The acrton connect should be polling roughly every 2 seconds for an updated command. However, the actron connect seems to be quite sensitive to connectivity issues – when I was first developing the add-on and not giving it the answers it wanted in a timely manner, it started polling at a much less frequent page. I’d check to make sure nothing on the synology is interfering with the add-on’s connectivity. Worst case, power off the air conditioner at the breaker box, give it a few seconds and then turn it on again (rebooting the actron connect basically).

      1. Mine also takes up to a minute to update, haven’t looked into it much, just assumed it was a limitation of the implementation. Sometimes it’s instant other times it takes about a minute, but generally always works.

  13. Thanks all.
    No proxy. I will try bouncing the main air conditioning unit to see if a reset of the Actron Connect box resolves it.

    That being said, it’s not a major issues as it does trigger successfully.

  14. Hi Mike
    Thank you for all your time and effort on this project.(can’t believe there sending unencrypted ssid and the passwords from the cloud)
    I’ve just ordered my new ACM2 and have set it up and its working from my iphone.
    I’m running
    Pi4
    hassio 0.99.3
    I’ve installed Mosquitto broker
    Do i have to configure any think in the add-on config before i install your Add-on
    I’m very new to this I’ve read through your blog to try and get as much info as i can and this i what I’m up to
    this was my last resort theres not a lot of youtube tutorials on this subject

  15. Hi Mike,

    Would you be able to share some links to the raspberry pi you tested with or recommend and the image you used for the testing?

    Do you know of any indoor sensors we could use in conjunction to set target tempuratures to automate switching on/off zones?

    I’d like to set this up + a pi-hole to be the DNS server with my Actron as well.

    So if you’re sharing affiliate links I’d be happy to buy through your links.

    Thanks!
    Jackson

Leave a Reply to Lucas Perez Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s