Moin,
angeregt durch diesen thread (https://forum.fhem.de/index.php?topic=142849.msg1350317#msg1350317) habe ich mich die letzte beiden Abende mit ChatGPT an ein Modul gewagt was Geräte aus der ThinQ App in FHEM abbilden und steuern kann. Dazu wird die offizielle LG-ThinQ-API-v2 benutzt.
Als erstes müssen wir auf diese Seite gehen
HIER (https://connect-pat.lgthinq.com/login)
Hier ändern wir oben die Sprache auf deutsch und melden uns mit unserem LG-Account an.
Dann erstellen wir einen PAT (Personal Access Token). Diesen kopieren.
Als nächstes die Beiden Module im Anhang in euren Modulordner (fhem/FHEM) packen.
fhem Neustarten
Das Connect-Device anlegen mit
defmod <NAME> LGThinQ_Connect <PAT>wenn ihr wollt, dass eure LG_devices automatisch angelegt werden müsst ihr noch das
autocreateDevices Attribut auf 1 setzen (funktioniert natürlich nur wenn das autocreate in fhem aktiv ist). Dies wird nach dem holen der Deviceliste von LG wieder auf 0 gesetzt.
Jetzt einmal
set <NAME> connect ausführen.
Nun sollten eure LG Geräte automatisch angelegt werden.
Im Device Modul ist mapping eingebaut, aber nur für Klimaanlage und Kühlschrank. Weitere Mappings könnt ihr selbst im Modul ab Zeile 404 hinzufügen. Alle benötigten Infos über die, von LG gelieferten, readings bekommt ihr im Device-reading "apiStateRaw".
Die Set-Befehle werden automatisch angelegt, dazu wird das reading "apiProfileRaw" benötigt.
Probiert es einfach mal aus.
Mit freundlichen Grüßen
Daniel
Neue Version ist Oben angehängt.
stateformat wurde hinzugefügt.
Hi,
konnte es soweit mit meiner WP LG ThermaV verbinden. Kannst du mir einen Tipp geben wie ich nun genau weitere Readings ab Zeile 404 hinzufügen kann?
Folgende Infos im apiStateRaw Reading:
{"timestamp":"2026-01-20T16:22:19.217518","messageId":"o0KwmLctidQ7MtnpZkQ4fw","response":{"roomTemperatureInUnits":[{"waterCoolMinTemperature":5,"airHeatMinTemperature":16,"waterHeatMaxTemperature":65,"unit":"C","inWaterCurrentTemperature":46,"airCoolMinTemperature":16,"airCurrentTemperature":26,"airCoolMaxTemperature":30,"currentTemperature":48,"waterHeatMinTemperature":15,"outWaterCurrentTemperature":48,"waterCoolMaxTemperature":27,"targetTemperature":17,"airHeatMaxTemperature":30},{"waterCoolMaxTemperature":80,"targetTemperature":62,"airHeatMaxTemperature":86,"waterHeatMinTemperature":58,"outWaterCurrentTemperature":118,"currentTemperature":118,"airCoolMaxTemperature":86,"airCurrentTemperature":78,"unit":"F","airCoolMinTemperature":60,"inWaterCurrentTemperature":114,"airHeatMinTemperature":60,"waterHeatMaxTemperature":148,"waterCoolMinTemperature":40}],"temperature":{"targetTemperature":0,"unit":"C","heatMaxTemperature":65,"coolMaxTemperature":27,"currentTemperature":48,"heatMinTemperature":15,"coolMinTemperature":5},"boilerJobMode":{"currentJobMode":"AUTO"},"operation":{"boilerOperationMode":"POWER_ON","roomTempMode":"WATER","hotWaterMode":"ON","roomWaterMode":"OUT_WATER"},"hotWaterTemperatureInUnits":[{"unit":"C","minTemperature":30,"targetTemperature":52,"maxTemperature":80,"currentTemperature":52},{"maxTemperature":176,"currentTemperature":126,"targetTemperature":126,"minTemperature":86,"unit":"F"}]}}
Danke !
Moin,
so in etwa
Zitat(
# -------- Raum / Wasser Temperaturen --------
'temperature.currentTemperature' => {
name => 'currentTemp',
},
'temperature.targetTemperature' => {
name => 'targetTemp',
},
'temperature.coolMinTemperature' => {
name => 'coolMinTemp',
},
'temperature.coolMaxTemperature' => {
name => 'coolMaxTemp',
},
'temperature.heatMinTemperature' => {
name => 'heatMinTemp',
},
'temperature.heatMaxTemperature' => {
name => 'heatMaxTemp',
},
# -------- Raumtemperatur (Celsius) --------
'roomTemperatureInUnits.0.airCurrentTemperature' => {
name => 'roomAirTemp',
},
'roomTemperatureInUnits.0.currentTemperature' => {
name => 'roomCurrentTemp',
},
'roomTemperatureInUnits.0.targetTemperature' => {
name => 'roomTargetTemp',
},
# -------- Wasser Temperaturen --------
'roomTemperatureInUnits.0.inWaterCurrentTemperature' => {
name => 'waterInTemp',
},
'roomTemperatureInUnits.0.outWaterCurrentTemperature' => {
name => 'waterOutTemp',
},
# -------- Boiler Job Mode --------
'boilerJobMode.currentJobMode' => {
name => 'boilerJobMode',
},
# -------- Operation Modes --------
'operation.boilerOperationMode' => {
name => 'boilerPower',
},
'operation.hotWaterMode' => {
name => 'hotWaterMode',
},
'operation.roomTempMode' => {
name => 'roomTempMode',
},
'operation.roomWaterMode' => {
name => 'roomWaterMode',
},
# -------- Hot Water --------
'hotWaterTemperatureInUnits.0.currentTemperature' => {
name => 'hotWaterCurrentTemp',
},
'hotWaterTemperatureInUnits.0.targetTemperature' => {
name => 'hotWaterTargetTemp',
},
'hotWaterTemperatureInUnits.0.minTemperature' => {
name => 'hotWaterMinTemp',
},
'hotWaterTemperatureInUnits.0.maxTemperature' => {
name => 'hotWaterMaxTemp',
},
Hast du Set-Befehle bekommen um die WP zu steuern?
Mit freundlichen Grüßen
EDIT:
Neue Version mit readings für LG Wärmepumpe oben angehängt.
Hi,
TOP !! Danke !
ja im apiProfileRaw Reading:
Habe allerdings ein Token ohne Set Befehle eingebaut. Möchte nur auslesen.
{"response":{"property":{"boilerJobMode":{"currentJobMode":{"mode":["r","w"],"value":{"r":["HEAT","AUTO","COOL"],"w":["HEAT","AUTO","COOL"]},"type":"enum"}},"hotWaterTemperatureInUnits":[{"minTemperature":{"type":"number","mode":["r"]},"currentTemperature":{"mode":["r"],"type":"number"},"unit":"C","targetTemperature":{"type":"range","value":{"w":{"min":30,"max":80,"step":1},"r":{"min":30,"max":80,"step":1}},"mode":["r","w"]},"maxTemperature":{"mode":["r"],"type":"number"}},{"currentTemperature":{"type":"number","mode":["r"]},"minTemperature":{"mode":["r"],"type":"number"},"maxTemperature":{"mode":["r"],"type":"number"},"unit":"F","targetTemperature":{"value":{"r":{"step":2,"max":176,"min":86},"w":{"step":2,"min":86,"max":176}},"type":"range","mode":["r","w"]}}],"roomTemperatureInUnits":[{"airCoolTargetTemperature":{"mode":["w"],"value":{"w":{"min":18,"max":30,"step":1}},"type":"range"},"airHeatMinTemperature":{"mode":["r"],"type":"number"},"inWaterCurrentTemperature":{"mode":["r"],"type":"number"},"outWaterCurrentTemperature":{"type":"number","mode":["r"]},"airHeatMaxTemperature":{"mode":["r"],"type":"number"},"waterCoolMinTemperature":{"type":"number","mode":["r"]},"waterCoolTargetTemperature":{"mode":["w"],"type":"range","value":{"w":{"max":24,"min":5,"step":1}}},"waterHeatMaxTemperature":{"type":"number","mode":["r"]},"airCoolMinTemperature":{"type":"number","mode":["r"]},"airCurrentTemperature":{"type":"number","mode":["r"]},"airCoolMaxTemperature":{"mode":["r"],"type":"number"},"waterCoolMaxTemperature":{"type":"number","mode":["r"]},"waterHeatTargetTemperature":{"value":{"w":{"max":57,"min":14,"step":1}},"type":"range","mode":["w"]},"currentTemperature":{"type":"number","mode":["r"]},"targetTemperature":{"mode":["r"],"type":"number"},"unit":"C","airHeatTargetTemperature":{"value":{"w":{"step":1,"max":30,"min":16}},"type":"range","mode":["w"]},"waterHeatMinTemperature":{"type":"number","mode":["r"]}},{"waterCoolTargetTemperature":{"mode":["w"],"value":{"w":{"min":40,"max":76,"step":2}},"type":"range"},"waterCoolMinTemperature":{"mode":["r"],"type":"number"},"waterHeatMaxTemperature":{"type":"number","mode":["r"]},"waterCoolMaxTemperature":{"mode":["r"],"type":"number"},"waterHeatTargetTemperature":{"mode":["w"],"type":"range","value":{"w":{"step":2,"max":134,"min":58}}},"currentTemperature":{"mode":["r"],"type":"number"},"waterHeatMinTemperature":{"type":"number","mode":["r"]},"unit":"F","airHeatTargetTemperature":{"mode":["w"],"type":"range","value":{"w":{"step":2,"max":86,"min":60}}},"targetTemperature":{"type":"number","mode":["r"]},"airCurrentTemperature":{"mode":["r"],"type":"number"},"airCoolMinTemperature":{"type":"number","mode":["r"]},"airCoolMaxTemperature":{"mode":["r"],"type":"number"},"inWaterCurrentTemperature":{"type":"number","mode":["r"]},"airHeatMinTemperature":{"type":"number","mode":["r"]},"airHeatMaxTemperature":{"type":"number","mode":["r"]},"outWaterCurrentTemperature":{"type":"number","mode":["r"]},"airCoolTargetTemperature":{"mode":["w"],"type":"range","value":{"w":{"min":64,"max":86,"step":2}}}}],"temperature":{"heatTargetTemperature":{"mode":["w"],"type":"number"},"coolTargetTemperature":{"type":"number","mode":["w"]},"currentTemperature":{"type":"number","mode":["r"]},"coolMinTemperature":{"mode":["r"],"type":"number"},"unit":{"mode":["r"],"value":{"r":["C"]},"type":"enum"},"targetTemperature":{"mode":["r"],"type":"number"},"heatMinTemperature":{"type":"number","mode":["r"]},"coolMaxTemperature":{"mode":["r"],"type":"number"},"heatMaxTemperature":{"type":"number","mode":["r"]}},"operation":{"boilerOperationMode":{"mode":["r","w"],"value":{"w":["POWER_ON","POWER_OFF"],"r":["POWER_ON","POWER_OFF"]},"type":"enum"},"hotWaterMode":{"mode":["r","w"],"value":{"w":["OFF","ON"],"r":["OFF","ON"]},"type":"enum"},"roomTempMode":{"mode":["r"],"value":{"r":["AIR","WATER"]},"type":"enum"},"roomWaterMode":{"mode":["r"],"type":"enum","value":{"r":["OUT_WATER","IN_WATER"]}}}}},"timestamp":"2026-01-20T17:13:01.043307","messageId":"QduesqWEVjr-zEppFOprww"}
mfg
Zitatja im apiProfileRaw Reading:
das ist klar, die Daten werden vom Mode abgerufen und als reading gespeichert um daraus mögliche Set-Befehle an zu legen.
Was ich meine ist, werden dir die Set-Befehle oben angeboten?
Mit freundlichen Grüßen
nein nur get
danke
Hallo,
der Connect zu Samsung ist erfolgreich. Allerdings wird meine Samsung "EHS Mono r290 Wärmepumpe" nicht in die deviceMap geladen. Leider hat Dein CoAutor keinerlei Log Informationen eingebaut.
Grüße Jörg
Moin,
Samsung???
Das Modul ist für LG ThinQ
Zitat von: Shadow3561 am 21 Januar 2026, 16:33:14Moin,
Samsung???
Das Modul ist für LG ThinQ
Puh, nicht mein Tag. Hatte parallel an Samsung gearbeitet.
Sorry und Grüße Jörg
Hallo,
ich habe "set <NAME> connect" ausgeführt und habe dann auch ein connect.
Aber es werden keine Readings angelegt.
Muss ich sonst noch was beachten.
In der App In der LG Thinq App habe ich 2 Klimas angelegt.
Danke!!!!
Moin, Hast du die Klimaanlage eingeschaltet und mal bedient?
Poste bitte einmal die readings apiStateRawund apiProfileRaw
Auch Moin,
die gibt es nicht
deviceMap {} 2026-03-27 14:53:41
state connected2026-03-27 14:53:41
Das ist alles
Die PAT habe ich auch generiert.
Fehlt da noch was? Verbindung PAT zu meinen Geräten?
Muss ich irgendwo noch was einstellen?
Der Bezug der PAT zu meinen Geräten kann ich nicht nachvollziehen
Zeig mal bitte ein list vom den devices
Internals:
COUNTRY DE
DEF patnummer
FUUID 69c5232f-f33f-b274-c3ce-021274353ba4b396
NAME Klima_Wohnzimmer
NR 1612
PAT <patnummer>
REGION EIC
STATE defined
TYPE LGThinQ_Connect
READINGS:
2026-03-28 12:01:27 deviceMap {}
2026-03-28 13:33:01 state defined
Attributes:
autocreateDevices 1
country DE
2026-03-28 12:01:27 deviceMap {}Hier sollten eigentlich die empfangenen Geräte drin stehen mit device-id usw.
autocreateDevices 1
Und welches device wurde erstellt?
Das ist ja mein Problem. KEINE.
Mit "set Klima_Wohnzimmer connect"
erscheint
"device list updated" oben links in der Ecke
"autocreateDevices 1" wird nicht auf 0 gesetzt !!!!!
Das war es dann auch.
Unter opt/fhem/FHEM
sind die beiden Programme kopiert.
Der "state" steht jetzt auf connected
mach doch noch einmal ein
list Klima_Wohnzimmerund lasse die ersten und letzten Zeichen vom PAT drin. In der Mitte bitte unkenntlich machen.
so ok ?
Internals:
COUNTRY DE
DEF thinqpat_40d53e7xxxxxxxxxxxxxxxxxxxx60c65454bdd6c724ed53aa692
FUUID 69c5232f-f33f-b274-c3ce-021274353ba4b396
NAME Klima_Wohnzimmer
NR 1629
PAT thinqpat_40d53e7xxxxxxxxxxxxxxxxxxxx60c65454bdd6c724ed53aa692
REGION EIC
STATE connected
TYPE LGThinQ_Connect
eventCount 4
READINGS:
2026-03-29 15:54:48 deviceMap {}
2026-03-29 15:54:48 state connected
helper:
devices:
Attributes:
autocreateDevices 1
country DE
Sollte so passen. Hast du dich bei der Seite wo du den PAT bekommst mit dem Nutzernamen und Passwort von deinem LG Account angemeldet? Es müssen die selben sein wie von deiner ThinQ App
So, ich habe jetzt alles neu definiert und jetzt bekomme ich tatsächlich auch meine 2 Klimas.
Ich bin begeistert.
Sorry für die Umstände. Leider weiß ich jetzt nicht was die Ursache war.
Nochmal sorry und schöne Woche
Rainer
ZitatNochmal sorry und schöne Woche
Kein Problem. Ebenfalls eine schöne Wiche und viel Spaß beim regeln der Klimageräte. Freut mich, dass es geklappt hat.
Gruss