AirTouch 2 Plus

Thanks! That worked however when I enter the IP of my airtouch2+, I get “unknown”.

Is there anything in the logs? If not, could you please enable debug logs for the integration and try again.

Yes, sorry.

Error doing job: Task exception was never retrieved

Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/airtouch2/common/NetClient.py”, line 110, in _main
await self._handle_message()
File “/usr/local/lib/python3.11/site-packages/airtouch2/at2plus/At2PlusClient.py”, line 65, in handle_one_message
subheader = ControlStatusSubHeader.from_buffer(message.data_buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/airtouch2/protocol/at2plus/control_status_common.py”, line 77, in from_buffer
return ControlStatusSubHeader.from_bytes(buffer.read_bytes(CONTROL_STATUS_SUBHEADER_LENGTH))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/airtouch2/common/Buffer.py”, line 54, in read_bytes
raise BufferError(“Cannot read from incomplete buffer”)
BufferError: Cannot read from incomplete buffer

Awesome thanks for getting back quickly. Just released a new version, can you please try it.

Woo! That worked… I now have the integration but, no entities? What is the expected behavior?

Ah, entity has just showed up however received the following error just came up in my notifications

Unable to prepare setup for platform airtouch2plus.fan: Platform not found (No module named ‘custom_components.airtouch2plus.fan’).

I can change the mode and temp but can’t turn the device on/off.

Ah, because this was a bit of a copy-paste job from the original airtouch2 integration I accidentally left the fan platform in (I’m using that for zones in the other integration). Will remove it.

Good to hear some of it’s working. It’s not immediately obvious to me why on/off wouldn’t be working - is there any related logs?

I’d appreciate any debug logs you could give me - enable them by editing your configuration.yaml:

# Logging setup
logger:
  default: warning
  logs:
    custom_components.airtouch2plus: debug
    airtouch2.at2plus.At2PlusClient: debug
    airtouch2.common.NetClient: debug

This should enable pretty verbose logging about the integration.

Thanks! That fixed the error in notifications. I have enabled the logs but nothing new has shown up.

I’ve got a new issue now where I can click between the modes (and it switches on the airtouch2+) but doesn’t reflect on Home Assistant (i.e. mode remains static on the thermostat card on the dashboard)

The useful logs will probably only be in the home-assistant.log file the config directory. You can email it to me at [email protected] if you like, as it may have a lot of information about your home in it. You could filter out only things with “airtouch2” if you don’t want to share the whole thing with me.

Unfortunately nothing in there related to airtouch except for maybe this one?

2023-07-11 22:39:15.789 ERROR (MainThread) [homeassistant.components.mqtt.climate] Invalid modes mode: auto_heat

Hm something isn’t right then… Did you restart after changing the configuration? You should be seeing logs such as:

2023-07-12 00:26:10.957 DEBUG (MainThread) [airtouch2.common.NetClient] Sending AcStatusMessage with data: 55:55:80:b0:01:c0:00:08:23:00:00:00:00:0a:00:00:7f:90
2023-07-12 00:26:10.957 DEBUG (MainThread) [airtouch2.common.NetClient] Starting listener task
2023-07-12 00:26:11.280 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
2023-07-12 00:26:11.280 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
2023-07-12 00:26:11.280 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 6: b0:80:01:c0:00:12
2023-07-12 00:26:11.280 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 18: 23:00:00:00:00:0a:00:01:00:10:82:c1:02:a4:00:00:90:00
2023-07-12 00:26:11.281 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 2: cc:f2
2023-07-12 00:26:11.651 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Handling status message
2023-07-12 00:26:11.651 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] New AC (0) found
2023-07-12 00:26:11.651 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Requesting ability of AC0
2023-07-12 00:26:11.651 DEBUG (MainThread) [airtouch2.common.NetClient] Sending RequestAcAbilityMessage with data: 55:55:90:b0:01:1f:00:03:ff:11:00:09:83
2023-07-12 00:26:11.652 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Waiting for ability message response...

Is this still actively being pursued? I tried the github branch and got errors like this in the logs:

Aug 22 17:32:03 reliant hass[133181]: 2023-08-22 17:32:03.162 ERROR (MainThread) [airtouch2.protocol.at2plus.control_status_common] Unknown message type in header (0x2b)
Aug 22 17:32:03 reliant hass[133181]: Traceback (most recent call last):
Aug 22 17:32:03 reliant hass[133181]:   File "/var/lib/hass/.venv/lib/python3.11/site-packages/airtouch2/protocol/at2plus/control_status_common.py", line 74, in from_bytes
Aug 22 17:32:03 reliant hass[133181]:     subtype = ControlStatusSubType(subheader_bytes[0])
Aug 22 17:32:03 reliant hass[133181]:               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 22 17:32:03 reliant hass[133181]:   File "/usr/lib/python3.11/enum.py", line 714, in __call__
Aug 22 17:32:03 reliant hass[133181]:     return cls.__new__(cls, value)
Aug 22 17:32:03 reliant hass[133181]:            ^^^^^^^^^^^^^^^^^^^^^^^
Aug 22 17:32:03 reliant hass[133181]:   File "/usr/lib/python3.11/enum.py", line 1130, in __new__
Aug 22 17:32:03 reliant hass[133181]:     raise ve_exc
Aug 22 17:32:03 reliant hass[133181]: ValueError: 43 is not a valid ControlStatusSubType
Aug 22 17:32:03 reliant hass[133181]: 2023-08-22 17:32:03.167 ERROR (MainThread) [airtouch2.at2plus.At2PlusClient] Unknown status message type: subtype=0, data=2b:00:00:00:00:04:00:06:80:80:07:ff:81:81:07:ff:82:82:07:ff:83:83:07:ff:90:ff:02:e4:91:ff:07:ff

This is a message that I don’t know the format of. I am aware of a few. Does it appear to work otherwise?

Some things work, but mostly it doesn’t.

Can you be more specific?

What works and what doesn’t?

What do you mean by ‘doesn’t work’ - how does it not work?

Is there any logs other than these ‘Unknown message type’ ones? Perhaps you can provide the full logs.

If I can’t work it out from this further information I would ask you to enable debug logging and provide these logs to me. See my reply above about enabling debug logs.

Can you also try the test_programs/at2plus_test.py script from the python library and see if that behaves as expected? Please exit it by typing ‘q’ and pressing enter rather than with Ctrl-C. Send me the airtouch2plus.log generated by that.

I’m not sure how to answer the “how” in the “it doesn’t work” part, as I’m not sure what is meant to work and what isn’t. Probably the most pressing issue is that the “on” command doesn’t seem to work. I do see a temperature read-out, but clicking on the setting of modes does not seem to do anything. Also, the set-up zones in the system don’t appear anywhere.

How much of the full log is useful. Basically, the logs just continue cycling the following messages:

ug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.508 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.508 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.508 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 6: 9f:80:86:c0:00:20
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.509 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 32: 2b:00:00:00:00:04:00:06:80:80:07:ff:81:81:07:ff:82:82:07:ff:83:83:07:ff:90:ff:02:d5:91:ff:07:ff
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.509 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 2: 05:0a
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.509 ERROR (MainThread) [airtouch2.protocol.at2plus.control_status_common] Unknown message type in header (0x2b)
Aug 29 19:26:18 reliant hass[276579]: Traceback (most recent call last):
Aug 29 19:26:18 reliant hass[276579]:   File "/var/lib/hass/.venv/lib/python3.11/site-packages/airtouch2/protocol/at2plus/control_status_common.py", line 74, in from_bytes
Aug 29 19:26:18 reliant hass[276579]:     subtype = ControlStatusSubType(subheader_bytes[0])
Aug 29 19:26:18 reliant hass[276579]:               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 29 19:26:18 reliant hass[276579]:   File "/usr/lib/python3.11/enum.py", line 714, in __call__
Aug 29 19:26:18 reliant hass[276579]:     return cls.__new__(cls, value)
Aug 29 19:26:18 reliant hass[276579]:            ^^^^^^^^^^^^^^^^^^^^^^^
Aug 29 19:26:18 reliant hass[276579]:   File "/usr/lib/python3.11/enum.py", line 1130, in __new__
Aug 29 19:26:18 reliant hass[276579]:     raise ve_exc
Aug 29 19:26:18 reliant hass[276579]: ValueError: 43 is not a valid ControlStatusSubType
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.521 ERROR (MainThread) [airtouch2.at2plus.At2PlusClient] Unknown status message type: subtype=0, data=2b:00:00:00:00:04:00:06:80:80:07:ff:81:81:07:ff:82:82:07:ff:83:83:07:ff:90:ff:02:d5:91:ff:07:ff
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.778 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.778 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 1: 55
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.779 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 6: 9f:80:87:c0:00:12
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.779 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 18: 23:00:00:00:00:0a:00:01:00:10:78:c1:02:d5:00:00:80:00
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.779 DEBUG (MainThread) [airtouch2.common.NetClient] Read payload of size 2: d5:8a
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.786 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Handling status message
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.788 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Updated AC 0 with value
Aug 29 19:26:18 reliant hass[276579]:             id: 0
Aug 29 19:26:18 reliant hass[276579]:             power: 0
Aug 29 19:26:18 reliant hass[276579]:             mode: 1
Aug 29 19:26:18 reliant hass[276579]:             fan_speed: 0
Aug 29 19:26:18 reliant hass[276579]:             set_point: 22.0
Aug 29 19:26:18 reliant hass[276579]:             temperature: 22.5
Aug 29 19:26:18 reliant hass[276579]:             turbo: False
Aug 29 19:26:18 reliant hass[276579]:             bypass: False
Aug 29 19:26:18 reliant hass[276579]:             spill: False
Aug 29 19:26:18 reliant hass[276579]:             timer: True
Aug 29 19:26:18 reliant hass[276579]:             error: 0
Aug 29 19:26:18 reliant hass[276579]:
Aug 29 19:26:18 reliant hass[276579]: 2023-08-29 19:26:18.788 DEBUG (MainThread) [airtouch2.at2plus.At2PlusClient] Finished handling status message

The airtouch2plus.log is

2023-08-29 19:12:27,438 MainThread DEBUG: Connecting to 192.168.1.240 on port 9200
2023-08-29 19:12:27,443 MainThread DEBUG: Sending AcStatusMessage with data: 55:55:80:b0:01:c0:00:08:23:00:00:00:00:0a:00:00:7f:90
2023-08-29 19:12:27,443 MainThread DEBUG: <airtouch2.protocol.at2plus.messages.AcStatus.AcStatusMessage object at 0x7f97294590>
2023-08-29 19:12:27,443 MainThread DEBUG: Starting listener task
2023-08-29 19:12:27,444 MainThread DEBUG: Waiting for AC0 to be ready
2023-08-29 19:12:27,606 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:12:27,606 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:12:27,607 MainThread DEBUG: Read payload of size 6: b0:80:01:c0:00:12
2023-08-29 19:12:27,607 MainThread DEBUG: Read payload of size 18: 23:00:00:00:00:0a:00:01:00:10:78:c1:02:d5:00:00:80:00
2023-08-29 19:12:27,607 MainThread DEBUG: Read payload of size 2: 3c:0c
2023-08-29 19:12:27,608 MainThread DEBUG: Handling status message
2023-08-29 19:12:27,608 MainThread DEBUG: New AC (0) found
2023-08-29 19:12:27,608 MainThread INFO: 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:12:27,608 MainThread DEBUG: Requesting ability of AC0
2023-08-29 19:12:27,608 MainThread DEBUG: Sending RequestAcAbilityMessage with data: 55:55:90:b0:01:1f:00:03:ff:11:00:09:83
2023-08-29 19:12:27,609 MainThread DEBUG: <airtouch2.protocol.at2plus.messages.AcAbilityMessage.RequestAcAbilityMessage object at 0x7f983a6350>
2023-08-29 19:12:27,609 MainThread DEBUG: Waiting for ability message response...
2023-08-29 19:12:27,609 MainThread DEBUG: Found at least 1 AC
2023-08-29 19:12:27,617 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:12:27,617 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:12:27,617 MainThread DEBUG: Read payload of size 6: b0:90:01:1f:00:1c
2023-08-29 19:12:27,617 MainThread DEBUG: Read payload of size 28: ff:11:00:18:46:75:6a:69:74:73:75:00:00:00:00:00:00:00:00:00:00:07:1f:1d:12:12:10:10
2023-08-29 19:12:27,617 MainThread DEBUG: Read payload of size 2: 0e:9e
2023-08-29 19:12:27,618 MainThread DEBUG: Creating ability message from 26 bytes
2023-08-29 19:12:27,618 MainThread DEBUG: Got ability message response
2023-08-29 19:12:27,618 MainThread DEBUG: Got ability of AC0: 
        id: 0
        name: Fujitsu
        start_group: 0
        group_count: 7
        supported_modes: [<AcSetMode.AUTO: 0>, <AcSetMode.HEAT: 1>, <AcSetMode.DRY: 2>, <AcSetMode.FAN: 3>, <AcSetMode.COOL: 4>]
        supported_fan_speeds: [<AcFanSpeed.AUTO: 0>, <AcFanSpeed.LOW: 2>, <AcFanSpeed.MEDIUM: 3>, <AcFanSpeed.HIGH: 4>]
        setpoint_limits: 
        cool: 
        min: 18
        max: 18
        
        heat: 
        min: 16
        max: 16
        
        
        
2023-08-29 19:12:27,618 MainThread DEBUG: Set ability of AC0
2023-08-29 19:12:27,619 MainThread INFO: 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:12:27,619 MainThread INFO: 
        id: 0
        name: Fujitsu
        start_group: 0
        group_count: 7
        supported_modes: [<AcSetMode.AUTO: 0>, <AcSetMode.HEAT: 1>, <AcSetMode.DRY: 2>, <AcSetMode.FAN: 3>, <AcSetMode.COOL: 4>]
        supported_fan_speeds: [<AcFanSpeed.AUTO: 0>, <AcFanSpeed.LOW: 2>, <AcFanSpeed.MEDIUM: 3>, <AcFanSpeed.HIGH: 4>]
        setpoint_limits: 
        cool: 
        min: 18
        max: 18
        
        heat: 
        min: 16
        max: 16
        
        
        
2023-08-29 19:12:27,619 MainThread DEBUG: Updated AC 0 with value 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:12:27,619 MainThread DEBUG: Finished handling status message
2023-08-29 19:13:08,009 MainThread DEBUG: Connecting to q on port 9200
2023-08-29 19:13:15,686 MainThread DEBUG: Connecting to 192.168.1.240 on port 9200
2023-08-29 19:13:15,690 MainThread DEBUG: Sending AcStatusMessage with data: 55:55:80:b0:01:c0:00:08:23:00:00:00:00:0a:00:00:7f:90
2023-08-29 19:13:15,690 MainThread DEBUG: <airtouch2.protocol.at2plus.messages.AcStatus.AcStatusMessage object at 0x7f9bc847d0>
2023-08-29 19:13:15,690 MainThread DEBUG: Starting listener task
2023-08-29 19:13:15,690 MainThread DEBUG: Waiting for AC0 to be ready
2023-08-29 19:13:15,942 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:13:15,943 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:13:15,943 MainThread DEBUG: Read payload of size 6: b0:80:01:c0:00:12
2023-08-29 19:13:15,943 MainThread DEBUG: Read payload of size 18: 23:00:00:00:00:0a:00:01:00:10:78:c1:02:d5:00:00:80:00
2023-08-29 19:13:15,943 MainThread DEBUG: Read payload of size 2: 3c:0c
2023-08-29 19:13:15,944 MainThread DEBUG: Handling status message
2023-08-29 19:13:15,944 MainThread DEBUG: New AC (0) found
2023-08-29 19:13:15,944 MainThread INFO: 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:13:15,944 MainThread DEBUG: Requesting ability of AC0
2023-08-29 19:13:15,945 MainThread DEBUG: Sending RequestAcAbilityMessage with data: 55:55:90:b0:01:1f:00:03:ff:11:00:09:83
2023-08-29 19:13:15,945 MainThread DEBUG: <airtouch2.protocol.at2plus.messages.AcAbilityMessage.RequestAcAbilityMessage object at 0x7f9bc84c10>
2023-08-29 19:13:15,945 MainThread DEBUG: Waiting for ability message response...
2023-08-29 19:13:15,945 MainThread DEBUG: Found at least 1 AC
2023-08-29 19:13:15,955 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:13:15,955 MainThread DEBUG: Read payload of size 1: 55
2023-08-29 19:13:15,956 MainThread DEBUG: Read payload of size 6: b0:90:01:1f:00:1c
2023-08-29 19:13:15,956 MainThread DEBUG: Read payload of size 28: ff:11:00:18:46:75:6a:69:74:73:75:00:00:00:00:00:00:00:00:00:00:07:1f:1d:12:12:10:10
2023-08-29 19:13:15,957 MainThread DEBUG: Read payload of size 2: 0e:9e
2023-08-29 19:13:15,958 MainThread DEBUG: Creating ability message from 26 bytes
2023-08-29 19:13:15,959 MainThread DEBUG: Got ability message response
2023-08-29 19:13:15,959 MainThread DEBUG: Got ability of AC0: 
        id: 0
        name: Fujitsu
        start_group: 0
        group_count: 7
        supported_modes: [<AcSetMode.AUTO: 0>, <AcSetMode.HEAT: 1>, <AcSetMode.DRY: 2>, <AcSetMode.FAN: 3>, <AcSetMode.COOL: 4>]
        supported_fan_speeds: [<AcFanSpeed.AUTO: 0>, <AcFanSpeed.LOW: 2>, <AcFanSpeed.MEDIUM: 3>, <AcFanSpeed.HIGH: 4>]
        setpoint_limits: 
        cool: 
        min: 18
        max: 18
        
        heat: 
        min: 16
        max: 16
        
        
        
2023-08-29 19:13:15,960 MainThread DEBUG: Set ability of AC0
2023-08-29 19:13:15,961 MainThread INFO: 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:13:15,961 MainThread INFO: 
        id: 0
        name: Fujitsu
        start_group: 0
        group_count: 7
        supported_modes: [<AcSetMode.AUTO: 0>, <AcSetMode.HEAT: 1>, <AcSetMode.DRY: 2>, <AcSetMode.FAN: 3>, <AcSetMode.COOL: 4>]
        supported_fan_speeds: [<AcFanSpeed.AUTO: 0>, <AcFanSpeed.LOW: 2>, <AcFanSpeed.MEDIUM: 3>, <AcFanSpeed.HIGH: 4>]
        setpoint_limits: 
        cool: 
        min: 18
        max: 18
        
        heat: 
        min: 16
        max: 16
        
        
        
2023-08-29 19:13:15,962 MainThread DEBUG: Updated AC 0 with value 
            id: 0
            power: 0
            mode: 1
            fan_speed: 0
            set_point: 22.0
            temperature: 22.5
            turbo: False
            bypass: False
            spill: False
            timer: True
            error: 0
        
2023-08-29 19:13:15,963 MainThread DEBUG: Finished handling status message

Well it seems to be reading the status ok - is that correct? If you switch the aircon on and off with the app do you get logs with the “power: 0” line changing to “power: 1”?

If you try using the at2plus_test.py script to send commands does anything happen? Is anything logged?

Just wanted to check back in and let you know its working perfectly for me now with your latest update.

Any chance we could add zones as different entities too?

Sorry about the delay. Life got in the way. But everything seems to work for me, both in the test script and the integration. I still get a number of ValueError exceptions like this:

Unknown message type in header (0x27)
Traceback (most recent call last):
  File "/home/lund/src/airtouch2-python/src/airtouch2/protocol/at2plus/message_common.py", line 73, in from_bytes
    type = MessageType(header_bytes[CommonMessageOffsets.MESSAGE_TYPE])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/enum.py", line 1128, in __new__
    raise ve_exc
ValueError: 39 is not a valid MessageType
Traceback (most recent call last):
  File "/home/lund/src/airtouch2-python/src/airtouch2/protocol/at2plus/control_status_common.py", line 74, in from_bytes
    subtype = ControlStatusSubType(subheader_bytes[0])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/enum.py", line 1128, in __new__
    raise ve_exc
ValueError: 43 is not a valid ControlStatusSubType
Unknown status message type: subtype=0, data=2b:00:00:00:00:04:00:06:80:80:07:ff:81:81:07:ff:82:82:07:ff:83:83:07:ff:90:ff:02:ef:91:ff:07:ff

These two seem to be the most common.

The system also has zone controls. Is this something that is not currently supported?

Currently starting on zone support. I’ve pushed a new release with some minimal support but need some people to test please. Discuss here: Zone support · Issue #2 · nathanvdh/homeassistant-airtouch2plus · GitHub