Actron Neo and Home Assistant

“I know why you’re here, Neo” – Trinity.

It looks like Actron have brought out another air conditioner control system – the Neo. It seems to be similar to the Que, although owning neither – I’m not entirely sure. The API definition certainly looks similar between them – similar, not identical.

I’ve started adapting the Actron Que add-on that I wrote for Home Assistant, to support both the Que and Neo API. I should have a version ready for testing in the next few days. Like the development of the Que add-on, someone has kindly reached out and offered to do some testing for me.

Update (12/02): The Que add-on can now discover Neo devices. Given the API endpoint though is different between the Que and the Neo, I’ve needed to add another configuration option so that you can specify if your system is a Que or a Neo (it defaults to Que for backward compatibility). I’ve just uploaded the 0.21 version of the add-on which should be stable (and relatively unchanged) for Que, and in beta for Neo. The change for the Que (and Neo) is actually a faster update when you make a change. So now if you change a zone switch, or temperature etc, you should see that reflected in HA much faster.

The installation instructions are listed on the Actron Que page.

Let me know how you go!

~ Mike

11 thoughts on “Actron Neo and Home Assistant

  1. Hi, very helpful info. Thank you.

    I’m
    Thinking about installing the NEO. Do you think it can work on HomeKit?

  2. Hello Mike

    Thanks a lot for you great work but I am having issues getting it running with neo system, followed your instructions and chose system type to be neo but I get error in the log, Error: Unable to process API response

    Any hints please? and what should I use for queruser and password, I just left them as is

    Cheers

    1. Hi Ahmed – you need to put your username and password for the Actron app into the addon, otherwise it’s unable to login as you and access your air conditioner. Let me know how you go.

      1. Mate, you are a legend, thanks a lot for your quick reply, I did and it seems no error in the add-on log, all good but yet I don’t have a climate entity under home assistant, I have my mqtt discovery on and have the prefix right, I am guessing that my issue is related to the dns host records as I did not do any of these host records at the dns server, I run my own windows 2003 dns server and tried to add the A records for the hosts you mentioned but the dns server always add my local lan windows domain as a prefix to it, so the neo system cannot reach my home assistant to create the entities despite there is no error in the add-on log, what do you suggest please regarding the DNS issue? Cheers matey

      2. Howdy – the Que/Neo add-on doesn’t require any DNS entries – in fact custom DNS entries would impact its ability to operate. The add-on is relatively foolproof, so as long as you have HA/MQTT discovery on with the default prefix (i.e. you shouldn’t need to configure a prefix), it will work. Have you checked the MQTT logs to see that the MQTT server is hearing from the add-on?

      3. Further to my previous reply mate, I would like to show the add-on log maybe it gives you a hint as I could not see any error

        18-06-2021 21:48:01.56 Service.Start() Build Date: Tue 15/12/2020
        18-06-2021 21:48:01.79 Configuration.GetConfiguration() Read MQTTUser
        18-06-2021 21:48:01.79 MQTTUser: mqttu
        18-06-2021 21:48:01.79 Configuration.GetConfiguration() Read MQTTPassword
        18-06-2021 21:48:01.79 MQTTPassword: *******
        18-06-2021 21:48:01.79 Configuration.GetConfiguration() Read MQTTBroker
        18-06-2021 21:48:01.79 MQTTBroker: core-mosquitto
        18-06-2021 21:48:01.79 Configuration.GetConfiguration() Read MQTTTLS
        18-06-2021 21:48:01.79 MQTTTLS: True
        18-06-2021 21:48:01.79 Configuration.GetConfiguration() Read PerZoneControls
        18-06-2021 21:48:01.79 PerZoneControls: True
        18-06-2021 21:48:01.80 Configuration.GetConfiguration() Read PollInterval
        18-06-2021 21:48:01.80 PollInterval: 30
        18-06-2021 21:48:01.80 Configuration.GetConfiguration() Read QueUser
        18-06-2021 21:48:01.80 QueUser: ahmed@free-islam.com
        18-06-2021 21:48:01.80 Configuration.GetConfiguration() Read QuePassword
        18-06-2021 21:48:01.80 QuePassword: *******
        18-06-2021 21:48:01.80 Configuration.GetConfiguration() Read QueSerial
        18-06-2021 21:48:01.80 Configuration.GetConfiguration() Read SystemType
        18-06-2021 21:48:01.80 SystemType: neo
        18-06-2021 21:48:01.82 MQTT.StartMQTT()
        18-06-2021 21:48:01.82 MQTT.StartMQTT() Host: core-mosquitto
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ApDisconnectCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.SocketErrorCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ModuleHardwareErrorCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.CloudLoopbackTimeoutCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchButton.I2CErrorCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchScreen.I2CErrorCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.Uptime_s
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentCount
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.OffendingTask
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentActive
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentDuration_ms
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Event Type: status-change-broadcast
        18-06-2021 21:48:08.43 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: MasterInfo.LiveTemp_oC
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: MasterInfo.LiveHumidity_pc
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WifiStrength_of3
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ModuleDeinitCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ApConnectionCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ApDisconnectCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.SocketErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ModuleHardwareErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.CloudLoopbackTimeoutCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchButton.I2CErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchScreen.I2CErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.Uptime_s
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.OffendingTask
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentActive
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentDuration_ms
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: status-change-broadcast
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: MasterInfo.LiveTemp_oC
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: MasterInfo.LiveHumidity_pc
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WifiStrength_of3
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ModuleDeinitCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ApConnectionCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ApDisconnectCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.SocketErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.ModuleHardwareErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.WiFi.CloudLoopbackTimeoutCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchButton.I2CErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.TouchScreen.I2CErrorCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.Uptime_s
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentCount
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.OffendingTask
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentActive
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Incremental Update: .SystemStatus_Local.LTDC.FiFoUnderRunError.IncidentDuration_ms
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: full-status-broadcast
        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.46 Que.MQTTUpdateData()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/fanmode
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/compressor
        18-06-2021 21:48:08.47 MQTT.SendMessage() hass-actronque/status
        18-06-2021 21:48:12.51 Que.ProcessQueue()
        18-06-2021 21:48:12.51 Que.ProcessQueue() Complete
        18-06-2021 21:48:22.52 Que.ProcessQueue()
        18-06-2021 21:48:22.52 Que.ProcessQueue() Complete
        18-06-2021 21:48:32.52 Que.ProcessQueue()
        18-06-2021 21:48:32.52 Que.ProcessQueue() Complete

      4. See mate last bit of the addon log

        18-06-2021 21:48:08.44 Que.GetAirConditionerEvents() [0x00000003] Event Type: loopback-received
        18-06-2021 21:48:08.46 Que.MQTTUpdateData()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/fanmode
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone1/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone2/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone3/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone4/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone5/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone6/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone7/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/temperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/mode
        18-06-2021 21:48:08.46 Que.GetSetTemperature()
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/zone8/settemperature
        18-06-2021 21:48:08.46 MQTT.SendMessage() actronque/compressor
        18-06-2021 21:48:08.47 MQTT.SendMessage() hass-actronque/status
        18-06-2021 21:48:12.51 Que.ProcessQueue()
        18-06-2021 21:48:12.51 Que.ProcessQueue() Complete
        18-06-2021 21:48:22.52 Que.ProcessQueue()
        18-06-2021 21:48:22.52 Que.ProcessQueue() Complete
        18-06-2021 21:48:32.52 Que.ProcessQueue()
        18-06-2021 21:48:32.52 Que.ProcessQueue() Complete

  3. So I got it all set up in a standalone container, I can see in MQTT Explorer that its connected and I can see my 4 zones and temperatures etc. HA has auto discovered the entities but that all say ‘unavailable’. In mqtt I can see all the actual data matches the iOS app data for my Neo Control.

    In teh homeassisant topic under ‘switch’ I can see ‘actonque’ with all the zone data. There are two other mqtt topics ‘actronque’ and ‘hass-actronque’ that sit up at the same level as ‘homeassistant’

    No idea why its showing as unavailable in HA / Lovelace. Would be so much easier if I could post a screenshot in here :D.

Leave a Reply to Tony Tarabay 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