Voici une nouvelle version pour le script Vigicrue.

Suite à une demande de balajol sur le forum d’easydomoticz, j’ai rajouter la possibilité d’être notifié.

J’ai fait le test de mettre une notification sur le sensor Domoticz et ça ne semble pas fonctionner.

Du coup je l’ai ajouté dans le script, j’ai modifié la façon de le configurer aussi.

Dans un premier temps, il faut construire le fichier de configuration au format json.

J’ai mis sur github trois fichiers de conf différents pour le moment, un pour une station, un pour deux stations et pour trois stations.

Si vous voulez une exemple de fichier de conf pour plus de deux stations, je peux vous le faire, demandez moi.

 

Voici à quoi un fichier de configuration ressemble (je pars sur le deux stations comme c’est celui que j’utilise) :

[pastacode lang= »markup » user= »chatainsim » repos= »scripts_domoticz » path_id= »vigicrue/conf_samples/vigicrue_2_station.json » revision= » » highlight= » » lines= » » provider= »github »/]

Il faut mettre le fichier de conf a un endroit accessible par Domoticz, je l’ai mis dans /opt/domoticz/scripts mais vous pouvez le mettre ailleurs du moment que Domoticz a les droits pour le lire.

Une précision, dans la partie notification, la valeur test ne sert à rien pour l’instant mais je compte l’utiliser pour choisir le mode de test, plus grand que, plus grand ou equal, plus petit, etc …

Dites moi si c’est pertinant ou si le plus grand que suffit.

Dans notification, value permet de définir le seuil, par exemple si le niveau d’eau dépasse 2 métres ou 500 m3/s et active pour activer ou non la notification (true ou false).

 

Voici le script lua, catégorie lua -> time :

[pastacode lang= »c » user= »chatainsim » repos= »scripts_domoticz » path_id= »vigicrue/vigicrue.lua » revision= » » highlight= » » lines= » » provider= »github »/]

Les modifications a apporter au script sont les quatre premières variables, à savoir :

debug : Pour activer le mode debug qui affiche plus d’info (pas encore optimisé pour la v3)

config : Emplacement de votre fichier json de configuration

json : Emplacement de votre fichier JSON.lua

curl : Chemin complet vers votre binaire curl

 

Pour le moment il faut modifier les commandes de notification manuellement :

[pastacode lang= »c » manual= »commandArray%5B’SendNotification’%5D%3D’Water%20level%20is%20high%20for%20station%20′..StationName..’%23Current%20level%20is%20′..ResultHeight%5B%23ResultHeight%5D%5B2%5D..’m%20for%20′..StationName..’%230%23sound%23extradata%23telegram’%0AcommandArray%5B’SendNotification’%5D%3D’Water%20speed%20level%20is%20high%20for%20station%20′..StationName..’%23Current%20speed%20level%3A%20′..ResultSpeed%5B%23ResultSpeed%5D%5B2%5D..’m3%2Fs%20for%20′..StationName..’%230%23sound%23extradata%23telegram' » message= » » highlight= » » provider= »manual »/]

Pour définir le type de notification, ici j’utilise telegram.

Mais je compte rajouter ça dans le fichier de conf prochainement.

Hi, I’m simon

17 Comments

  1. Bonjour,

    Etant donné les temps qui courent j’ai trouvé ce script lua très intéressant pour mon domioticZ!

    j’ai implémenter le V3beta (pour une station). Aucun soucis avec les dummy, Le JSON.lua les IDX ainsi que les stations (très bien expliqué)

    Cependant les information ne remonte pas, et pour cause, j’ai cette erreur dans mes logs:

    Error: EventSystem: in …domoticz/scripts/lua/script_time_vigicrue.lua: …domoticz/scripts/lua/script_time_vigicrue.lua:64: attempt to index field ‘?’ (a nil value)

    impossible de me dépatouiller, une idée?

    la ligne 64 est la suivante:

    local NotifHeightV = Conf.notifications.height[v].value

    Merci de votre aide.

    1. Il peut être intéressant de passer la variable debug à true au début du script qui va afficher les valeurs des variables.
      Pouvez-vous me donner les ids de votre/vos stations ? Histoire que je regarde de mon coté aussi.

  2. Très bien je vais faire l’essais de passer le param a true.

    néanmoins l’execution du script comme ceci: lua vigicrue.lua ne remonte aucune erreur. Etrange, meme avec debug=true je ne vois mon erreur que dans les log domoticZ.

    la station choisie est testée est: F447000101 même probleme avec : F447000302 et même probleme avec vos propre station.

    Je reviens vers vous avec la log debug=true

    Cordialement,

    1. Est-ce que Domoticz tourne sur un Windows ?
      Car il semblerait que cette version du script ai quelques soucis sous Windows.
      Sinon concernant la ligne 64, elle récupère la valeur stocké dans le fichier json vigicrue.lua.
      Est-ce que le fichier json est complet ?
      Il s’agit de ce bloc là :
      « notifications »: {
      « height »: {
      « W141001001 »: {
      « channel »: « telegram »,
      « value »: « 2 »,
      « active »: « true »
      },
      « L800001020 »: {
      « channel »: « telegram »,
      « value »: « 1 »,
      « active »: « true »
      }
      },

  3. Bonjour Simon,

    Vous êtes très réactif, mais je n’ai malheureusement pas eu le temps de passer ma variable a true pour le debug. Ce soir sans fautes!

    Le fichier est identique a celui que vous fournissez, seule et unique modif, j’ai désactiver les nutofications
    « active »: « false »

    et bien entendu, les valeurs des id station.

  4. Bonsoir,

    Merci pour votre indication au sujet du fichier Json, ceci m’a permis de m’y attarder un peu plus. Et en effet j’ai comis une erreur.
    une incohérence dans les ID des station, c’est maintenant resolu!

    1. Parfait, du coup je pense peut-être revoir la configuration du script car c’est vrai qu’un fichier json n’est pas des plus pratique.

  5. Bonsoir,

    Débutant avec les scripts sous domoticz j’ai essayé d’implémenter votre script sur ma machine (Windows), mais j’ai l’erreur suivante dans la log domoticz :

    2018-12-15 22:24:00.141 Error: EventSystem: in C:\Program Files (x86)\Domoticz\scripts\lua\script_time_vigicrue.lua: …iles (x86)\Domoticz\scripts\lua\script_time_vigicrue.lua:69: attempt to call global ‘O919001001’ (a nil value)

    O919001001 est la station que je souhaite pister

    Avez vous une idée de ce qui se passe, sachant que j’ai activé debug à true et que je ne vois rien de plus

    Merci de votre réponse

    1. Pouvez-vous coller en commentaire le début du script ou se trouve les variables a éditer.
      Il me semble qu’il y a une erreur a ce niveau là. Comme si le numéro de la station est une variable.

  6. Bonjour,

    J’utilise depuis un moment ce script, mais je n’arrive pas à récupérer la valeur dans un Blockly.

    En regardant les logs, je m’aperçois que le retour du script me donne :
    – State = X.XX (ex. : 3.91 en ce moment pour la Seine)
    – Value = X/X.XX (ex. : 0/3.91 en ce moment pour la Seine)

    Du coup, je n’arrive pas à récupérer la valeur dans un Blockly car celle-ci se trouve en réalité dans le State.

    Avez-vous une idée pour m’aider ?

    1. Bonjour, alors là, je n’en ai aucune idée, je n’utilise pas blocky.
      Je peux essayer de regarder ça. Sinon passer par un script lua ?
      Que souhaitez-vous faire ?

      1. Bonjour,

        Tout d’abord merci pour votre réponse. J’ai essayé de passer par un script LUA mais j’avoue que je ne suis pas très doué !

        Je cherche simplement à récupérer la valeur de la hauteur de la Seine dans une variable utilisateur.

        J’ai créé une variable utilisateur TEST et dans le script vigicrue.lua je sais que je dois ajouter l’instruction suivante :
        commandArray[‘Variable:TEST’]= ???

        Mais je ne sais pas comment récupérer la bonne valeur. A priori elle doit se trouver dans « ResultHeight » mais ceci n’a rien donné :
        commandArray[‘Variable:TEST’]= ResultHeight

        Je dois sûrement mal m’y prendre ????

        1. Il faut faire :

          commandArray[‘Variable:TEST’]=ResultHeight[#ResultHeight][2]

          ça devrait fonctionner, tout dépend du type de ta variable.
          A placer au niveau de la ligne 73, avant où après pour la V3 et au niveau de la ligne 62 pour la V2.

          Dit moi si ça fonctionne.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.