DZVents : Alerte prévisions de pluie prochaines 60 minutes

Version 3 réécrite en dzvents du script prévision de pluie en lua
Prévision de pluie
le principe reste inchangé, récupérer via l’API non documentée de météo France les informations de précipitation de votre commune sur un device alert et/ou text.
pour trouver l’ID de votre ville deux solutions :

      Le code de votre ville est l’ID retourné par cette URL : http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/nom_de_votre_ville en remplaçant nom_de_votre_ville par … le nom de votre ville

le script complet

--[[
alerteMeteoFrancePluie.lua
author/auteur = papoo
update/mise à jour = 28/04/2019
création = 09/03/2019
DZVents : Alerte prévisions de pluie prochaines 60 minutes
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/alerteMeteoFrancePluie.lua https://easydomoticz.com/forum/viewtopic.php?f=17&t=5492 Principe : récupérer via l'API non documentée de météo France les informations de précipitation de votre commune sur un device alert et/ou text --]] -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local CityCode = 870850-- Le code de votre ville est l'ID retourné par cette URL : http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/nom_de_votre_ville local alert_device = "Alerte Pluie" local text_alert = "Info Du Jour" -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- local scriptName = 'météo France alerte pluie' local scriptVersion = '3.02' local response = "meteoFrance_response" return { on = { timer = { "every 5 minutes" }, httpResponses = { response } }, logging = { -- level = domoticz.LOG_DEBUG, -- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres -- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others -- level = domoticz.LOG_MODULE_EXEC_INFO, marker = scriptName..' v'..scriptVersion }, execute = function(dz, item) local devAlert = dz.devices(alert_device) local function logWrite(str,level) dz.log(tostring(str),level or dz.LOG_DEBUG) end local function seuilAlerte(level) if level == 0 or level == nil then return domoticz.ALERTLEVEL_GREY end if level == 1 then return dz.ALERTLEVEL_GREEN end if level == 2 then return dz.ALERTLEVEL_YELLOW end if level == 3 then return dz.ALERTLEVEL_ORANGE end if level == 4 then return dz.ALERTLEVEL_RED end end local function highLevel(mn, level, lastLevel, commentaire) if lastLevel == nil or level > lastLevel then text = commentaire lastMn = mn return mn, level, text else return lastMn, lastLevel, text end end local function ReverseTable(t) local reversedTable = {} local itemCount = #t for k, v in ipairs(t) do reversedTable[itemCount + 1 - k] = v end return reversedTable end if item.isHTTPResponse then local prevision1heure = item.json.niveauPluieText[1] logWrite("Prévisions de pluie pour la prochaine heure : " .. prevision1heure ) logWrite("---------------------------------------------------") local dataCadran = {} dataCadran = item.json.dataCadran local InfoNiveauPluieText = {} local InfoNiveauPluie = {} local InfoColor = {} local lastLevel = nil local level = nil local text = nil local mn = nil local lastMn = nil local j = 60 if dataCadran ~= nil then dataCadran = ReverseTable(dataCadran) for i, Result in ipairs( dataCadran ) do InfoNiveauPluieText[i] = Result.niveauPluieText InfoNiveauPluie[i] = Result.niveauPluie InfoColor[i] = Result.color logWrite("--- --- --- prévision à ".. j .. " mn : ".. InfoNiveauPluieText[i].. " Niveau : ".. InfoNiveauPluie[i] .. " couleur :" .. InfoColor[i]) lastMn, lastLevel, text = highLevel(j, InfoNiveauPluie[i], lastLevel, InfoNiveauPluieText[i]) j = j-5 end if text_alert ~= nil then dz.devices(text_alert).updateText(prevision1heure) else text = text .. ' dans les ' .. lastMn .. ' prochaines minutes' end if alert_device ~= nil then if devAlert.color ~= lastLevel or devAlert.lastUpdate.minutesAgo > 1440 then logWrite('le device '.. devAlert.name ..' est à '.. tostring(devAlert.color) ..' et son texte est ' .. tostring(devAlert.text)) devAlert.updateAlertSensor(seuilAlerte(lastLevel), text) elseif devAlert.text ~= text then logWrite('le device '.. devAlert.name ..' est à '.. tostring(devAlert.color) ..' et son texte est ' .. tostring(devAlert.text)) devAlert.updateAlertSensor(seuilAlerte(lastLevel), text) end end logWrite('level est à '.. tostring(level)) logWrite('lastLevel est à '.. tostring(lastLevel)) logWrite('contenu de text : '.. tostring(text)) logWrite('lastMn est à '.. tostring(lastMn)) end else local url = "http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/"..CityCode..".json" dz.openURL({ url = url, method = "GET", callback = response}) end end }

retrouver la dernière version de ce script sur [homepage]https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/alerteMeteoFrancePluie.lua[/homepage]

2 thoughts on “DZVents : Alerte prévisions de pluie prochaines 60 minutes

  1. Come l’a indiqué BreizhCat sur github il s’agit d’un script dzvent il faut donc le déclarer comme tel

  2. Hello papoo, merci tout d’abord pour ce script, j’ai une petite question après avoir mis le script sur domoticz j’ai cette erreur « did not return a commandArray » pourriez vous m’aider svp merci

Laisser un commentaire