Vigicrue V2
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.
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 🙂
quel est la commande pour acceder au crontab et quoi mettre dedans ?
de nouveau moi,
ça fonctionne parfaitement, j’ai un peu chercher mais j’ai fini par trouver 🙂
maintenant je m’attaque au miflora 🙂
Du coup je n’ai pas eu le temps de répondre 🙂
Parfait du coup.
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 !
Merci pour l’info, je vais essayer de trouver du temps pour modifier cela et prendre en compte l’erreur.
Presque 5 mois après, je viens de faire une modification du script pour recevoir une notification si la station n’existe pas.
https://github.com/chatainsim/scripts_domoticz/blob/master/vigicrue2.lua
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!
Hello,
Alors, le script fonctionne ? Des infos dans la log ?