Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter LG ThinQ

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter LG ThinQ

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Lucky_ESA Developer Most Active @Paul Kersey last edited by

      @paul-kersey sagte in Test Adapter LG ThinQ v0.0.1:

      Mir ist aufgefallen, dass wenn ich mit der App ausschalte, der Status im Objekt nicht geändert wird. Das führt dazu, dass das Skript bei der nächsten Ausführung nicht mehr funktioniert.

      Unter welchem Object?

      Gruß//Lucky

      P 1 Reply Last reply Reply Quote 0
      • P
        Paul Kersey @Lucky_ESA last edited by

        @lucky_esa IMG_0001.jpeg

        L 1 Reply Last reply Reply Quote 0
        • ofri2607
          ofri2607 @Lucky_ESA last edited by

          @lucky_esa a bissal Berufskrankheit .. 😉
          Das mit der Nichtaktualisierung bei remote.Settings finde ich auch gut so, für den korrekten State gibt es ja die snapshots.
          Ich bastel gerade etwas in Javascript für die Automatisierungen meiner Klimaanlagen herum. Daher habe ich mich auch mit dem Verhalten bei den thinq2 Geräte etwas gespielt. Diese reagieren z.B. beim Senden der Sollwerttemperatur nicht (bzw. mit error im Log) wenn die Klimaanlage nicht eingeschalten ist, daher interessant, dass das thinq1 Gerät mit dem SetTempCfg und dem SetWindStrenght auch die Klima einschaltet; macht es dann etwas leichter im Code für mich.

          Kannst du im Tempalte sehen was du runterladen kannst.

          Wie meinst du das, mit dem Template runterladen?

          Mich würde interessieren was er hier macht.

                "SetRecommendWind": {
                  "_comment": "SET_추천바람",
                  "cmd": "Config",
                  "cmdOpt": "Set",
                  "value": "{\"AirCapsule\" : \"{ \"OpMode\":\"{{OpMode}}\",\"TempCfg\":\"{{TempCfg}}\"}",
                  "encode": true
                },
          

          Soll ich diesen mal implementieren?

          Ja, gerne. Kann es aber wahrscheinlich erst wieder am Mittwoch oder Freitag ausprobieren.

          BG Oliver

          P L 2 Replies Last reply Reply Quote 0
          • P
            Paul Kersey @ofri2607 last edited by

            @ofri2607 Also ist das so richtig, dass es nicht umschaltet?

            1 Reply Last reply Reply Quote 0
            • L
              Lucky_ESA Developer Most Active @Paul Kersey last edited by

              @paul-kersey sagte in Test Adapter LG ThinQ v0.0.1:

              @lucky_esa IMG_0001.jpeg

              Du hast ja thinq2 da sollten die Daten sofot über MQTT kommen. Stelle bitte mal auf Debug und schalte erneut per APP.

              Gruß//Lucky

              L 1 Reply Last reply Reply Quote 0
              • L
                Lucky_ESA Developer Most Active @Lucky_ESA last edited by

                @lucky_esa sagte in Test Adapter LG ThinQ v0.0.1:

                @paul-kersey sagte in Test Adapter LG ThinQ v0.0.1:

                @lucky_esa IMG_0001.jpeg

                Du hast ja thinq2 da sollten die Daten sofot über MQTT kommen. Stelle bitte mal auf Debug und schalte erneut per APP.

                Gruß//Lucky

                @ofri2607 Hat thinq1 und nicht wie du thinq2

                ofri2607 1 Reply Last reply Reply Quote 0
                • L
                  Lucky_ESA Developer Most Active @ofri2607 last edited by

                  @ofri2607 Unter modeJsonUri ist eine URL mit der man das Template herunterladen kann. Damit arbeiten wir...Bei thinq1 Geräte passt das noch echt gut aber bei thinq2 wird es schon ungenauer. Des Weiteren enthält dieses Template ALLE Einstellungen was es mir nicht leicht macht in Erfahrung zu bringen, was dein Geräte benötigt bzw. verwendet.

                  Gruß//Lucky

                  ofri2607 2 Replies Last reply Reply Quote 0
                  • ofri2607
                    ofri2607 @Lucky_ESA last edited by

                    @paul-kersey, @Lucky_ESA

                    @ofri2607 Hat thinq1 und nicht wie du thinq2

                    Sowohl als auch.
                    Bei z.B. der Fensterabfrage mache ich es bei meinen thinq2 Geräten so, dass ich bei Fenster auf den DP operation unter „snapshot“ abfrage und wenn offen, dann unter „remote“ „basicCtrl“ den DP operation auf 0 setze. Anschließend prüfe ich, ob der DP in „snapshot“ auch 0 angenommen hat.

                    P 1 Reply Last reply Reply Quote 0
                    • ofri2607
                      ofri2607 @Lucky_ESA last edited by

                      @lucky_esa
                      Ok, herzlichen Dank für die Info. Schaue ich mir die Tage mal genauer an, vielleicht kann ich euch ja etwas helfen.

                      1 Reply Last reply Reply Quote 0
                      • P
                        Paul Kersey @ofri2607 last edited by Paul Kersey

                        @ofri2607 Kannst du mir dein Skript für die Fensterabfrage mal zeigen oder so?

                        ofri2607 1 Reply Last reply Reply Quote 0
                        • ofri2607
                          ofri2607 @Paul Kersey last edited by

                          @paul-kersey
                          Grundsätzlich sehr gerne, nur ist das Script mittlerweile sehr umfangreich (und auch noch nicht komplett fehlerfrei), da ich damit sowohl die Heizung im Winter als auch die Klima im Sommer steuere und alle DP‘s über linkedDevices aufgebaut habe; damit wird es vermutlich nicht so einfach zu lesen sein.
                          Ich kann dir aber in den nächsten Tagen mal den Teil mit der Fenstersteuerung und den nativen Datenpunkten zusammenstellen.

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            Paul Kersey @ofri2607 last edited by

                            @ofri2607 Wäre nett, danke.

                            ofri2607 1 Reply Last reply Reply Quote 0
                            • ofri2607
                              ofri2607 @Lucky_ESA last edited by

                              @lucky_esa
                              Ok, habe mal einen ganz schnellen Blick auf das Template geworfen.
                              Wenn du was einbaust, könntest du mir dann auch

                              "SetDisplayControl": {
                                      "_comment": "SET_ë””ìŠ¤í”Œë ˆì´í‘œì‹œìœ ë¬´",
                                      "cmd": "Control",
                                      "cmdOpt": "Set",
                                      "value": "{\"DisplayControl\":\"{{DisplayControl}}\"}"
                                    },
                              
                              

                              mit einbauen? Ich vermute, dass das die Steuerung der Displaybeleuchtung am Innengerät ist.
                              Die würde mir bei den thinq2 Geräte auch fehlen; der snapshot DP ist vorhanden und passt bei den thinq2 Geräte auch, nur ein- und ausschalten habe ich bei den remote DP‘s nicht gefunden.

                              L 1 Reply Last reply Reply Quote 0
                              • L
                                Lucky_ESA Developer Most Active @ofri2607 last edited by Lucky_ESA

                                @ofri2607

                                mit einbauen? Ich vermute, dass das die Steuerung der Displaybeleuchtung am Innengerät ist.
                                Die würde mir bei den thinq2 Geräte auch fehlen; der snapshot DP ist vorhanden und passt bei den thinq2 Geräte auch, nur ein- und ausschalten habe ich bei den remote DP‘s nicht gefunden.

                                Bei dem thinq2 Gerät hatte ich den DP .remote.sendJSON hinzugefügt. Hier kannst du selber einen JSON versenden. Das habe ich ganz weit oben beschrieben...Stelle mal auf Debug und versende was dann poste hier den JSON.
                                Dann können wir den Request zusammenstellen.

                                Gruß//Lucky

                                ofri2607 1 Reply Last reply Reply Quote 0
                                • P
                                  Paul Kersey last edited by

                                  @lucky_esa Mache heute Nachmittag, muss erstmal schauen, wo man Debug einstellt.

                                  Ich vermute du brauchst dann irgendwelche Logs?

                                  1 Reply Last reply Reply Quote 0
                                  • ofri2607
                                    ofri2607 @Paul Kersey last edited by

                                    @paul-kersey sagte in Test Adapter LG ThinQ v0.0.1:

                                    @ofri2607 Wäre nett, danke.

                                    Hier der Auszug zur Fenstersteuerung aus meinem Script, sollte soweit funktionieren.
                                    Ich habe dir mal meine nativen DP's dazu drinnen gelassen, diese musst du durch deine ersetzen.
                                    Es ist auch eine Automatikfunktion eingebaut (über diesen DP schalte ich über die VIS die Steuerung ein bzw. aus); diesen muss du manuell anlegen.

                                    /*******************************************************************************************************
                                     * Klimaanlage - Fenstersteuerung
                                     * *****************************************************************************************************
                                     * v0.1 - 28.06.2023 - Ersterstellung
                                     *******************************************************************************************************
                                     * Steuerung der Klimaanlage in Abhängigkeit der Fensteröffnung
                                     * mit der Möglichkeit die Steuerung zu deaktivieren
                                     * (Automatik true/false als eigenen Datenpunkt manuell anlegen)
                                     *******************************************************************************************************/
                                     
                                    /*******************************************************************************************************
                                     * Setup-Bereich
                                     *******************************************************************************************************/
                                    	//Datenpunkte Fenster - Fenster geöffnet = true, geschlossen = false
                                            //im Array mehrere Fenster möglich
                                    	const l_windows = [																					
                                    		'hmip.0.devices.3014F711A000109D89A225A2.channels.1.windowOpen',					            
                                                    'hmip.0.devices.3014F711A00000DF299B4643.channels.1.windowOpen'
                                    	];									
                                    																										
                                    	//Datenpunkte Klimaanlage Betrieb
                                            //Klimaanlage ist ein- oder ausgeschalten (0/1)
                                    	const l_coolingOperation = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.snapshot.airState.operation'; 
                                            //Befehl für Klimaanlage ein / aus (0/1)      
                                            const l_coolingOperationSet = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.remote.basicCtrl.operation';     
                                    	
                                    	//Datenpunkte Klimaanlage für definierte Starttemperatur und Ventilatoreinstellung beim Fensterschließen
                                    	//=> siehe setCoolingState und Auswahlmöglichkeit bei alle Fenster geschlossen
                                            //Sollwert für Klimaanlage
                                    	const l_coolingSetpoint = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.snapshot.airState.tempState.target';
                                            //Setzen von Sollwert
                                            const l_coolingSetpointSet = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.remote.basicCtrl.target';
                                            //Ventilatordrehzahl (2 = Gering bis 6 = Hoch, 8 = Auto)          
                                            const l_coolingWind = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.snapshot.airState.windStrength';
                                            //Befehl für Ventilatordrehzahl         
                                            const l_coolingWindSet = 'lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.remote.basicCtrl.windStrength';       
                                    	
                                    	//Datenpunkte User - Automatikeinstellung für Fenstersteuerung (true/false) => muss manuell angelegt werden
                                    	const l_coolingAuto = '0_userdata.0.Klimaanlage.SZ-Automatik';
                                    	
                                             //Usereinstellungen
                                    	const delay = 15000;	//Zeit in ms für Zeitverzögerung in der Prüfung und ggf. Senden weiterer Befehle
                                    	
                                    	//**************************************************************************************************/
                                    	//Logging
                                            const logging = true;
                                            const logInfo = "Klimaanlage: ";
                                    
                                    /*******************************************************************************************************/
                                        const dpObj = {
                                            "func": 	l_coolingOperation,
                                    	"funcSet": 	l_coolingOperationSet,
                                            "temp": 	l_coolingSetpoint,
                                    	"tempSet": 	l_coolingSetpointSet,
                                            "wind": 	l_coolingWind,
                                    	"windSet": 	l_coolingWindSet,
                                        };
                                        let operationWhileAuto = false;
                                        const timer = ms => new Promise(res => setTimeout(res, ms));    
                                    	
                                        function checkWindowOpen() {
                                    	let open = false;
                                    	for (let i = 0; i < l_windows.length; i++) {
                                    		if (getState(l_windows[i]).val) open = true;
                                    	};
                                    	return open;
                                         };
                                    	
                                         function init(opFlag) {
                                    	if (getState(l_coolingAuto).val) {
                                    		let openWindow = checkWindowOpen();
                                    		if (openWindow && getState(l_coolingOperation).val === 1) {
                                    			operationWhileAuto = opFlag;
                                    			let success = setCoolingState({"func": 0});
                                    			if (success && logging) log(logInfo + "Fenster geöffnet, Klimaanlage ausgeschalten", "info");
                                    		};
                                    	} else {
                                    		operationWhileAuto = false;
                                    		if (logging) log(logInfo + "Automatik für Fenstersteuerung ist ausgeschalten", "info");
                                    	};
                                        };
                                    	
                                        async function setCoolingState(setObj){
                                    	//Möglichkeiten im Aufruf, z.B.
                                    	//setCoolingState({"func": 1, "temp": 22, "wind": 8});
                                    	//setCoolingState({"func": 0});		
                                            for (const key in setObj) {
                                                if (dpObj[key] !== undefined) {
                                                    let dpState = dpObj[key];
                                                    let dpSet = dpObj[key + "Set"];
                                                    if (!existsState(dpState) || !existsState(dpSet)) {
                                    		        log(logInfo + "Datenpunkt für '" + key + "' nicht vorhanden", "error");
                                    			return false;
                                                    };
                                                    if (getState(dpSet).val != setObj[key] || getState(dpSet).val != getState(dpState).val) {
                                                        if (logging) log(logInfo + "Befehl " + key + " = " + setObj[key] + " senden", "debug");
                                                        await setStateAsync(dpSet, setObj[key]);
                                                        for(let i = 1 ; i < 3 ; i++) {
                                                            await timer(delay);
                                                            let stateVal = getState(dpState).val;
                                                            let setVal = getState(dpSet).val;
                                                            if (stateVal != setVal) {
                                                                if (i == 1) {
                                                                    if (logging) log(logInfo + "Zeiterverzögerung in Rückmeldung des Befehls " + key + " = " + setObj[key], "warn");
                                                                } else {
                                    				log(logInfo + "Senden des Befehls " + key + " = " + setObj[key] + " nicht erfolgreich", "error");
                                                                    setState(dpSet, stateVal);
                                    				return false;
                                                                };
                                                            } else {
                                                                break;
                                                            };
                                                        };
                                                    };
                                                };
                                            };
                                    	return true;
                                        };
                                    	
                                    /*******************************************************************************************************
                                     * Hauptprogrammteil
                                     *******************************************************************************************************/
                                    //Programmstart
                                    	init(true);
                                    
                                    //Eventhandler
                                    	//Ein Fenster wurde geöffnet oder alle Fenster sind geschlossen
                                    	on({id: l_windows, change: "any"}, function(){
                                    		if (getState(l_coolingAuto).val) {
                                    			let openWindow = checkWindowOpen();
                                    			//Ein Fenster geöffnet und Klimaanlage in Betrieb
                                    			if (openWindow && getState(l_coolingOperation).val === 1) {
                                    				operationWhileAuto = true;
                                    				let success = setCoolingState({"func": 0});
                                    				if (success && logging) log(logInfo + "Fenster geöffnet, Klimaanlage ausgeschalten", "info");
                                    			};
                                    			//Alle Fenster geschlossen und Klima war zuvor in Betrieb
                                    			if (!openWindow && operationWhileAuto){
                                    				operationWhileAuto = false;
                                    				//Wenn EINE definierte Starttemperatur und Ventilatoreinstellung verwendet werden soll, dann folgende Zeile
                                    				//let success = setCoolingState({"func": 1, "temp": 22, "wind": 8});
                                    				//Wenn KEINE definierte Starttemperatur und Ventilatoreinstellung verwendet werden soll, dann folgende Zeile
                                    				let success = setCoolingState({"func": 1});
                                    				if (success && logging) log(logInfo + "Fenster geschlossen, Klimaanlage eingeschalten", "info");
                                    			};
                                    		};
                                    	});
                                    	
                                    	//Automatik oder Klimaanlage (über Fernbedienung oder App) wurde ein- oder ausgeschalten
                                    	on({id: [l_coolingAuto, l_coolingOperation], change: "any"}, function(){
                                                   let openWindow = checkWindowOpen();
                                                   init(!openWindow);
                                    	});
                                    

                                    P 1 Reply Last reply Reply Quote 0
                                    • ofri2607
                                      ofri2607 @Lucky_ESA last edited by

                                      @lucky_esa sagte in Test Adapter LG ThinQ v0.0.1:

                                      Hier kannst du selber einen JSON versenden. Das habe ich ganz weit oben beschrieben...

                                      Hallo Lucky,
                                      ich habe mir jetzt mal das Template vom thinq2 Geräte mal genauer angesehen; ok, ist heftig.
                                      Zur Beschreibung habe ich den Post und den Post von dir gefunden, oder habe ich da noch etwas übersehen?
                                      Da bräuchte ich noch etwas Hilfe:
                                      Bei meinem thinq2 Gerät würde es mir noch um das Ein- und Ausschalten der Displaybeleuchtung gehen. Der Status an sich ist im DP lg-thinq.0.dfbdfc44-8efb-148a-acc9-44cb8b32f2ea.snapshot.airState.lightingState.displayControl enthalten.
                                      Im Template müsste das ja dann

                                      "airState.lightingState.displayControl":{
                                      	"data_type":"enum",
                                      	"default":"0",
                                      	"value_mapping":{
                                      		"0":"@RAC_LED_ON",
                                      		"1":"@RAC_LED_OFF",
                                      		"2":"@NON",
                                      		"3":"@NON",
                                      		"4":"@NON",
                                      		"5":"@NON",
                                      		"6":"@NON",
                                      		"7":"@NON",
                                      		"8":"@NON",
                                      		"9":"@NON",
                                      		"10":"@NON",
                                      		"11":"@AC_LED_OFF_W",
                                      		"12":"@AC_LED_ON_W",
                                      		"13":"@AC_LED_AUTO_W"
                                      	}
                                      }
                                      

                                      sein, oder?
                                      Ich würde aber mal einschätzen, dass das nicht das ist, was als sendJSON versendet werden soll?

                                      Zu lightingState hätte ich dann im Template noch das gefunden, wo ich annehmen würde, dass es ein Befehl ist (wobei ich aus den Bezeichnungen befürchte, dass es nicht das gewünschte ist):

                                      {
                                      	"ctrlKey":"settingInfo",
                                      	"comment":"원격제어-설정",
                                      	"command":"Get|Set",
                                      	"dataKey":"airState.powerSave.basic|airState.miscFuncState.autoDry|airState.lightingState.magicBrightness|airState.lightingState.mood|airState.voice.spkVolume|airState.tempState.unit",
                                      	"dataValue":"{%airState.powerSave.basic%}|{%airState.miscFuncState.autoDry%}|{%airState.lightingState.magicBrightness}|{%airState.lightingState.mood%}|{%airState.voice.spkVolume%}|{%airState.tempState.unit%}"
                                      }
                                      

                                      Müsste ich dann genau diesen Teil in .remote.sendJSON eintragen? Sieht auch ganz anders aus, als in deinem Post oben zur WM.

                                      Bevor ich da jetzt an die Klima irgendwas schicke, frage ich lieber nochmal nach.
                                      BG Oliver

                                      L 2 Replies Last reply Reply Quote 0
                                      • L
                                        Lucky_ESA Developer Most Active @ofri2607 last edited by

                                        @ofri2607 Du musst den Adapter auf Debug stellen und dann z. Bsp. deine Klimanlage einschalten. Den JSON den ich benötige fängt im Log mit sendCommandToDevice an.

                                        Gruß//Lucky

                                        ofri2607 1 Reply Last reply Reply Quote 0
                                        • L
                                          Lucky_ESA Developer Most Active last edited by

                                          Hallo AC thinq1 Nutzer, @tombox hat mir die Daten zugesendet die versendet werden. Könnt ihr nun vom GIT laden und testen, wobei ich es eigentlich schon getestet habe...

                                          Gruß//Lucky

                                          ofri2607 2 Replies Last reply Reply Quote 1
                                          • L
                                            Lucky_ESA Developer Most Active @ofri2607 last edited by

                                            @ofri2607 Eher Link hier

                                            Kannst ja mal diesen JSON testen. Auch wenn der Code in dem Template vorhanden ist, muss es nicht bei dir funktionieren.

                                            {"ctrlKey":"settingInfo","command":"Set","dataKey":"airState.lightingState.displayControl","dataValue":1,"dataSetList":null,"dataGetList":null}
                                            

                                            Gruß//Lucky

                                            ofri2607 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            900
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            64
                                            878
                                            209329
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo