netwolfuk
(netwolfuk)
May 4, 2026, 11:23pm
21
@mtrax I just saw your bug report on github. This actually looks to be an issue with my handling of the response message from the AirTouch5. Polyaire do made changes to their API from time to time, and my copy of the spec if a year or two old. I’ll reach out to them and get an updated spec.
Let’s continue this convo on your github issue.
mtrax
(Paul (mtrax))
May 11, 2026, 12:19am
22
thanks for your work @netwolfuk , I have installed the latest addon (5.0.3) and I can see it in the things list but when I start / activate I get “unknown” and openhab.log has the following:
java.lang.NullPointerException: Cannot invoke "airtouch.model.ControlRequest.getBytes()" because "controlRequests[i]" is null
at airtouch.v5.handler.AbstractControlHandler.assembleRequest(AbstractControlHandler.java:26) ~[?:?]
at airtouch.v5.handler.ZoneControlHandler.generateRequest(ZoneControlHandler.java:19) ~[?:?]
at org.openhab.binding.airtouch.internal.handler.AirTouch5ServiceImpl.requestFullUpdate(AirTouch5ServiceImpl.java:70) ~[?:?]
at org.openhab.binding.airtouch.internal.handler.AirTouch5Handler.lambda$0(AirTouch5Handler.java:275) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) [?:?]
here is my thing file
Thing airtouch:airtouch5-controller:myhvac [host="192.168.0.15"]
netwolfuk
(netwolfuk)
May 11, 2026, 12:53am
23
Hmm, I see in the console app, I don’t do that initial control request .
I wonder why I am doing that in the OH code . I’ll need to dig into it a bit more, but won’t get to look at it until tomorrow sorry.
netwolfuk
(netwolfuk)
May 11, 2026, 12:59am
24
oh, it looks like I should just be calling the status handler, rather than the control handler. Oops
netwolfuk
(netwolfuk)
May 11, 2026, 1:21am
25
mtrax
(Paul (mtrax))
May 11, 2026, 10:23pm
26
good news !! I can see all the channels , now I’m trying to create items to link .
however I see the device has a “#” instead of a “:” in the channel definition (not sure what that means??) and I see an error (below)
eg
Switch AT_Daikin_Power "AC Daikin Power" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-power" }
openhab.log
2026-05-12 08:18:30.602 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading DSL model 'airtouch.items'
2026-05-12 08:20:14.710 [WARN ] [5.connector.Airtouch5ConnectorThread] - Could not handle finished message
java.lang.IllegalArgumentException: Unable to resolve ControlOrStatusMessageSubType from supplied byte. Supplied byte is: '45'
at airtouch.v5.constant.MessageConstants$ControlOrStatusMessageSubType.getFromBytes(MessageConstants.java:160) ~[bundleFile:?]
at airtouch.v5.handler.MessageHandler.determineSubMessageMetaData(MessageHandler.java:118) ~[bundleFile:?]
at airtouch.v5.handler.MessageHandler.handle(MessageHandler.java:79) ~[bundleFile:?]
at airtouch.v5.connector.Airtouch5ConnectorThread.handleFinishedMessage(Airtouch5ConnectorThread.java:126) ~[bundleFile:?]
at airtouch.v5.connector.Airtouch5ConnectorThread.run(Airtouch5ConnectorThread.java:104) [bundleFile:?]
netwolfuk
(netwolfuk)
May 11, 2026, 10:33pm
27
Looking at this page , I don’t think the # is the issue. Items can be : or # delimited.
It looks like my code is not handling that byte 45 correctly. Do you see the same behaviour in the console app?
mtrax
(Paul (mtrax))
May 11, 2026, 11:27pm
28
no I couldn’t see any errors in the console app
and yes using the UID with “#” doesn’t seem to be an issue.
netwolfuk
(netwolfuk)
May 12, 2026, 1:16am
29
Could I please ask you to set the logging level to TRACE for org.openhab.binding.airtouch, and then create an issue with the details of the message? As per Logging | openHAB
It should be something like this in the karaf tool.
log:set TRACE org.openhab.binding.airtouch
log:set TRACE airtouch
log:tail
mtrax
(Paul (mtrax))
May 12, 2026, 1:50am
30
mtrax
(Paul (mtrax))
May 16, 2026, 2:38am
31
thanks for your help so far.
I found one more bug internal temp is ready 1454 C for some reason.
also the old Daikin system had an external temperature sensor , is that available in this API?
netwolfuk
(netwolfuk)
May 16, 2026, 9:14am
32
the old Daikin system had an external temperature sensor , is that available in this API?
I had a look in the spec and can’t see any reference to an external temperature. Feel free to have a look through and see if I have missed something.
internal temp is reading 1454 C for some reason
Ah. Yes. They have changed the way the ACStatus and ZoneStatus represent temperature.
In v1.1 of the spec, it was the value of two bytes combined, then you subtract 500. After that you divide the result by 10.
However in v1.2 of the spec, it’s only the bottom 3 bits of the upper byte. Some of the other bits now represent defrost state. I have not added that support yet, but have fixed the code to just use the 11 bits of relevant info. I am now getting 19.2 C from the data you posted in the log.
New release as soon as I can.
mtrax
(Paul (mtrax))
May 16, 2026, 10:34pm
34
all good now thanks,
I’m trying to build a widget to display zones and I have an copy of items if you want to use that in your doco.
netwolfuk
(netwolfuk)
May 17, 2026, 2:15am
35
all good now thanks
That’s great. Thanks for the confirmation
I have an copy of items if you want to use that in your doco
ooh. Yes please.
I did notice that in the data from the AirTouch, the names are fairly generic, and then are being mapped in the Items to other names.
I tend to do that the other way around. I have the zone names set in the AirTouch, and then I just use those in OH. Then they match on the AT wall UI to what is in the OH UI.
mtrax
(Paul (mtrax))
May 17, 2026, 2:21am
36
airtouch.things:
Thing airtouch:airtouch5-controller:myhvac [host=“192.168.0.15”]
airtouch.items
// Airtouch controller to Daikin AC unit
Group hvac
// power state ON/OFF
Switch AT_Daikin_Power "AC Daikin Power" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-power" }
// mode of operation - one of Auto/Dry/Cool/Heat/Fan
String AT_Daikin_Mode "AC Mode [%s]" <house> (hvac) {channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-mode"}
// fan mode - one of LEVEL_1=Low/2=med/3=High
String AT_Daikin_Fan_Speed "AC Fan [%s]" <fan> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-fanspeed" }
Switch AT_AC_Spill "AC Unit is in Spill" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-spill" }
Switch AT_AC_Timer_Act "AC Unit Timer Active" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-timer" }
// temperature set point
Number:Temperature AT_Daikin_SetTemperature "AC Set Temperature [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-setpoint" }
// temperature of return air sensor
Number:Temperature AT_Daikin_Duct_Temperature "AC Outside Duct temperature [%.1f °C]" <temperature> (hvac,temperature) {channel="airtouch:airtouch5-controller:myhvac:ac-unit-0#airconditioner-unit-temperature" }
// Zones
// Zone#0 Lounge
Switch AT_Zone_Power_Lounge "AC Zone Power - Lounge" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-0#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Lounge "AC Zone Temperature - Lounge [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-0#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Lounge "AC Zone Set Temperature - Lounge [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-0#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Lounge "AC Zone Battery Low - Lounge" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-0#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Lounge "AC Zone Airflow - Lounge " (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-0#airconditioner-zone-flow" }
// Zone#1 Kitchen
Switch AT_Zone_Power_Kitchen "AC Zone Power - Kitchen" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-1#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Kitchen "AC Zone Temperature - Kitchen [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-1#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Kitchen "AC Zone Set Temperature - Kitchen [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-1#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Kitchen "AC Zone Battery Low - Kitchen" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-1#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Kitchen "AC Zone Airflow - Kitchen" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-1#airconditioner-zone-flow" }
// Zone#2 Study
Switch AT_Zone_Power_Study "AC Zone Power - Study" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-2#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Study "AC Zone Temperature - Study [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-2#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Study "AC Zone Set Temperature - Study [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-2#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Study "AC Zone Battery Low - Study" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-2#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Study "AC Zone Airflow - Study" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-2#airconditioner-zone-flow" }
// Zone#3 Dining room
Switch AT_Zone_Power_Dining "AC Zone Power - Dining" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-3#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Dining "AC Zone Temperature - Dining [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-3#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Dining "AC Zone Set Temperature - Dining [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-3#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Dining "AC Zone Battery Low - Dining" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-3#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Dining "AC Zone Airflow - Dining" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-3#airconditioner-zone-flow" }
// Zone#4 Front bed
Switch AT_Zone_Power_Front_bed "AC Zone Power - Front bed" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-4#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Front_bed "AC Zone Temperature - Front bed [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-4#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Front_bed "AC Zone Set Temperature - Front bed [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-4#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Front_bed "AC Zone Battery Low - Front bed" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-4#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Front_bed "AC Zone Airflow - Front bed" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-4#airconditioner-zone-flow" }
// Zone#5 Bathroom
Switch AT_Zone_Power_Bathroom "AC Zone Power - Bathroom" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-5#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Bathroom "AC Zone Temperature - Bathroom [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-5#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Bathroom "AC Zone Set Temperature - Bathroom [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-5#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Bathroom "AC Zone Battery Low - Bathroom" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-5#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Bathroom "AC Zone Airflow - Bathroom" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-5#airconditioner-zone-flow" }
// Zone#6 Master
Switch AT_Zone_Power_Master "AC Zone Power - Master " <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-6#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Master "AC Zone Temperature - Master [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-6#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Master "AC Zone Set Temperature - Master [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-6#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Master "AC Zone Battery Low - Master " <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-6#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Master "AC Zone Airflow - Master " (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-6#airconditioner-zone-flow" }
// Zone#7 Back bed
Switch AT_Zone_Power_Back_bed "AC Zone Power - Back bed" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-7#airconditioner-zone-power" }
Number:Temperature AT_Zone_Temperature_Back_bed "AC Zone Temperature - Back bed [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-7#airconditioner-zone-temperature" }
Number:Temperature AT_Zone_SetTemperature_Back_bed "AC Zone Set Temperature - Back bed [%.0f °C]" <temperature> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-7#airconditioner-zone-setpoint" }
Switch AT_Zone_BatLow_Back_bed "AC Zone Battery Low - Back bed" <switch> (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-7#airconditioner-zone-battery-low" }
Number AT_Zone_Airflow_Back_bed "AC Zone Airflow - Back bed" (hvac) { channel="airtouch:airtouch5-controller:myhvac:ac-zone-7#airconditioner-zone-flow" }
mtrax
(Paul (mtrax))
July 23, 2026, 9:40pm
37
Will there be a OH 5.2 version release?