Une v3 viens de sortir, ici.

Le site de Vigicrue a changé. Maintenant il utilise du json pour les données.

Un changement qui permet de simplifier tout ça en un seul script lua directement dans Domoticz :

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

Il suffit de modifier le début du script pour ajouter les ID des stations (je vous renvoi sur cette article pour trouver les IDs).

Les variables SIDXHeight et SIDXSpeed permettent de définir les IDX des sensors Domoticz et sont des tableaux.

La clé correspond à l’ID de la station et la valeur à l’IDX Domoticz.

Il faut aussi vérifier l’emplacement de votre fichier JSON.lua qui n’est pas forcement dans /opt/domoticz/scripts/lua.

Amusez-vous bien.

[EDIT] J’ai rajouté une vérification dans le cas ou Vigicrue ne retourne pas de données pour ne pas sortir une erreur dans les logs.

Merci à lamouette sur le forum d’easydomoticz de m’avoir remonter ce cas.

Hi, I’m simon

10 Comments

  1. hello, je suis tombé presque par hasard sur votre site.
    je trouve ce script tres interressant, etant à proximité d’une riviere 🙂
    le probleme c’est que je suis un noob absolu en script et bienb sur ça ne fonctionne pas.
    en plus je n’ai pas de remonter d’erreur dans les log, du coup je ne vois pas ou est le probleme.
    voici mon script modifié, pouvez vous me dire le probleme ?

    — Parameters to change according to you needs
    debug=false
    — Station ID, from one to many
    Station = {‘F466000101′}
    — IDX of sensor for height value | STATION_ID=4061
    SIDXHeight = {F466000101=’215′}
    — IDX of sensor for speed value | STATION_ID=4060
    SIDXSpeed = {W141001001=’216’}
    — JSON.lua path
    json = (loadfile “/home/pi/domoticz/scripts/lua/JSON.lua”)()
    — Curl path
    curl = ‘/usr/bin/curl’
    — End of parameters

    time = os.date(“*t”)
    — Function to update sensor
    local function update(idx, value1)
    local cmd = idx..’|0|’..value1
    –print(cmd)
    table.insert (commandArray, { [‘UpdateDevice’] = cmd } )
    end
    — function to get data from url
    local function getdata(urlh,urls)
    local DataHeight = assert(io.popen(curl..’ -s “‘..urlh..'”‘))
    local BlocJsonHeight = DataHeight:read(‘*all’)
    DataHeight:close()
    local JsonHeight = json:decode(BlocJsonHeight)
    local Height = JsonHeight.Serie.ObssHydro

    local DataSpeed = assert(io.popen(curl..’ -s “‘..urls..'”‘))
    local BlocJsonSpeed = DataSpeed:read(‘*all’)
    DataSpeed:close()
    local JsonSpeed = json:decode(BlocJsonSpeed)
    local Speed = JsonSpeed.Serie.ObssHydro

    return Height, Speed
    end
    commandArray = {}
    if (time.min == 0 or time.min == 30) then
    for k,v in pairs(Station) do
    local IDStation = F466000101
    local IDXHeight = 4061
    local IDXSpeed = 4060
    local urlHeight = ‘https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro=F466000101&GrdSerie=H&FormatSortie=simple’
    local urlSpeed = ‘https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro=F466000101&GrdSerie=Q&FormatSortie=simple’
    ResultHeight,ResultSpeed=getdata(urlHeight,urlSpeed)

    if (#ResultHeight ~= 0) then
    if (debug) then print(“ResultHeight: “..ResultHeight[#ResultHeight][2]) end
    update(IDXHeight, ResultHeight[#ResultHeight][2])
    else
    if (debug) then print(‘Height level is empty.’) end
    end
    if (#ResultSpeed ~= 0) then
    if (debug) then print(“ResultSpeed: “..ResultSpeed[#ResultSpeed][2]) end
    update(IDXSpeed, ResultSpeed[#ResultSpeed][2])
    else
    if (debug) then print(‘Speed is empty.’) end
    end

    end
    end

    return commandArray

    merci par avance de votre aide 🙂

  2. de nouveau moi,
    ça fonctionne parfaitement, j’ai un peu chercher mais j’ai fini par trouver 🙂
    maintenant je m’attaque au miflora 🙂

  3. Bonjour,
    Pour info il se peut que du jour au lendemain le script ne renvoi plus rien.
    En effet ça arrive si comme pour moi vous avez l’ID de la station qui change, et que celui que vous utilisiez soit stoppé.
    Si vous lancer l’url suivant dans mon cas
    https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro=X343401001&GrdSerie=H&FormatSortie=simple
    vous aurez ce message :
    [{“error_msg”:”Code de station inconnu”}]

    Ca bloque tout le reste du script du coup, et pas de message d’erreur.

    Pour info !

  4. Je suis tombé par hasard sur ce script (en vendnat de data.gouv), juste merci!
    J’ai tapé au hasard vigicrue et domoticz et bingo!
    Reste plus qu’à le faire marcher 🙂
    Pas d’erreur dans la log, j’ai cru comprendre que le script tournait toutes les demi heures, (ca n’a rien fait à 30, on verra demain!)

    Merci!

Répondre à Nicio Annuler la réponse

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.

WordPress Appliance - Powered by TurnKey Linux