Premiers tests #plugin-lgthinq2

Encore une fois… MERCIIIII Flobul pour ton temps et ton implication :pray: :pray: :pray:

J’update et te fais un retour :wink:

EDIT jeudi 11h15 : J’ai cru voir passer une perte de co/reco, ça sent bon ça :smiling_face: :+1:
lgthinq2 deco-reco.txt (110,0 Ko)

Exact.
jusqu’à 11h18 KO, demande de monitor
et 11h19 retour à la normale.

1 « J'aime »

Les conditions ont été éprouvantes :sweat_smile: Perte de box, coupure de courant, le système a tenu et s’est reco à chaque fois :+1: GG et merci une fois de plus @Flobul :saluting_face:

1 « J'aime »

Bonjour,

Après 2 semaines d’absence pour cause de déplacement pour mon travail, je suis de retour.

Je viens de rattraper les wagons et le travail incroyable que @Flobul a fait ! Merci encore.

Je viens d’installer la dernière version de la branche master et ma PAC est bien reconnu (un peu comme avant) et avec tout un tas de commandes associées. Toutes ne sont pas pertinentes et j’ai fais le trie d’afficher celles qui me sont nécessaires.

Petit retour :

  • Les commandes info de remonté de la température et température de consigne ont l’air de fonctionner :+1:

  • J’ai trouvé l’action SetOperationBy pour intéragir avec la PAC
    • Le problème étant que peut importe la valeur que l’on set, le résultat est le même
[2023-11-20 22:00:30]DEBUG : TEST data cmd  : {"lgedmRoot":{"cmd":"Control","cmdOpt":"Operation","deviceId":"ddd-bbb-ttt-aaa-xxxx","value":"{Operation}","workId":"wid","data":""}}

            Il semblerait qu’il manque la valeur lors de l’envoi de "{Operation}" et que par défaut ce soit à 0 puisque cela éteint ma PAC. L’action marche pour éteindre, mais pas pour allumer que je remplisse le champ avec 0, 1 ou autre chose.

  • La commande de set du mode n’a pas l’air de fonctionner :
[2023-11-20 22:09:10]DEBUG : getTokenIsExpired : refresh_token à jour, il expire dans 639 secondes
[2023-11-20 22:09:10]DEBUG : Données à envoyer en thinq1
[2023-11-20 22:09:10]DEBUG : Données à envoyer en thinq1 headers ["Accept: application\/json","Content-Type: application\/json","x-thinq-application-key: wideq","x-thinq-security-key: nuts","x-thinq-token: token","x-thinq-jsessionId: jid"]
[2023-11-20 22:09:10]DEBUG : TEST data cmd  : {"lgedmRoot":{"cmd":"Control","cmdOpt":"Set","deviceId":"devid","value":"{\"OpMode\":\"@AC_MAIN_OPERATION_MODE_FAN_W\"}","workId":"wid","data":""}}
[2023-11-20 22:09:11]DEBUG : TEST Résultat cmd $response : {"lgedmRoot":{"returnCd":9000,"returnMsg":"잘못된 요청","deviceId":"devid","stateCode":"S","workId":"wid","deviceState":"E","timestamp":0}}
[2023-11-20 22:09:11]DEBUG : execute : Code retour erroné {"returnCd":9000,"returnMsg":"\uc798\ubabb\ub41c \uc694\uccad","deviceId":"devid","stateCode":"S","workId":"wid","deviceState":"E","timestamp":0}

          Est-ce que l’on est sûr qu’il faut envoyer "@AC_MAIN_OPERATION_MODE_FAN_W" et pas "2" ?

  • La commande de set de la température de consigne n’a pas l’air de marcher :
[2023-11-20 22:17:13]DEBUG : getTokenIsExpired : refresh_token à jour, il expire dans 156 secondes
[2023-11-20 22:17:13]DEBUG : Données à envoyer en thinq1
[2023-11-20 22:17:14]DEBUG : Données à envoyer en thinq1 headers ["Accept: application\/json","Content-Type: application\/json","x-thinq-application-key: wideq","x-thinq-security-key: nuts_securitykey","x-thinq-token: tokent","x-thinq-jsessionId: jid"]
[2023-11-20 22:17:14]DEBUG : TEST data cmd  : {"lgedmRoot":{"cmd":"Control","cmdOpt":"Set","deviceId":"devid","value":"{\"TempCfg\":\"23\"}","workId":"wid","data":""}}
[2023-11-20 22:17:15]DEBUG : TEST Résultat cmd $response : {"lgedmRoot":{"returnCd":9000,"returnMsg":"잘못된 요청","deviceId":"devid","stateCode":"S","workId":"n-wid","deviceState":"E","timestamp":0}}
[2023-11-20 22:17:15]DEBUG : execute : Code retour erroné {"returnCd":9000,"returnMsg":"\uc798\ubabb\ub41c \uc694\uccad","deviceId":"devid","stateCode":"S","workId":"n-wid","deviceState":"E","timestamp":0}

          Est-ce que l’on est sûr qu’il faut envoyer un string "23" et pas un int ?

Est-ce que tu as besoin de plus d’informations ?

Encore merci ! :+1:

1 « J'aime »

Bonjour,
je voudrai bien tester le plugin mais je ne le trouve pas dans le market.
Comment peut-on l’installer ?
Merci d’avance.

C’est indiqué ici Problème TV LG OLED55BX6LB : impossible de trouver "LG connect apps" - #17 par Flobul

Merci, je vais tester ça.

      "SetOperation": {
        "_comment": "운전시작",
        "cmd": "Control",
        "cmdOpt": "Operation",
        "value": "{Operation}"
      },

Vu, et corrigé.
Il faut recréer la commande pour corriger.

Oui, c’est ça le problème.
Parfois la valeur que LG fournie est brute parfait, c’est une clé de traduction. Donc faut traduire en inverse.
Corrigé : la valeur et clé de commandes select inversée, la traduction qui ne se faisait pas, la valeur de value qui était en json de json.
Il faut recréer les commandes action pour voir la correction.

    "TempCfg": {
      "_comment": "##희망온도_기본",
      "type": "Range",
      "default": "18",
      "option": {
        "min": 18,
        "max": 30,
        "step": 1
      }
    },

Voilà la doc de LG, c’est un range, donc int je pense. (je pense que int ou string doivent passer)
Mais ici, le problème est pareil qu’avant, la valeur de « value » est un json de json (petit bug). "value":"{\"TempCfg\":\"23\"}", ça devrait être "value":"{"TempCfg":"23"}"
Corrigé. Faut recréer les commandes action pour voir la correction.

Bonsoir,

Merci pour les fix et les réponses. Je testerais cela lundi soir et je ferais un retour d’état.

Hello les amis et encore une fois merci @Flobul, les premières interactions avec les splits sont fonctionnelles chez moi, peut-être bientôt la fin des Broadlink pour les commander :partying_face:

La partie On/Off/choix du mode est OK, idem pour le choix de t°.

D’autres ne fonctionnent pas encore mais j’imagine bien la somme de taf et ces actions ne sont pas primordiales à mes yeux (Allumage/extinction de l’afficheur, Mode Jet, réglage des ailettes).

Une nouvelle fois grand merci à toi :pray:

PS : Est-ce qu’on peut t’aider à quelque chose pour te remercier et surtout te faciliter un peu la tâche ?

1 « J'aime »

Bonsoir,

Je viens de tester les dernières mise à jour, je n’ai pas trouvé comment re-créer les commandes facilement alors j’ai supprimé mon équipement et relancer une synchro. Il semblerait que ça marche également de cette façon.

Bravo pour le travail accompli :clap:. Les commandes on/off, set de température et le mode fonctionnent impeccablement. J’ai eu un code d’erreur à un moment lors du changement de température mais cela ne s’est pas reproduit. J’ai supposé que j’avais un peu trop changé de température trop vite.

Je pense qu’il faudrait forcer le rafraîchissement après les commandes. En effet, lorsque je change de mode, l’affichage de ce dernier n’est affiché qu’après un rafraîchissement. Je le force direct après, via le bouton prévu et ça s’affiche direct.

Concernant les commandes à améliorer de mon coté :

  • GetFilterUse
Données à envoyer en thinq1 headers ["Accept: application\/json","Content-Type: application\/json","x-thinq-application-key: wideq","x-thinq-security-key: nuts_securitykey","x-thinq-token: dsqdsq","x-thinq-jsessionId: dsqdsq.nodes_sadap_10"]
DEBUG : TEST data cmd  : {"lgedmRoot":{"cmd":"Config","cmdOpt":"Get","deviceId":"dsqdsq","value":"Filter","workId":"dsqdsqdsqf4","data":""}}
DEBUG : TEST Résultat cmd $response : {"lgedmRoot":{"returnCd":"0000","returnMsg":"OK","deviceId":"dsqdsq","stateCode":"S","workId":"n-dsqdsqdsq","returnData":"eyJVc2VUaW1lIjoiNzIwIiwiQ2hhbmdlUGVyaW9kIjoiNzIwIiwiQ2hhbmdlRGF0ZSI6IjAifQ==","format":"B64","deviceState":"E","timestamp":0}}
DEBUG : execute : Réponse décodée récupérée {"UseTime":"720","ChangePeriod":"720","ChangeDate":"0"}

     La commande est bien executée et la réponse semble bonne mais n’est pas affiché/affichable. J’ai tenté de récup les infos via le plugin virtuel, mais je n’ai pas trouvé

  • SetWindStrength

Voici le mapping de SetWindStrength:

Lent => F5
Super faible => KO
Faible => F1
Faible-moy. => F2
Med => F3
Moy.-élevé => F4
Elevé => F5
Puissance => KO
Auto => ok auto
Smart care => F5

     La vitesse de soufflerie fonctionne bien même si j’ai beaucoup trop de possibilité par rapport à ce que ma PAC peut faire. En effet ma PAC peut faire la vitesse de vent de F1 → F5.

Quand j’aurais un peu plus de temps (certainement semaine prochaine), je testerais les fonctions de direction du vent. Je ne m’en sert pour ainsi dire jamais, mais je suppose que tu aimerais avoir ces feedback ?

Est-ce que tu as besoin de plus d’informations ?

Encore merci ! :+1:

Cordialement,
Gauthier.

Tu peux supprimer manuellement chaque commande, sauvegarder l’équipement et lancer une synchro.
Mais je viens d’ajouter un bouton pour recréer les commandes avec choix (supprimer ou pas les commandes existantes)

Est-ce qu’il y a bien le lien entre la commande action et info ?

La commande est liée à la commande info FilterUse :


En lançant la commande action GetFilrerUse, j’ai bien la valeur de l’infos dans la commande FilterUse ensuite :

C’est non personnalisable à la création. C’est créé en fonction du fichier de config de l’appareil fourni par LG, impossible de savoir si c’est compatible ou pas. (j’ai poussé une correction sur un caractère qui faussait la liste « | »)
Je pense à, peut-être, mettre en place un template de commande pour un type d’appareil, qui serait configuré par un utilisateur et partagé. Mais j’en suis pas encore là, et c’est qu’une idée.

Comme dit plus haut, pour l’instant, non, et compliqué à mettre en place, mais j’y réfléchis.

Pour l’instant, non. Merci en tout cas pour tes retours.

Bonjour à tous et, bien entendu, merci à Flobul.

J’ai installé le plugin et j’essaie maintenant de me connecter. J’ignore par contre comment récupérer le token. Juste avec mon nom d’utilisateur et mot de passe, cela bloque au niveau de l’authentification. Est-ce que quelqu’un peut me dire comment récupérer le token (note: mon pays est BE).

[2023-12-01 18:20:39][DEBUG] : login : debut
[2023-12-01 18:20:39][DEBUG] : login : ÉTAPE 1
[2023-12-01 18:20:40][DEBUG] : login : EncryptedPw = {"encrypted_pw":"gixHlxTJn.....","signature":"H6sVUBBuHyi/WVk2hCy8iJ.....=","tStamp":"1701451240"}
[2023-12-01 18:20:40][DEBUG] : login : ÉTAPE 2
[2023-12-01 18:20:40][DEBUG] : doRetry : Étape 2 a échoué BE, tentative 1/3
[2023-12-01 18:20:42][DEBUG] : doRetry : Étape 2 a échoué BE, tentative 2/3
[2023-12-01 18:20:44][DEBUG] : doRetry : Étape 2 a échoué BE, tentative 3/3
[2023-12-01 18:20:46][DEBUG] : login : Étape 2 a échoué après plusieurs tentatives.
[2023-12-01 18:21:08][DEBUG] : update : début
[2023-12-01 18:21:08][DEBUG] : update : fin```

Bonjour,

Merci pour les retours.

Concernant le FilterUse, je n’arrive à afficher l’information :

Pourtant dans les logs j’ai bien :

[2023-12-01 13:09:07]DEBUG : execute : Réponse décodée récupérée {"UseTime":"720","ChangePeriod":"720","ChangeDate":"0"}

Il y a un truc que j’ai du louper… Est-ce que tu aurais une idée ?

C’est possible, et même presque sûr.
Je viens de modifier la gestion des liens URL (dépendant du pays), pour qu’avant la connexion, on questionne l’API LG pour lui demander les liens relatif au pays.

Une fois la mise à jour faite, il faut cliquer sur Connexion pour refaire la séquence d’authentification et générer les bons liens (qui s’affiche au bas de la page Connexion)

Merci Flobul. Après la mise à jour, l’erreur est la même. Voici les logs:
:

/var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=lgthinq2 function=pre_update callInstallFunction=1
[2023-12-04 06:38:36][INFO] : Début d'activation du plugin
[2023-12-04 06:38:37][INFO] : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2023-12-04 06:38:38][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=lgthinq2 function=update callInstallFunction=1
[2023-12-04 06:39:08][DEBUG] : update : début
[2023-12-04 06:39:08][DEBUG] : update : fin
[2023-12-04 06:40:17][DEBUG] : update : début
[2023-12-04 06:40:17][DEBUG] : update : fin
[2023-12-04 06:40:42][DEBUG] : login : debut
[2023-12-04 06:40:42][DEBUG] : login : ÉTAPE 0
[2023-12-04 06:40:43][DEBUG] : step0 : Étape 0 a result
[2023-12-04 06:40:43][DEBUG] : login : ÉTAPE 1
[2023-12-04 06:40:44][DEBUG] : login : EncryptedPw = {"encrypted_pw":"gixHlxTJntTBU.....","signature":"1zj6qjgHghd7z.....=","tStamp":"1701668444"}
[2023-12-04 06:40:44][DEBUG] : login : ÉTAPE 2
[2023-12-04 06:40:45][DEBUG] : doRetry : Étape a échoué BE, tentative 1/3
[2023-12-04 06:40:47][DEBUG] : doRetry : Étape a échoué BE, tentative 2/3
[2023-12-04 06:40:50][DEBUG] : doRetry : Étape a échoué BE, tentative 3/3
[2023-12-04 06:40:52][DEBUG] : login : Étape 2 a échoué après plusieurs tentatives.
[2023-12-04 06:41:10][DEBUG] : update : début
[2023-12-04 06:41:10][DEBUG] : update : fin

Les URL semblent celle de France:

Ah oui, effectivement.
La langue est récupérée dans la configuration de jeedom : mais il n’y a pas fr-BE dans la liste, du coup pas moyen de passer en belge.
Je vais rajouter une liste d’options avec le choix de langue.

2 « J'aime »

Hello tous, hello @Flobul,

Petite demande parce que je n’arrive pas à faire fonctionner le Display Control qui permet d’afficher ou non les infos sur le panneau lumineux du split, certains étant dans les chambres et éclairant comme en plein jour, je serais super intéressé :blush: :grin: Comment t’aider éventuellement si besoin ? (Ce n’est pas une priorité bien sûr, tu as sûrement plus urgent).

La belle journée à tous,

6co

Je viens de pousser une liste déroulante avec choix de langue.

Quand je sélectionne une autre langue, j’ai bien la même erreur que toi

J’ai poussé un log supplémentaire plus loin dans le code pour comprendre.

129805|[2023-12-04 18:25:48]DEBUG : execute : Réponse décodée récupérée {"UseTime":"720","ChangePeriod":"720","ChangeDate":"00000000"}
129806|[2023-12-04 18:25:48]DEBUG : execute : Réponse décodée {"UseTime":"720","ChangePeriod":"720","ChangeDate":"00000000"} transmise dans FilterUse