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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Test Adapter LG ThinQ

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                              • ofri2607
                                ofri2607 @Lucky_ESA last edited by

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

                                z. Bsp. deine Klimanlage einschalten. Den JSON den ich benötige fängt im Log mit sendCommandToDevice

                                Herzlichen Dank für deinen Antwort, da hatte ich dich zuerst Missverstanden.

                                Einschalten liefert folgendes json im Log:

                                sendCommandToDevice: {"ctrlKey":"basicCtrl","command":"Operation","dataKey":"airState.operation","dataValue":"1","dataSetList":null,"dataGetList":null}
                                

                                Änderung im Sollwert folgendes:

                                sendCommandToDevice: {"ctrlKey":"basicCtrl","command":"Set","dataKey":"airState.tempState.target","dataValue":22,"dataSetList":null,"dataGetList":null}
                                
                                1 Reply Last reply Reply Quote 0
                                • ofri2607
                                  ofri2607 @Lucky_ESA last edited by ofri2607

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

                                  Kannst ja mal diesen JSON testen

                                  Leider nein, liefert

                                  {"resultCode":"0000","result":{"data":""}}	
                                  

                                  und Display bleibt an bzw. aus - habe beide dataValue probiert.
                                  Unter snapshot.airState.lightingState.displayControl kommen die mit der FB geschalteten States sauber an, auch wenn witziger Weise 0 = an und 1 = aus ist.

                                  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:

                                    Könnt ihr nun vom GIT laden und testen,

                                    Nur zur Sicherheit, auch wieder den Ordner xxx.remote löschen?

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

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

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

                                      Könnt ihr nun vom GIT laden und testen,

                                      Nur zur Sicherheit, auch wieder den Ordner xxx.remote löschen?

                                      Nein, aber du hast ein thinq2 Geräte und daher sind die Änderungen auf dem GIT für dich nicht relevant. Schade das du dein Display dann nicht einschalten kannst.
                                      Wenn was mit der APP nicht zu schalten ist, können wir nicht wissen was versendet werden muss. Es kann auch sein das es nicht möglich ist.

                                      Gruß//Lucky

                                      ofri2607 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:

                                        Nein, aber du hast ein thinq2 Gerät

                                        Naja, sowohl als auch, ich habe zwei thinq2 und ein thinq1 Gerät.
                                        Ja, das mit dem Display ist Schade, aber herzlichen Dank für deine Bemühungen. Ich habe mir ein paar Automatiken / auch Zeitplan im Javascript gebaut und da hätte ich gerne im Schlafzimmer das Display in der Nacht automatisch mit ausschalten wollen, man wird ja faul mit der Zeit und will sich den Griff zur FB ersparen 😉 - ist aber jetzt absolut nicht's Essentielles.

                                        Und jetzt gehe ich mal das thinq1 Gerät testen

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

                                          @ofri2607 Stimmt, du hast ja beide Geräte...Bin verwirrt 🙂

                                          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:

                                            @ofri2607 Stimmt, du hast ja beide Geräte...Bin verwirrt 🙂

                                            Gruß//Lucky

                                            Edit: Wenn du den Zeitplan auch für thinq1 benötigst, musst du tombox mal fragen ober er nachschauen kann.

                                            Gruß//Lucky

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            63
                                            876
                                            193390
                                            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