Commandes action

Bonjour à tous, bonjour @pifou,

Pour avancer un petit peu sur le sujet des commandes pour les climatisations LG, j’ai créer un équipement dans le plugin Script pour commander les actions : ON, OFF, set Temp.

J’utilise pour ça le fichier python example.py qui est dans la librairie wideq utilisée par le plugin. L’avantage, si le paramétrage du plugin lgthinq est bon, alors le script réutilise l’authentification.

J’ai créé 2 commandes de type Action/message, une pour allumer/éteindre, l’autre pour le réglage de la température :

Turn :

#!/bin/bash
cd /var/www/html/plugins/lgthinq/resources/wideq/
/usr/bin/python3 /var/www/html/plugins/lgthinq/resources/wideq/example.py -c FR -l fr-FR turn #title# #message#

Set T :

#!/bin/bash
cd /var/www/html/plugins/lgthinq/resources/wideq/
/usr/bin/python3 /var/www/html/plugins/lgthinq/resources/wideq/example.py -c FR -l fr-FR set-temp #title# #message#

Cela me permet d’appeler la fonction de manière générique avec en titre l’identifiant de l’équipement (que vous retrouvez sur chaque équipement dans le champ LgThinq ID) et en message :

  • on ou off pour la fonction turn
  • la température de consigne pour la fonction set T

Je vais ensuite utiliser un Virtuel pour combiner les informations données par le plugin lgthinq et les commandes via ce script.

Nota, par défaut le script example.py attend une consigne en Fahrenheit, pour la définir en degrés Celsius, vous pouvez remplacer la ligne 151 par :

        ac.set_celsius(int(temp))
2 « J'aime »

Finalement je n’ai pas fait de script générique, j’ai créé une fonction On / Off / Temp par split. C’était plus simple dans le plugin Virtuel.

Bonjour,
c’est cool, merci pour l’info. ça peut marcher aussi avec un frigo avec l’action set-temp pour modifier la température de consigne du frigo.
Ce qui me bloque sur ce sujet, c’est que je n’ai pas trouvé un moyen « générique » pour découvrir et implémenter les commandes des appareils inclus. Je suppose que je devrais me contenter d’implémenter les commandes disponibles dans l’exemple. Pour commencer :slight_smile:

Hello GranBen, Hello Pifou,

@GranBen, déjà un grand merci de faire avancer le schmilblick, je ne suis pas très à l’aise avec les scripts alors je tatonne un peu (notamment pour ne pas avoir à retaper systématiquement le titre et le message à chaque fois que je veux envoyer une commande) mais je vais finir par me familiariser avec la chose :smile:

Crois-tu (croyez-vous) qu’il soit envisageable à terme de définir également le mode (chaud /froid) ?

Une bien belle journée à vous,

6co

Comme indiqué dans mon deuxième message, j’ai finalement fait une commande par split au lieu d’un commande générique, cela ressemble à ça pour les 2 split dans les chambres :

1 « J'aime »

T’es un boss GranBen :blush::grin: Merciiii pour ta réponse et ton éclairage. J’avais bêtement pris ton exemple sans chercher beaucoup plus loin… Vivement les vacances que je mette le cerveau au repos :grin::grin::grin:

Belle journée à toi,

6co

Hello @GranBen,

J’ai remarqué au hasard de mes recherches que d’autres « actions » étaient possibles sur le même schéma (notamment apparemment pour monitorer notre matériel « mon » mais aussi « ac-config ») mais il me manque la syntaxe pour mettre en forme les requêtes dans le script… (désolé c’est un monde que je ne maîtrise pas :blush:)… Aurais-tu une idée ou bien de la lecture à me conseiller pour que je trouve comme un grand ?! (à moins que je fasse fausse route). J’ai remarqué sur un forum concurrent qu’ils avaient accès à beaucoup de commandes et d’infos mais mes compétences limitées me bloquent un peu… :grin:

Très bonne journée à toi,

6co

Bonsoir @6co ,

Les fonctions mon et ac-config ne font que des printf des températures et de la configuration respectivement.

Je suis en train de compléter le script Python example par des fonctions de réglage des modes et de la vitesse de ventilation, ça devrait donner qqc comme ça :

def ac_set_mode(client, device_id, mode):
    """Set the AC mode for an AC"""

    device = client.get_device(device_id)

    if device.type == wideq.client.DeviceType.AC:
        ac = wideq.ACDevice(client, _force_device(client, device_id))
        ac.set_mode(mode)

    else:
        raise UserError(
            "ac-mode only suported for AC devices"
        )

def ac_set_fan_speed(client, device_id, speed):
    """Set the AC mode for an AC"""

    device = client.get_device(device_id)

    if device.type == wideq.client.DeviceType.AC:
        ac = wideq.ACDevice(client, _force_device(client, device_id))
        ac.set_fan_speed(speed)

    else:
        raise UserError(
            "ac-mode only suported for AC devices"
        )

Merci @GranBen pour cette explication :slightly_smiling_face:

Yeaaaaaaah, ça ce serait cool en effet :blush:J’essaie de me documenter un peu (j’aime bien decouvrir les mondes que je ne connais pas) mais ce n’est pas à la portée de tous :sweat_smile::grin::blush:

Merci encore pour ton aide,

6co

Hello @GranBen, j’espère que tu as passé un bel été ? :slightly_smiling_face:

J’ai essayé de m’inspirer de tes recherches pour changer le mode courant en vue de la saison hivernale qui approche mais sans trop de succès (j’avoue humblement que mes compétences dans ce domaine sont particulièrement limitées :smile:). As-tu pu obtenir des résultats probants de ton côté ? Faut-il aider à tester des choses ? @pifou, peut-être as-tu toi aussi avancé sur le sujet ? Mes broadlink calanchent les uns après les autres et je ne serai pas contre l’idée de m’en passer et de ne pas avoir à les renouveler :smiling_face:

Belle journée à tout le monde,

6co

Bonjour les amis, depuis quelques temps le plugin script ne me permet plus de commander mes splits grâce aux commandes que @GranBen avait eu la gentillesse de nous indiquer. Je suis pourtant bien identifié sur le plugin Lgthinq puisqu’il me remonte bien l’état de mes splits par contre pas moyen d’envoyer des ordres :sob:

Erreur sur python #!/bin/bash cd /var/www/html/plugins/lgthinq/resources/wideq/ /usr/bin/python3 /var/www/html/plugins/lgthinq/resources/wideq/example.py -c FR -l fr-FR turn ************ on 2>&1 valeur retournée : 1. Détails : Log in here: Se connecter Then paste the URL where the browser is redirected: Traceback (most recent call last): File « /var/www/html/plugins/lgthinq/resources/wideq/example.py », line 328, in main() File « /var/www/html/plugins/lgthinq/resources/wideq/example.py », line 324, in main example(args.country, args.language, args.verbose, args.cmd, args.args) File « /var/www/html/plugins/lgthinq/resources/wideq/example.py », line 247, in example client._auth = authenticate(client.gateway) File « /var/www/html/plugins/lgthinq/resources/wideq/example.py », line 26, in authenticate callback_url = input() EOFError: EOF when reading a line

Une idée ?

Merci d’avance les amis,

Bonne journée à tous,

6co

Bonjour,

A-tu testé ce qui est dit dans le log ? se connecter sur le portail et remettre l’URL de login ? Tu a peut être modifié ton mot de passe, ou même sinon c’est un token qui a expiré.

Hello @pifou et merci de ta réponse, j’ai tout fait et refait plusieurs fois oui…

Je vais retenter quand même…

EDIT : Test effectué à l’instant en refaisant toute la procédure, même résultat. (A l’occasion j’ai testé et me suis d’ailleurs rendu compte qu’un « Renew Auth » renvoie une erreur 500°.

PS : Je suis en stable

Ha, erreur 500 il doit y avoir une erreur sur le demon, à vérifier dans les logs.

Me semble qu’il marche pas ce bouton « renew », faut relancer le demon, puis vérifier que le ping est ok, puis synchroniser, s’il n’y a pas d’erreur à la synchro ça valide le test.

Hello @pifou , j’ai fait comme indiqué, le ping est ok, synchro faite, aucune erreur mais toujours pas d’action de la part des scripts :pleading_face: (ma config ci-dessous au cas ou)

Hello @6co
En attendant d’avoir une correction, pour ces script il faut copier un fichier manuellement, par exemple en passant par l’éditeur de fichier de Jeedom (ou en ssh). Le script example.py a besoin des informations dans le fichier wideq_state.json
Ce fichier est désormais dans le répertoire lgthinq/data/jeedom/state.json il faut donc le copier et renommer.

cp /var/www/html/plugins/lgthinq/data/jeedom/state.json /var/www/html/plugins/lgthinq/resources/wideq/wideq_state.json

Coooooooooooool, merci Pifou :blush: :smiling_face_with_three_hearts: