I’ve gotten a fair way into decoding the output on port 8899 i have posted this all up on the HA forum in the topic you mention but i’ll post it here as well, updates since i published that list are
(looks like FNG’s on this forum are limited to posting only 1 embedded item per post)
also i’m using a nodeRED flow to translate into MQTT where i can more readily access the decoded data
[{"id":"58b5e101.08975","type":"tab","label":"AirTouch","disabled":false,"info":""},{"id":"1bb819ab.902fa6","type":"tcp in","z":"58b5e101.08975","name":"","server":"client","host":"CONTROLLER_IP_ADDRESS","port":"8899","datamode":"stream","datatype":"buffer","newline":"","topic":"","base64":false,"x":220,"y":120,"wires":[["c5afa6a8.a9cb38","d094db5e.852fa8"]]},{"id":"d7a24eba.95206","type":"debug","z":"58b5e101.08975","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":180,"wires":[]},{"id":"d094db5e.852fa8","type":"function","z":"58b5e101.08975","name":"AC Status","func":"var newMsg = \"\"\nvar mqttMessage = \"\"\nvar sysStatus = \"\"\n\nif (msg.payload[354] > 10){\n mqttMessage = {payload:\"ON\", topic:\"tele/AirCon/Power\"};\n} else {\n mqttMessage = {payload:\"OFF\", topic:\"tele/AirCon/Power\"};\n}\nnode.send(mqttMessage,false);\nnode.done();\n\nswitch(msg.payload[358]) {\n case 0:\n mqttMessage = {payload:\"auto\", topic:\"tele/AirCon/Mode\"};\n break;\n case 1:\n mqttMessage = {payload:\"heat\", topic:\"tele/AirCon/Mode\"};\n break;\n case 2:\n mqttMessage = {payload:\"dry\", topic:\"tele/AirCon/Mode\"};\n break;\n case 3:\n mqttMessage = {payload:\"fan_only\", topic:\"tele/AirCon/Mode\"};\n break;\n case 4:\n mqttMessage = {payload:\"cool\", topic:\"tele/AirCon/Mode\"};\n break\n}\nnode.send(mqttMessage,false)\nnode.done();\n\nmqttMessage = {payload:msg.payload[362], topic:\"tele/AirCon/SetPoint\"}\nnode.send(mqttMessage,false);\nnode.done();\nmqttMessage = {payload:msg.payload[364], topic:\"tele/AirCon/CurrentTemp\"}\nnode.send(mqttMessage,false);\nnode.done();\n\nswitch(msg.payload[360]) {\n case 48:\n mqttMessage = {payload:\"Auto\", topic:\"tele/AirCon/FanSpeed\"};\n break;\n case 49:\n mqttMessage = {payload:\"Low\", topic:\"tele/AirCon/FanSpeed\"};\n break;\n case 50:\n mqttMessage = {payload:\"Medium\", topic:\"tele/AirCon/FanSpeed\"};\n break;\n case 51:\n mqttMessage = {payload:\"High\", topic:\"tele/AirCon/FanSpeed\"};\n break;\n}\nnode.send(mqttMessage,false);\nnode.done();\nreturn;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":440,"y":180,"wires":[["f740d5ae.191468","d7a24eba.95206"]]},{"id":"c5afa6a8.a9cb38","type":"mqtt out","z":"58b5e101.08975","name":"AC Raw Data","topic":"tele/AirCon/rawmessage","qos":"","retain":"","broker":"5778013a.241c4","x":460,"y":60,"wires":[]},{"id":"f740d5ae.191468","type":"mqtt out","z":"58b5e101.08975","name":"ACMQTTDecoded","topic":"","qos":"","retain":"","broker":"5778013a.241c4","x":690,"y":120,"wires":[]},{"id":"5778013a.241c4","type":"mqtt-broker","name":"HAssMQTT","broker":"MQTT_SERVER_IP_ADDRESS","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
No control of the system just yet but at least we can see what’s happening and mabe trigger some other actions dependant on what happens here. My first one is to trigger a text-to-speech announcement if any one of the house doors is open and the AC is turned on.