Reverseengineering und Befreiung von der Cloud für Klimanalgen mit Wifi Modul

Begonnen von rockall, 01 August 2023, 10:00:12

Vorheriges Thema - Nächstes Thema

rockall

Hallo Zusammen,

ich habe das UART Protokoll für das Wifi-Modul meine Klimaanlage reverse engineered: https://github.com/adaasch/AC-hack
Damit ist es möglich sie direkt in die Homeautomation zu integrieren, z.B. über MQTT.
Meine ist von der Marke "Kesser", aber es ist wohl ein Rebrand von TCL.

Vielleicht ist es ja nützlich für jemanden hier. Ich würde mich freuen über Rückmeldungen bzgl. anderer Marken mit selben Modul.

KölnSolar

Prima.  8) Das erfreut den Cloud- und Wifi-Smart-Home-Gegner.

Habe aktuell noch keine Klima, wird aber in ein paar Monaten voraussichtlich eine Mitsubishi Heavy Industries mit Wifi. Werde ich mir dann sicherlich näher angucken.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

kask

Das gucke ich mir mal an. Hatte das auch vor und an anderer Stelle was dazu gefunden.
Das war aber auch nicht komplett re-engineered (https://github.com/htmltiger/tcl-electriq-split-ac).

Hier mal Daten die meine Klima mit (Tuya) so sendet und empfängt:
0x0_esp_len
   
730
   
2023-06-11 21:22:18
0x3_ac
   
BB010003370400358600200000000000006E23880000000000000000000070FF40005F35343C00008000000000EA0000004440004800007A000000002D
   
2023-06-11 16:13:28
0x3_ac_len
   
122
   
2023-06-11 16:13:28
0x3_esp
   
BB0001031D000064085900080000000000000000000000000000000000000000008811
   
2023-06-11 16:13:28
0x3_esp_07
   
0000000001100100-100
   
2023-06-11 16:13:28
0x3_esp_08
   
0000000000001000-8
   
2023-06-11 16:13:28
0x3_esp_09
   
0000000001011001-89
   
2023-06-11 16:13:28
0x3_esp_10
   
0000000000000000-0
   
2023-06-11 16:13:28
0x3_esp_11
   
0000000000001000-8
   
2023-06-11 16:13:28
0x3_esp_31
   
0000000000000000-0
   
2023-06-11 16:13:28
0x3_esp_32
   
0000000000000000-0
   
2023-06-11 16:13:28
0x3_esp_33
   
0000000010001000-136
   
2023-06-11 16:13:28
0x3_esp_len
   
70
   
2023-06-11 16:13:28
0x4_ac
   
BB01000437040025860020000000000000750B080000000000000000000073FF40000038344600008000000000EA0000004440004800007A00000000A2
   
2023-06-12 22:37:23
0x4_ac_len
   
122
   
2023-06-12 22:37:23
0x4_esp
   
BB000104020100BD
   
2023-06-12 22:37:22
0x4_esp_len
   
16
   
2023-06-12 22:37:23
0x5_ac
   
BB0100050B0400000000000000000001B1
   
2023-06-11 16:05:16
0x5_ac_len
   
34
   
2023-06-11 16:05:16
0x5_esp
   
BB00010509000000000000000001B7
   
2023-06-11 16:05:16
0x5_esp_len
   
30
   
2023-06-11 16:05:16
0x9_ac
   
BB0100092D04000000000000FF0000000000FFFF000000000000F0FF000000000000000000000000000000000000000000006A
   
2023-06-12 22:37:18
0x9_ac_len
   
102
   
2023-06-12 22:37:18
0x9_esp
   
BB000109020500B4
   
2023-06-12 22:37:17
0x9_esp_len
   
16
   
2023-06-12 22:37:17
0xa_ac
   
BB01000A2D0400040000000000000000000000000000000000000000000000000000000000000000000000000000000000009D
   
2023-06-12 22:37:17
0xa_ac_len
   
102
   
2023-06-12 22:37:17
0xa_esp
   
BB00010A03050000B6
   
2023-06-12 22:37:17
0xa_esp_len
   
18
   
2023-06-12 22:37:17
0xb_ac
   
BB01000B020400B7
   
2023-06-12 22:05:12
0xb_ac_len
   
16
   
2023-06-12 22:05:12
0xb_esp
   
BB00010B100500E707060C16050B0000000000000056
   
2023-06-12 22:05:12


Sieht ja ziemlich gleich aus.

Mein Plan war einen anderen esp8266 oder esp32 zu nehmen und das über mqtt zu befeuern.
Hast dazu ja schon gut was geleistet.

kask

Ich habe mich am Wochenende jetzt mal rangesetzt und ein Lösung mit einem Wemos mini clone und einem Levelshifter (3.3V <> 5V) umgesetzt.
Das oben aufgeführte Protocol bzw. beide aus den git's ist teilweise nicht ganz richtig (für mich? Ich denke eher das da was versehentlich vertauscht wurde)
Die Protokolle (von beiden git's oben) und zusätzliches uart sniffen brachte dann die Lösung für mich.

An dem oben aufgeführten git, vom Topic starter, hat mich gestört das eine Python instance zusätzlich arbeiten muss zum mqtt.
Ich wollte was standalone ist und via mqtt mit fhem redet.

Das ganze soll angeblich auch ohne Levelshifter funktionieren. War mir aber zu heikel. Die Einen sagen der ESP ist 5V tolerant, die Anderen sagen "kann", muß aber nicht.

Das ganze sollte mit so sämtlichen bzw sehr vielen China-Kracher Tuya/Smartlife Wifi Klimageräten funktionieren. z.B. TCL, Kesser, Hantech, Danyon, Kältebringer, iQool etc.
Alle mit TYWE1S Tuya ESP.

Zum Einrichten:
ESP8266 mit dem bin file flashen.
Es ist ein wifimanager an board. Wenn der ESP sich nicht verbinden kann dann wird ein Accespoint geöffnet mit der SSID "ESPACXXXXXX" (XXXXXX = Teil der MAC Adresse des ESP's).
Zu diesem Verbinden und dort den ESP ins heimische Netzwerk holen.
Nun kann die Datei mit den mqtt-benutzer daten hochgeladen werden. (Diese muß angepasst werden mit den eigenen MQTT Benutzer parametern)
Dazu im Brower http://ip-des-esp/file-upload öffnen und die angepasste mqtt.txt hochladen.
Zudem kann noch die index.htm hochgeladen werden für mehr Komfort.
Jetzt den ESP neustarten damit die mqtt daten geladen werden.

folgende Seiten sind verfügbar.

http://ip-des-esp/file-upload : Upload von Dateien
http://ip-des-esp/update : OTA Upload einer neuen Firmware
http://ip-des-esp/restart : rebootet den ESP
http://ip-des-esp/reset : resetet die wifi parameter und startet den ESP neu
http://ip-des-esp/$sysinfo : Zeigt Speicherinformationen vom ESP


Anbei der Code und ein paar Bilder.
Und mein device aus fhem:
defmod MQTT2_ESPAC492A8E MQTT2_DEVICE ESPAC492A8E
attr MQTT2_ESPAC492A8E DbLogExclude .*
attr MQTT2_ESPAC492A8E alias Klima.Arbeitszimmer
attr MQTT2_ESPAC492A8E icon sani_heating_heatpump
attr MQTT2_ESPAC492A8E readingList ESPAC492A8E:Led:.* Led\
ESPAC492A8E:cdate:.* cdate\
ESPAC492A8E:ctime:.* ctime\
ESPAC492A8E:alive:.* alive\
ESPAC492A8E:ECO:.* ECO\
ESPAC492A8E:DISPLAY:.* DISPLAY\
ESPAC492A8E:POWER:.* POWER\
ESPAC492A8E:TURBO:.* TURBO\
ESPAC492A8E:MUTE:.* MUTE\
ESPAC492A8E:HEALTH:.* HEALTH\
ESPAC492A8E:MODE:.* MODE\
ESPAC492A8E:SETTEMP:.* SETTEMP\
ESPAC492A8E:FAN:.* FAN\
ESPAC492A8E:SWINGV:.* SWINGV\
ESPAC492A8E:SWINGH:.* SWINGH\
ESPAC492A8E:SLEEP:.* SLEEP\
ESPAC492A8E:BEEP:.* BEEP\
ESPAC492A8E:ROOMTEMP:.* ROOMTEMP\
ESPAC492A8E:VANE_V:.* VANE_V\
ESPAC492A8E:VANE_H:.* VANE_H\
ESPAC492A8E:subscriptions:.* subscriptions
attr MQTT2_ESPAC492A8E room Klimaanlage,MQTT2_DEVICE
attr MQTT2_ESPAC492A8E setList TEMPERATUR:23,20,21,22,24,25,26 AC/ESPAC492A8E/SETTEMP $EVTPART1\
LEDoff:noArg AC/ESPAC492A8E/Led true\
LEDon:noArg AC/ESPAC492A8E/Led false\
Power:0,1 AC/ESPAC492A8E/POWER $EVTPART1\
Eco:0,1 AC/ESPAC492A8E/ECO $EVTPART1\
DISPLAY:1,0 AC/ESPAC492A8E/DISPLAY $EVTPART1\
TURBO:0,1 AC/ESPAC492A8E/TURBO $EVTPART1\
SWING:0,1 AC/ESPAC492A8E/SWING $EVTPART1\
SLEEP:0,1 AC/ESPAC492A8E/SLEEP $EVTPART1\
HEALTH:0,1 AC/ESPAC492A8E/HEALTH $EVTPART1\
BEEP:1,0 AC/ESPAC492A8E/BEEP $EVTPART1\
MUTE:0,1 AC/ESPAC492A8E/MUTE $EVTPART1\
Mode:auto,cool,fan,dry,heat AC/ESPAC492A8E/Mode $EVTPART1\
Fan:auto,low,midlow,mid,midhigh,high AC/ESPAC492A8E/AC_FAN $EVTPART1\
VANE_V:off,fixtop,fixupper,fixmid,fixlower,fixbottom,swingfull,swingupper,swinglower AC/ESPAC492A8E/VANE_V $EVTPART1\
VANE_H:off,fixleft,fixmidleft,fixmid,fixmidright,fixright,swingfull,swingleft,swingmid,swingright AC/ESPAC492A8E/VANE_H $EVTPART1
attr MQTT2_ESPAC492A8E stateFormat T: ROOMTEMP °C


Henno

@kask
Sehr schön gelöst.
Ich würde auch gerne 3 Klimaanlagen in FHEM integrieren.
Zwei Hantech (TCL) und eine Comfee

Könntest du kurz war zur Belegung schreiben?
Das ist auf den Fotos nicht so ganz zu erkennen.

Stecker sind diese hier oder?
https://amzn.eu/d/0woDVkH

kask

@Henno
Jepp, genau die Stecker habe ich genutzt.


Klima zum Levelshifter:
Signal/Potenzial <> Stecker <> Kabel <> Levelshifter(High)

5V    <> Schwarz <> Blau <> HV
Masse <> Rot     <> Gelb <> Gnd (HV-Seite)
TX    <> weiß    <> Rot  <> HV3
RX    <> Gelb    <> Grün <> HV4 

ESP/Levelshifter:
Levelshifter <> Wemos

HV  <> 5V
LV  <> 3.3V
Gnd <> Gnd (HV-Seite)
LV4 <> RX
LV3 <> TX 

Auf dem Levelshifter sind 4 Kanäle. Ich habe Kanal 3 & 4 genutz um es kompakter bzw. mit weniger Kabel zu löten.
Die Spannungsversorgung kommt über das Kabel direkt auf den Levelshifter und der ist mit Stiften direkt am Wemos gelötet an den zwei Kontakten (5V/Gnd).

RappaSan