Actron Que and Home Assistant

Sheldon: “I’d love to, but I’m too busy falling back in love with Windows 98.”
Leonard: “Seriously? You haven’t used this desk in years. The second I want to get rid of it you’re up here working.”
Sheldon: “I can’t talk right now. I have several thousand updates to install.”

I’m very pleased to say that the add-on I created to enable the Actron Connect module to be accessed from Home Assistant has been getting quite a bit of use, not only by myself. However, Actron now have a new device available called the Actron Que. I’ve had a couple of queries now about having an add-on/integration for Que and Home Assistant, so I’ve decided to create a new add-on to interface between those systems.

I’m only just starting on it, so it will be in beta for a few weeks. I don’t have a Que at home, so am reliant on some kind souls temporarily giving me credentials to their Que system for a bit of testing. Please feel free to volunteer if you’d like to help.

I’ll update this page as the add-on progresses. At this stage, it looks like the add-on will simply be accessing the Que API on the cloud service, and registering an air conditioner entity with temperature, compressor state, fan speed, mode etc; a series of switches – one per zone; and potentially a series of temperature sensors – if you have a different temperature sensor per zone. As such, you’ll need to configure the add-on with the credentials for your Que account.

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 – just ensure you have discovery enabled.

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.

Untitled

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.

You will also need to specify:

  • Your Que username and password.

Development Update (23 Aug v0.18):

  1. Create authentication/token system – done.
  2. Retrieve current state of the AC – polling every X seconds, and display that data on a climate entity in Home Assistant – done.
  3. Retrieve current state of the zones – polling every X seconds, and display that data on switch entities in Home Assistant – done.
  4. Push changes from Home Assistant’s climate or zone switch entities back to the Que web service – done.
  5. Change from polling to an event based service – assuming the Que service provides an event feed, or HTTP long poll type capability so that the add-on reflects changes instantly without the constant polling – in progress.
  6. After submitting a change (i.e. on/off, temperature, zone), the add-on should pull new events from the cloud service at a much faster rate until the changes are acknowledged. This should shorten the time it takes to update HA – done.
  7. Provide an option for a per-zone climate entity in HA to enable the adjustment of the set temperature per zone – done.
  8. Provide an option for specifying the Que Serial number if you have multiple Que units on your account – done.
  9. Register all of the MQTT entities against a single device, so that the HA reflects them on the MQTT integration page – done.

The add-on has been compiled for all platforms and uploaded, so its available for testing. If you need to get in touch due to an issue with the add-on, leave a comment below and I’ll reach out.

Other notes:

  • It is currently polling for events/changes every 30 seconds, however this is now configurable. The add-on only asks for new events so its not downloading a full 20k status, but rather 600 or so bytes if there are no changes to report.
  • The add-on will now auto-discover the serial number of the Que unit, and auto-discover the zone count and zone names. If you were to add/remove a zone, simply restart the add-on to discover the zone changes.
  • You will need to set the PerZoneControls configuration option to true in order to see the per-zone climate entities.

Update (12/02/2021): The add-on now supports the Neo unit as well – see here for details.

Update (28/05/2021): The add-on now supports MQTT on alternate ports, and TLS security for the MQTT communications.

Update (26/07/2021): If your MQTT entities are not being discovered by Home Assistant, ensure that the add-on is authenticating to your MQTT server (you’ll need to specify a valid user name and password).

Update (31/07/2021): Added an entity to represent the current humidity reading at the controller.

Update (30/08/2021): Added entities for outdoor temperature, compressor capacity and zone positions. Zones that are off will also now receive temperature set point updates. Thanks @DanielNagy for the information.

Update (02/12/2021): Added some self-healing to the add-on to accommodate client devices being unregistered through the Actron portal, or by Actron support. The add-on will retry for 10 minutes before attempting to reregister itself.

Update (07/12/2021): There’s a new behaviour observed with a Neo unit that doesn’t report event changes or incremental changes to its status. The add-on will now auto detect that behaviour and switch to full status polling every 30 seconds (and on change initiated through Home Assistant). Hopefully this is a one off device issue as polling instead of being event driven is a less optimal solution – it’s slower to reflect changes and it consumes more data.

Update (29/01/2022): There’s been a number of additions to the add-on recently, with a range of new attributes being collected – including per zone battery, fan rpm/pwm, and coil inlet temperature. I’ve also reduced the volume of MQTT updates being sent to Home Assistant.

Update (7/02/2022): So, the per zone humidity turned out not to be a thing. Whilst the unit’s report a humidity reading per zone, it’s often 0, or stays relatively static. I’ve removed the entity for per zone humidity as a result. I’ve also moved the per zone battery as it turns out the battery is per sensor, and a zone can have multiple sensors. I’ve introduced a new configuration option for PerZoneSensors, which will then create an entity for each sensor’s temperature and battery readings.

~ Mike

183 thoughts on “Actron Que and Home Assistant

  1. Hi Mike

    Sorry to be a pain. I still can’t see it to be accepting any commands. really appreciate your time and any help you can provide!

      1. Hi Mike,

        All of this looks very good but did someone like me who known nothing about home assistant, where do I start? I don’t know what mqttt is. I just want to use this in my Google home assistant to switch on and off the Actron neo

        Regards

  2. Hi Mike, Thanks for all your work with the updates etc.

    All has been working well, is there any chance you can add for QUE the individual room sensor battery level and also Humidity ?

      1. Hi Mike
        Thanks again for a fantastic container. I’ve updated (via docker-compose) to try and get per-room humidity readings…
        The entities are not pulling any data, and the container logs are full of stuff like:

        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Event Type: loopback-received
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Event Type: status-change-broadcast
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Incremental Update: MasterInfo.LiveHumidity_pc
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Incremental Update: @metadata
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Event Type: status-change-broadcast
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Incremental Update: RemoteZoneInfo[4].LiveTemp_oC
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Incremental Update: @metadata
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Event Type: full-status-broadcast
        28-01-2022 18:05:45.38 Que.GetAirConditionerEvents() [0x00000068] Error (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException): Unable to process API HTTP response. Cannot perform runtime binding on a null reference

      2. Hi Mike,

        Thanks all entities have appeared, the battery seems to be reporting fine but the humidity is showing zero. Maybe humidity per zone isn’t actually reported?

      1. Thanks Mike

        With the latest update, I get battery numbers in 3 out of my 7 zones (4 say ‘unknown’).
        Humidity comes through as ‘0’ for the same 3 zones, with the remaining 4 saying ‘unknown’.

        Container logs show:

        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Procesing 100 events
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: status-change-broadcast
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: MasterInfo.LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: MasterInfo.LiveTemp_oC
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: RemoteZoneInfo[5].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: @metadata
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: status-change-broadcast
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: RemoteZoneInfo[4].LiveTempHysteresis_oC
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: RemoteZoneInfo[4].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Incremental Update: @metadata
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: loopback-received
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: loopback-received
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: loopback-received
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Event Type: full-status-broadcast
        28-01-2022 22:37:02.81 Que.ProcessFullStatus() [0x0000001A]
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.CompressorMode
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.CompressorCapacity
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.OutdoorUnit.CompPower
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.isOn
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.Mode
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.FanMode
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: MasterInfo.LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: MasterInfo.LiveOutdoorTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: MasterInfo.LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.CoilInlet
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.FanPWM
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: LiveAircon.FanRPM
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[0].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[1].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[2].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[3].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[4].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[5].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: UserAirconSettings.EnabledZones
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].LiveTemp_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].TemperatureSetpoint_Cool_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].TemperatureSetpoint_Heat_oC
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].ZonePosition
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].LiveHumidity_pc
        28-01-2022 22:37:02.81 Que.ProcessPartialStatus() [0x0000001A] Change: RemoteZoneInfo[6].Sensors[0].Battery_pc
        28-01-2022 22:37:02.81 Que.GetAirConditionerEvents() [0x0000001A] Error (System.Collections.Generic.KeyNotFoundException): Unable to process API HTTP response. The given key ‘8’ was not present in the dictionary.
        28-01-2022 22:37:02.81 Que.MQTTUpdateData() Items: Main, Zone5, Zone6
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/fanmode
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/temperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/outdoortemperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/humidity
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/mode
        28-01-2022 22:37:02.81 Que.GetSetTemperature()
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/settemperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/compressor
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/compressorcapacity
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/compressorpower
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/coilinlettemperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/fanpwm
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/fanrpm
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/temperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/position
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/humidity
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/battery
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/mode
        28-01-2022 22:37:02.81 Que.GetSetTemperature()
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone5/settemperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/temperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/position
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/humidity
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/battery
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/mode
        28-01-2022 22:37:02.81 Que.GetSetTemperature()
        28-01-2022 22:37:02.81 MQTT.SendMessage() actronque/zone6/settemperature
        28-01-2022 22:37:02.81 MQTT.SendMessage() hass-actronque/status
        28-01-2022 22:37:06.91 Que.ProcessQueue()
        28-01-2022 22:37:06.91 Que.ProcessQueue() Complete
        28-01-2022 22:37:16.91 Que.ProcessQueue()
        28-01-2022 22:37:16.91 Que.ProcessQueue() Complete
        28-01-2022 22:37:26.41 MQTT.SendMessage() hass-actronque/status
        28-01-2022 22:37:26.91 Que.ProcessQueue()
        28-01-2022 22:37:26.91 Que.ProcessQueue() Complete

        Thanks for looking !

  3. Love this Actron Que integration; although I’m having a problem with a zone target temperature constantly changing. Currently it seems to never want to stick to 21’C, whether I manually change it in HA or via a HA Automation, and it keeps reverting to 23’C. Other times it will revert to another temperature.

    If it helps diagnose the issue I get the following ‘false’ running_script when I try running the HA action for our kids bedroom target temperature:

    Executed: 18 March 2022, 20:53:24
    Result:
    params:
    domain: climate
    service: set_temperature
    service_data:
    temperature: ’21’
    entity_id:
    – climate.kids_rooms_air_conditioner
    target:
    entity_id:
    – climate.kids_rooms_air_conditioner
    running_script: false
    limit: 10

  4. Hi there,
    I really appreciate the add-on and everything Mike’s done for us.
    With the latest update, I’m getting issues with Home Assistant not showing the correct status in Lovelace. It says my unit is off, room temp is 24.1 C, and set temperature is 23 C. Right now, though the unit is on, room temp is 21.9 and set temp is 22. The weird thing is if you “Hey Google, set living room AC to heat” (or turn off, whatever), it works, as do the HA automations to turn on and off at certain times.
    Anyone else having a similar issue?

    1. Hey, I’ve got the same problem, Checked the app and everythings fine there. Its almost like the data its processing is old. If i turn the AC on and off, I’ll check in Home Assistant and find it thinks its still on. When I’ve looked at the raw MQTT thats being sent from the addon its clearly not the same values as what i see on the wall panel. I haven’t changed anything and noticed it about a month ago. I figured I might try rebuilding the docker container from scratch and see if that makes it happy

      1. Rebuilding the container will give you the same container you’re having the issue with now. Code doesnt just stop working.

        Check your wall panel is actually connecting to the cloud service. The cloud service was down within the last week due to an expired certificate. If you still have issues, start collecting logs from the addon so we can see if the addon is successfully connecting to the cloud service.

        Que or neo?

      2. Its a Que system that prior to a few weeks ago seemed to be working fine. Nothing obvious in the logs.

        I see the API working and getting results, those get pushed to MQTT and the values in HA match the MQTT values.

        Both the wall panel and the Que Connect App are exactly in Sync.

        I’ve just done a test, Turned the AC on via home assistant, wall panel lit up in under 5 seconds and turned on. HA sees the AC as off still. MQTT also shows its off. App has also updated and I see in the container logs the API calls are still going but seems like theyre pulling old data. It took 15 minutes to pull the correct data (AC turned on at 7:14pm, Home assistant see’s it come on at 7:30:35pm

        I’ve attached the container logs but everything looks ok just delayed 15 minutes. – https://pastebin.com/pRaXUvQN

        The only thing I noticed is an error about key 7 which is because i don’t have a zone 7 (I have zones 1-6 and 8) but this would have been broken from day one

      3. Oh that’s really interesting, this is the first time I’ve seen non-contiguous zones: 1-6 and 8. It’s very likely that has broken at some point with the incremental updates added. I’ll contact you for more info.

    2. Thesr are my logs from the add-on in HA:

      18-05-2022 23:10:58.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:11:05.37 Que.ProcessQueue()
      18-05-2022 23:11:05.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:08.79 Que.GetAirConditionerEvents() [0x000014F0] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:11:15.37 Que.ProcessQueue()
      18-05-2022 23:11:15.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:17.75 Que.GetAirConditionerEvents() [0x000014F0] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:11:17.75 Que.GetAirConditionerEvents() [0x000014F0] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:11:17.75 Que.GetAirConditionerEvents() [0x000014F0] Procesing 0 events
      18-05-2022 23:11:25.37 Que.ProcessQueue()
      18-05-2022 23:11:25.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:28.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:11:35.37 Que.ProcessQueue()
      18-05-2022 23:11:35.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:45.37 Que.ProcessQueue()
      18-05-2022 23:11:45.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:47.75 Que.GetAirConditionerEvents() [0x000014F1] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:11:55.37 Que.ProcessQueue()
      18-05-2022 23:11:55.37 Que.ProcessQueue() Complete
      18-05-2022 23:11:55.75 Que.GetAirConditionerEvents() [0x000014F1] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:11:55.75 Que.GetAirConditionerEvents() [0x000014F1] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:11:55.75 Que.GetAirConditionerEvents() [0x000014F1] Procesing 0 events
      18-05-2022 23:11:58.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:12:05.38 Que.ProcessQueue()
      18-05-2022 23:12:05.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:15.38 Que.ProcessQueue()
      18-05-2022 23:12:15.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:25.38 Que.ProcessQueue()
      18-05-2022 23:12:25.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:25.75 Que.GetAirConditionerEvents() [0x000014F2] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:12:28.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:12:29.57 Que.GetAirConditionerEvents() [0x000014F2] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:12:29.57 Que.GetAirConditionerEvents() [0x000014F2] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:12:29.57 Que.GetAirConditionerEvents() [0x000014F2] Procesing 0 events
      18-05-2022 23:12:35.38 Que.ProcessQueue()
      18-05-2022 23:12:35.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:45.38 Que.ProcessQueue()
      18-05-2022 23:12:45.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:55.38 Que.ProcessQueue()
      18-05-2022 23:12:55.38 Que.ProcessQueue() Complete
      18-05-2022 23:12:58.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:12:59.57 Que.GetAirConditionerEvents() [0x000014F3] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:13:05.38 Que.ProcessQueue()
      18-05-2022 23:13:05.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:08.88 Que.GetAirConditionerEvents() [0x000014F3] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:13:08.88 Que.GetAirConditionerEvents() [0x000014F3] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:13:08.88 Que.GetAirConditionerEvents() [0x000014F3] Procesing 0 events
      18-05-2022 23:13:15.38 Que.ProcessQueue()
      18-05-2022 23:13:15.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:25.38 Que.ProcessQueue()
      18-05-2022 23:13:25.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:28.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:13:35.38 Que.ProcessQueue()
      18-05-2022 23:13:35.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:38.88 Que.GetAirConditionerEvents() [0x000014F4] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:13:42.05 Que.GetAirConditionerEvents() [0x000014F4] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:13:42.05 Que.GetAirConditionerEvents() [0x000014F4] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:13:42.05 Que.GetAirConditionerEvents() [0x000014F4] Procesing 0 events
      18-05-2022 23:13:45.38 Que.ProcessQueue()
      18-05-2022 23:13:45.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:55.38 Que.ProcessQueue()
      18-05-2022 23:13:55.38 Que.ProcessQueue() Complete
      18-05-2022 23:13:58.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:14:05.38 Que.ProcessQueue()
      18-05-2022 23:14:05.38 Que.ProcessQueue() Complete
      18-05-2022 23:14:12.05 Que.GetAirConditionerEvents() [0x000014F5] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:14:15.38 Que.ProcessQueue()
      18-05-2022 23:14:15.39 Que.ProcessQueue() Complete
      18-05-2022 23:14:16.17 Que.GetAirConditionerEvents() [0x000014F5] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:14:16.18 Que.GetAirConditionerEvents() [0x000014F5] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:14:16.18 Que.GetAirConditionerEvents() [0x000014F5] Procesing 0 events
      18-05-2022 23:14:25.39 Que.ProcessQueue()
      18-05-2022 23:14:25.39 Que.ProcessQueue() Complete
      18-05-2022 23:14:28.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:14:35.39 Que.ProcessQueue()
      18-05-2022 23:14:35.39 Que.ProcessQueue() Complete
      18-05-2022 23:14:45.39 Que.ProcessQueue()
      18-05-2022 23:14:45.39 Que.ProcessQueue() Complete
      18-05-2022 23:14:46.18 Que.GetAirConditionerEvents() [0x000014F6] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:14:48.96 Que.GetAirConditionerEvents() [0x000014F6] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:14:48.96 Que.GetAirConditionerEvents() [0x000014F6] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:14:48.96 Que.GetAirConditionerEvents() [0x000014F6] Procesing 0 events
      18-05-2022 23:14:55.39 Que.ProcessQueue()
      18-05-2022 23:14:55.39 Que.ProcessQueue() Complete
      18-05-2022 23:14:58.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:15:05.39 Que.ProcessQueue()
      18-05-2022 23:15:05.39 Que.ProcessQueue() Complete
      18-05-2022 23:15:15.39 Que.ProcessQueue()
      18-05-2022 23:15:15.39 Que.ProcessQueue() Complete
      18-05-2022 23:15:18.96 Que.GetAirConditionerEvents() [0x000014F7] Base: https://nimbus.actronair.com.au/api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:15:23.02 Que.GetAirConditionerEvents() [0x000014F7] Responded (Encoding N/A, 312 bytes)
      18-05-2022 23:15:23.02 Que.GetAirConditionerEvents() [0x000014F7] Next Event URL: api/v0/client/ac-systems/events/newer?serial=REDACTED&newerThanEventId=0
      18-05-2022 23:15:23.02 Que.GetAirConditionerEvents() [0x000014F7] Procesing 0 events
      18-05-2022 23:15:25.39 Que.ProcessQueue()
      18-05-2022 23:15:25.39 Que.ProcessQueue() Complete
      18-05-2022 23:15:28.27 MQTT.SendMessage() hass-actronque/status
      18-05-2022 23:15:35.39 Que.ProcessQueue()
      18-05-2022 23:15:35.39 Que.ProcessQueue() Complete
      18-05-2022 23:15:45.39 Que.ProcessQueue()
      18-05-2022 23:15:45.39 Que.ProcessQueue() Complete

      1. Hi Mike,
        Sadly it hasn’t. I tried deleting and reinstalling both your add-on and Mosquitto/MQTT and all it did was delete even the previous frozen data.

        This is what it currently displays: https://imgur.com/a/8OxK7xL

        You can turn it off and on in HA (and with “Hey Google”) but it doesn’t show any temperature settings. It seems not to be receiving that information from Actron.

  5. Actron have let their certificates expire again, the Que app is exhibiting the same behaviour.

    I’ve made a note to ring them on Monday

    1. “Actron have let their certificates expire again, the Que app is exhibiting the same behaviour.

      I’ve made a note to ring them on Monday”

      Seriously – not that hard to manage this and they fail at almost every renewal. I’ll call them on Monday too.

      1. Is it bothering the Que unit and the provided app? Ie is it just the addon struggling with the feet. If so I can add a config option to ignore the cert warning that people can turn on during that period.

      2. I just spoke with Actron, and sounds like they’ve had a server failure as well, and are quoting around 48 hours to restore the service. Clearly don’t have backups ….

        The guy I spoke with said that they’ll be sending out an email to all registered users at some stage… (You’d have thought sooner than later was preferable)

  6. @Mike – yes. Getting this:

    08-05-2022 12:44:18.35 Que.GenerateBearerToken() [0x00004775] Base: https://que.actronair.com.au/api/v0/oauth/token
    08-05-2022 12:44:18.53 Que.GenerateBearerToken() [0x00004775] Error (System.Security.Authentication.AuthenticationException): Unable to process API HTTP response. The remote certificate is invalid because of errors in the certificate chain: NotTimeValid
    08-05-2022 12:44:22.35 Que.GetAirConditionerSerial() [0x00004776] Base: https://que.actronair.com.au/api/v0/client/ac-systems?includeAcms=true&includeNeo=true

  7. Hi Mike, Thanks for your hard work with Actron que integration. I was wondering if there was a way to integrate Actron in HA without using a MQTT broker.
    Cheers

  8. Hi Mike
    What an add-on you’ve created here, game changing for sure.
    Curious if the data to and from Actron allows the “Heat to” and “Cool to” set points to be set with home assistant, perhaps even at the zone level?
    Cheers

    1. Hi Craig – not sure what you mean – that’s the basic operation of the add-on. If your Que unit supports per zone controls, that can be enabled within the add-on via the add-on’s configuration.

      1. Hi Mike
        Thanks for the reply. I should have been more specific when I asked my question
        Im referring to when the Actron Que unit is in Auto mode
        The MQTT data I receive does not contain the low and high set points for the unit to cool and heat to.

        An example is currently Zone 8 is set to Auto 19.5*C 23*C however the set temperature seems to be a ballpark middle ground of the 2 set points for Auto

        The messages I receive in MQTT are the following based on the above example

        Message 386 received on actronque/zone8sensor21A09475/battery at 0:18:
        100
        Message 385 received on actronque/zone8sensor21A09475/temperature at 0:18:
        19.3
        Message 384 received on actronque/zone8/settemperature at 0:18:
        21.5
        Message 383 received on actronque/zone8/mode at 0:18:
        auto
        Message 382 received on actronque/zone8/position at 0:18:
        45
        Message 381 received on actronque/zone8/temperature at 0:18:
        19.3
        Message 380 received on actronque/zone8 at 0:18:
        ON

        This averaging of the set temperature seems to only apply to Auto mode. Cool and Heat set points work correctly
        Is this a limitation of how Actron pass the data?

  9. Hi Mike, any chance that the Que container could be made to mock the cloud controller (rather than using the API to get the cloud to control our systems) ?

    I think this is what your original ActronConnect container did, and given the frequency of Actron’s cloud outages, it would be great if we could do the same for the Que

    Thanks for all your work so far – it’s so much better than the actual Actron app !!

    1. Hi RJ. Possibly, but without access to a Que myself and many many hours of trying to work out what each of the several hundred attributes of info are that are exchanged between the cloud service and the controller, it’s not feasible at the moment. The Que system and cloud service are significantly more complex than the Actron Connect – and my assumption is that the Que unit would validate the certificate of the cloud server – meaning it would much more complex to impersonate.

      I am going to add an option though of disabling certificate checks for times when the cloud service forgets to update their certificates and they expire 🙂

      1. Hi Mike, fair enough, I didn’t realise there was that much work involved

        Interestingly I’ve noticed that the controller has port 19296 open

        P:19296 doesn’t display a webpage, but gives a HTTP/0.9 error

        So I tried telnet and can connect, but it responds with a stream of stuff I can’t decode

        An example is here

        Any idea what format this is in, and if it might be a useful way into setting up some sort of non-cloud based access ?

        Thanks

  10. Hi Mike! You are a god amongst men! I tried to get this working with my Neo systems ages ago to no avail. A fresh install of HASS and ensuring I put my HA user details into your add-on and its bloody working!! Smart automations and all the historical data I could ask for! Thanks again Mike.

  11. you are an absolute legend….finally achieved google home voice control for my que, any plans on exposing quiet and away modes

      1. Hi Mike,

        Quiet and Away modes/options are settings that can be changed via the master controller. Once changed the state that the option was set to is shown on the main screen. Away mode is obvious (lower or higher temp depending on season) and quiet mode is visible as an option next to the current fan mode. Hope that all makes sense. Anyway, thanks for this addon, much appreciated.

  12. I’ve got this to work and it works great but I’m. Wondering What’s the preferred way to have the actron point to the DNS. I’ve got my whole network pointing towards my HA as primary DNS, and in HA I have adguard that rewrites the hosts to my HA. But if my HA goes down then I lose internet.

    Thanks

    1. It depends on what you have available at home. My AC is on a different subnet/vlan to the rest of my devices, so it was easy to give it a different DNS server to that of the other devices. Your DHCP server though might let you provide a different DNS IP to your AC than it does to the rest of your network.

      1. I think I’ve broken my actron connect, lol. Here’s the story. When I originally set up this integration I had no idea how to point the dns to home assistant. So I used adguard and used dns rewrite to point to HA and point the whole network to HA. It worked great but if HA goes down I lose internet.
        Now I’ve got some decent network gear and believe I have set up vlan etc correctly
        . So I deleted the dns rewrites out of HA, pressed reset on my connect module and did the process to attempt to put it in the new wifi network, but it doesn’t work it says its connected and then nothing. I can’t see it on my network, the access point disappears, can’t see it in HA and the native app doesn’t work! I even ran a ethernet cable to force it, doesn’t seem to work either. Any ideas?

      2. Ok so thankfully got it back, trying it on a vlan didn’t work. Had a moment and thought put it back onto my original network which got it back. Maybe my firewall rules are blocking it? Although I couldnt ever see it on the network which I assume I should be able it, even if it doesn’t talk to it

Leave a 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 )

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