[LUA] Vigilance MétéoFrance

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
sylvaing26
Messages : 13
Inscription : 28 juil. 2016, 16:49

Re: LUA: vigilance météoFrance

Message par sylvaing26 »

Bonjour à tous,
merci pour ce script vraiment super !
Voici une proposition de modification concernant les indication des vigilance.
J'ai mis la couleur des vigilances puis le détail dans les alertes et notifications

Code : Tout sélectionner

--[[
name : script_time_vigilance_meteofrance.lua
auteur : papoo
version : 1.30
date de création : 11/06/2016
Date de mise à jour : 25/06/16
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance 3 fois par jour à 07H10 13H10 et 18H10
Les informations disponibles sont :
- couleur vigilance météo (Rouge, Orange, Jaune, Vert)
- risque associé : vent violent, pluie-inondation, orages, inondations, neige-verglas, canicule, grand-froid, avalanche, vagues-submersion
Une vigilance peut ne pas être associée à un risque. dans ce cas, affichage de la mention "risque non défini".
- Conseils météo
- commentaires météo
- couleur vigilance crue avec 4 niveaux d'alerte
Niveau 4 Rouge : Risque de crue majeure. Menace directe et généralisée de la sécurité des personnes et des biens.
Niveau 3 Orange : Risque de crue génératrice de débordements importants susceptibles d'avoir un impact significatif sur la vie collective et la sécurité des biens et des personnes.
Niveau 2 Jaune : Risque de crue génératrice de débordements et de dommages localisés ou de montée rapide et dangereuse des eaux, nécessitant une vigilance particulière notamment dans le cas d'activités exposées et/ou saisonnières.
Niveau 1 Vert : Pas de vigilance particulière requise.

Ce script utilise Lua-Simple-XML-Parser https://github.com/Cluain/Lua-Simple-XML-Parser
]]--
-- ========================================================================
-- Variables à éditer
-- ========================================================================
local departement = 28            -- renseigner votre numéro de département sur 2 chiffres exemples : 01 ou 07 ou 87
local dz_vigilance_alert = 14      -- renseigner l'id du device alert vigilance meteo associé (dummy - alert)
local dz_alert_crue = nil         -- renseigner l'id du device alert vigilance crue associé (dummy - alert)
local dz_conseil_meteo = 16      -- renseigner l'id du device texte Conseils Météo associé si souhaité, sinon nil
local dz_commentaire_meteo = 17   -- renseigner l'id du device texte Commentaire Météo associé si souhaité, sinon nil
local send_notification = 2      -- 0: aucune notification, 1: toutes (meme verte), 2: vigilances jaune, orange et rouge, 3: vigilances orange et rouge 4: seulement vigilance rouge
local send_notification_crue = 2    -- 0: aucune notification, 1: toutes (meme verte), 2: vigilances jaune, orange et rouge, 3: vigilances orange et rouge 4: seulement vigilance rouge
local debugging = true           -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local display_conseils = false     -- true pour voir les conseils sans condition, false seulement en cas de vigilance dans le département sélectionné
local display_commentaire = false    -- true pour voir les commentaires sans condition, false seulement en cas de vigilance dans le département sélectionné

-- ========================================================================
-- Fin Variables à éditer
-- ========================================================================

local indexArray=0   
---------------------------------------------------------------------------
--Fonctions
---------------------------------------------------------------------------
function voir_les_logs (s)
    if (debugging) then
        print ("<font color='#f3031d'>".. s .."</font>");
    end
end   

function risqueTxt(nombre)
      if nombre == 1 then return "Vent violent"
      elseif nombre == 2 then return "Pluie-inondation"
      elseif nombre == 3 then return "Orages"
      elseif nombre == 4 then return "Inondations"
      elseif nombre == 5 then return "Neige-verglas"
      elseif nombre == 6 then return "Canicule"
      elseif nombre == 7 then return "Grand-froid"
      elseif nombre == 8 then return "Avalanche"
      elseif nombre == 9 then return "Vagues-submersion"    
     else return "Pas de risque" end

end

---------------------------------------------------------------------------------
-- Lua-Simple-XML-Parser
---------------------------------------------------------------------------------
    XmlParser = {};
   self = {};

    function XmlParser:ToXmlString(value)
        value = string.gsub(value, "&", "&"); -- '&' -> "&"
        value = string.gsub(value, "<", "<"); -- '<' -> "<"
        value = string.gsub(value, ">", ">"); -- '>' -> ">"
        value = string.gsub(value, "\"", """); -- '"' -> """
        value = string.gsub(value, "([^%w%&%;%p%\t% ])",
            function(c)
                return string.format("&#x%X;", string.byte(c))
            end);
        return value;
    end

    function XmlParser:FromXmlString(value)
        value = string.gsub(value, "&#x([%x]+)%;",
            function(h)
                return string.char(tonumber(h, 16))
            end);
        value = string.gsub(value, "&#([0-9]+)%;",
            function(h)
                return string.char(tonumber(h, 10))
            end);
        value = string.gsub(value, """, "\"");
        value = string.gsub(value, "&apos;", "'");
        value = string.gsub(value, ">", ">");
        value = string.gsub(value, "<", "<");
        value = string.gsub(value, "&", "&");
        return value;
    end

    function XmlParser:ParseArgs(node, s)
        string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a)
            node:addProperty(w, self:FromXmlString(a))
        end)
    end

    function XmlParser:ParseXmlText(xmlText)
        local stack = {}
        local top = newNode()
        table.insert(stack, top)
        local ni, c, label, xarg, empty
        local i, j = 1, 1
        while true do
            ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i)
            if not ni then break end
            local text = string.sub(xmlText, i, ni - 1);
            if not string.find(text, "^%s*$") then
                local lVal = (top:value() or "") .. self:FromXmlString(text)
                stack[#stack]:setValue(lVal)
            end
            if empty == "/" then -- empty element tag
                local lNode = newNode(label)
                self:ParseArgs(lNode, xarg)
                top:addChild(lNode)
            elseif c == "" then -- start tag
                local lNode = newNode(label)
                self:ParseArgs(lNode, xarg)
                table.insert(stack, lNode)
      top = lNode
            else -- end tag
                local toclose = table.remove(stack) -- remove top

                top = stack[#stack]
                if #stack < 1 then
                    error("XmlParser: nothing to close with " .. label)
                end
                if toclose:name() ~= label then
                    error("XmlParser: trying to close " .. toclose.name .. " with " .. label)
                end
                top:addChild(toclose)
            end
            i = j + 1
        end
        local text = string.sub(xmlText, i);
        if #stack > 1 then
            error("XmlParser: unclosed " .. stack[#stack]:name())
        end
        return top
    end

    function XmlParser:loadFile(xmlFilename, base)
        if not base then
            base = system.ResourceDirectory
        end

        local path = system.pathForFile(xmlFilename, base)
        local hFile, err = io.open(path, "r");

        if hFile and not err then
            local xmlText = hFile:read("*a"); -- read file content
            io.close(hFile);
            return self:ParseXmlText(xmlText), nil;
        else
            print(err)
            return nil
        end
    end

function newNode(name)
    local node = {}
    node.___value = nil
    node.___name = name
    node.___children = {}
    node.___props = {}

    function node:value() return self.___value end
    function node:setValue(val) self.___value = val end
    function node:name() return self.___name end
    function node:setName(name) self.___name = name end
    function node:children() return self.___children end
    function node:numChildren() return #self.___children end
    function node:addChild(child)
        if self[child:name()] ~= nil then
            if type(self[child:name()].name) == "function" then
                local tempTable = {}
                table.insert(tempTable, self[child:name()])
                self[child:name()] = tempTable
            end
            table.insert(self[child:name()], child)
        else
            self[child:name()] = child
        end
        table.insert(self.___children, child)
    end

    function node:properties() return self.___props end
    function node:numProperties() return #self.___props end
    function node:addProperty(name, value)
        local lName = "@" .. name
        if self[lName] ~= nil then
            if type(self[lName]) == "string" then
                local tempTable = {}
                table.insert(tempTable, self[lName])
                self[lName] = tempTable
            end
            table.insert(self[lName], value)
        else
            self[lName] = value
        end
        table.insert(self.___props, { name = name, value = self[name] })
    end

    return node
end

---------------------------------------------------------------------------
-- Fin Fonctions
---------------------------------------------------------------------------
commandArray = {}
now=os.date("*t")
--if (now.min == 10 and ((now.hour == 7) or (now.hour == 13) or (now.hour == 18))) then -- 3 éxecutions du script par jour à 7H10, 13h10 et 18H10
if now.hour % 2 == 0 then -- éxécution du script toutes les X heures
print("script_time_vigilance_meteofrance.lua")

-- deux methodes pour récupérer les informations xml,  WGET ou CURL si vous décommentez la methode curl pensez à commenter la methode wget
      -- début methode wget
      local fname ="vigilance.xml"
      os.execute("wget -q -O " .. fname .. " http://vigilance.meteofrance.com/data/NXFR34_LFPW_.xml")
      -- fin methode wget
      
      -- début methode curl
       --local fname ="/tmp/vigilance.xml"
       --os.execute("curl http://vigilance.meteofrance.com/data/NXFR34_LFPW_.xml > ".. fname .." && chmod 777 " .. fname)
      -- fin methode curl
      
      
       voir_les_logs("Fichier local : " ..fname,debugging)
      local f = io.open(fname, "r")

          if f == nil then
          print("Error opening file '" .. fname .. "'.")
          os.exit(1)
          end
 
      local testXml = f:read("*all")
               f:close()

local parsedXml = XmlParser:ParseXmlText(testXml)
   if (parsedXml) then local abr = parsedXml.cartevigilance    

      for i in pairs(abr:children()) do
         if (abr:children()[i]:name() == "datavigilance") then


            if (tonumber(abr:children()[i]["@dep"]) == departement) then
            CouleurVigilance = tonumber(abr:children()[i]["@couleur"])
            voir_les_logs("--- --- --- Couleur Vigilance : ".. CouleurVigilance .. " pour le departement : ".. departement,debugging)
                if (#abr:children()[i]:children() > 0) then
                   for j = 1, #abr:children()[i]:children() do
                      if (abr:children()[i]:children()[j]:name() == "crue") then
                      crue = tonumber(abr:children()[i]:children()[j]["@valeur"])
                         if crue ~= nil then
                         voir_les_logs("--- --- --- Crue trouv&eacute;e : ".. crue,debugging)
                         else
                         voir_les_logs("--- --- --- pas d'information Crue trouv&eacute;e",debugging)
                         end
                      elseif (abr:children()[i]:children()[j]:name() == "risque") then
                      risque = tonumber(abr:children()[i]:children()[j]["@valeur"])
                      voir_les_logs("--- --- --- Risque trouv&eacute;e : ".. risque,debugging)
                      end
                   end
                end
            end
          elseif (abr:children()[i]:name() == "entetevigilance") then
                for j in pairs(abr:children()[i]:children()) do
                   if (abr:children()[i]:children()[j]:name() == "vigilancecommentaire") then
                   commentaire = abr:children()[i]:children()[j]["@texte"]
                     if commentaire ~= nil then
                  voir_les_logs("--- --- --- Commentaire : " ..commentaire,debugging)
                     else
                  voir_les_logs("--- --- --- pas de Commentaire",debugging)   
                     end
                   end
                   if (abr:children()[i]:children()[j]:name() == "vigilanceconseil") then
                   conseil = abr:children()[i]:children()[j]["@texte"]
                     if conseil ~= nil then
                  voir_les_logs("--- --- --- Conseils : ".. conseil,debugging)
                     end
                   end
                end
         end
      end   
   else
   print("erreur parsedXml")
   end   

risque = risqueTxt(risque)
   
   if CouleurVigilance == nil and dz_vigilance_alert ~= nil then
          commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert ..'|0|'.. risque}
         voir_les_logs("--- --- --- Aucune donn&eacute;e disponible pour la departement : ".. departement,debugging)
          indexArray=indexArray+1
   end   


   if CouleurVigilance   ~= nil then   
      voir_les_logs("--- --- --- CouleurVigilance : ".. CouleurVigilance,debugging)
      if tonumber(CouleurVigilance) == 1   then -- niveau 1
         if dz_vigilance_alert ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|1|VERTE : '.. risque}
             indexArray=indexArray+1
         end
         if send_notification > 0 and send_notification < 2 then
             commandArray[indexArray] = {['SendNotification'] = 'Vigilance météo VERTE : #'.. risque}
             indexArray=indexArray+1
         end
           voir_les_logs("--- --- --- Pas de vigilance --- --- ---",debugging)
      elseif tonumber(CouleurVigilance) == 2   then -- niveau 2
         if dz_vigilance_alert ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|2|JAUNE : '.. risque}
             indexArray=indexArray+1
         end
         if send_notification > 0 and send_notification < 3 then
             commandArray[indexArray] = {['SendNotification'] = 'Vigilance météo JAUNE : #'.. risque}
             indexArray=indexArray+1
         end
           voir_les_logs("--- --- --- vigilance faible ".. risque.. " --- --- ---",debugging)   
      elseif tonumber(CouleurVigilance) == 3   then -- niveau 3
         if dz_vigilance_alert ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|3|ORANGE : '.. risque}
             indexArray=indexArray+1
         end
         if send_notification > 0 and send_notification < 4 then
             commandArray[indexArray] = {['SendNotification'] = 'Vigilance météo ORANGE : #'.. risque}
             indexArray=indexArray+1
         end
           voir_les_logs("--- --- --- vigilance Forte ".. risque.. " --- --- ---",debugging)     
      elseif tonumber(CouleurVigilance) > 3  then -- niveau 4
         if dz_vigilance_alert ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|4|ROUGE : '.. risque}
             indexArray=indexArray+1
         end
         if send_notification > 0 and send_notification < 5 then
             commandArray[indexArray] = {['SendNotification'] = 'Vigilance météo ROUGE : #'.. risque}
             indexArray=indexArray+1
         end
           voir_les_logs("--- --- --- vigilance très forte ".. risque.. " --- --- ---",debugging)
      else
        print("niveau non defini")
      end
   end
      
-- ====================================================================================================================   
-- Conseil météo    
-- ====================================================================================================================         
         if ( dz_conseil_meteo ~= nil and conseil ~= nil and CouleurVigilance > 1 ) or ( dz_conseil_meteo ~= nil and conseil ~= nil and display_conseils == true ) then -- Mise à jour du devise texte conseil météo si il existe
          commandArray[indexArray] = {['UpdateDevice'] = dz_conseil_meteo..'|0|'.. conseil}
          indexArray=indexArray+1
         elseif (dz_conseil_meteo ~= nil and conseil == nil) or ( dz_conseil_meteo ~= nil and conseil ~= nil and display_conseils == false ) then -- Mise à jour du devise texte conseil météo si il existe même s'il n'y a pas de conseil disponible
          commandArray[indexArray] = {['UpdateDevice'] = dz_conseil_meteo..'|0|Aucun conseil disponible'}
          indexArray=indexArray+1       
         end
-- ====================================================================================================================   
-- Commentaire météo    
-- ====================================================================================================================       
    
         if ( dz_commentaire_meteo ~= nil and commentaire ~= nil and CouleurVigilance > 1 ) or ( dz_commentaire_meteo ~= nil and commentaire ~= nil and display_commentaire == true ) then -- Mise à jour du devise texte commentaire météo si il existe
          commandArray[indexArray] = {['UpdateDevice'] = dz_commentaire_meteo..'|0|'.. commentaire}
          indexArray=indexArray+1
         
         elseif (dz_commentaire_meteo ~= nil and commentaire == nil ) or ( dz_commentaire_meteo ~= nil and commentaire ~= nil and display_commentaire == false ) then -- Mise à jour du devise texte commentaire météo si il existe même s'il n'y a pas de commentaire disponible
          commandArray[indexArray] = {['UpdateDevice'] = dz_commentaire_meteo..'|0|Aucun commentaire disponible'}
          indexArray=indexArray+1
         end
 
-- ====================================================================================================================   
-- vigilance crue    
-- ====================================================================================================================
   if dz_alert_crue ~= nil and crue ~= nil then   
      voir_les_logs("--- --- --- Vigilance Crue : ".. crue,debugging)


      if tonumber(crue) == 1   then -- niveau 1
           if dz_alert_crue ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_alert_crue..'|1|Pas de vigilance Crue'}
             indexArray=indexArray+1
           end
           if send_notification_crue > 0 and send_notification_crue < 2 then
             commandArray[indexArray] = {['SendNotification'] = 'Alerte vigilance crue#Pas de vigilance Crue'}
             indexArray=indexArray+1
           end
           voir_les_logs("--- --- --- Pas de vigilance crue --- --- ---",debugging)
      elseif tonumber(crue) == 2   then -- niveau 2
           if dz_alert_crue ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_alert_crue..'|2|Risque de crue g&eacute;n&eacute;ratrice de d&eacute;bordements localis&eacute;s'}
             indexArray=indexArray+1
           end
           if send_notification_crue > 0 and send_notification_crue < 3 then
             commandArray[indexArray] = {['SendNotification'] = 'Alerte vigilance crue#Risque de crue génératrice de débordements localisés'}
             indexArray=indexArray+1
           end
           voir_les_logs("--- --- --- vigilance faible Crue --- --- ---",debugging)   
      elseif tonumber(crue) == 3   then -- niveau 3
           if dz_alert_crue ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_alert_crue..'|3|Risque de crue g&eacute;n&eacute;ratrice de d&eacute;bordements importants'}
             indexArray=indexArray+1
           end
           if send_notification_crue > 0 and send_notification_crue < 4 then
             commandArray[indexArray] = {['SendNotification'] = 'Alerte vigilance crue#Risque de crue génératrice de débordements importants'}
             indexArray=indexArray+1
           end
           voir_les_logs("--- --- --- vigilance Forte Crue --- --- ---",debugging)     
      elseif tonumber(crue) > 3  then -- niveau 4
           if dz_alert_crue ~= nil then
             commandArray[indexArray] = {['UpdateDevice'] = dz_alert_crue..'|4|Risque de Crue majeure'}
             indexArray=indexArray+1
           end
           if send_notification_crue > 0 and send_notification_crue < 5 then
             commandArray[indexArray] = {['SendNotification'] = 'Alerte vigilance crue#Risque de crue majeure'}
             indexArray=indexArray+1
           end
           voir_les_logs("--- --- --- vigilance très forte Crue --- --- ---",debugging)
      else
        print("niveau non defini")
      end       
      if dz_alert_crue ~= nil and crue == nil then
      commandArray[indexArray] = {['UpdateDevice'] = dz_alert_crue..'|0|Pas d\'information vigilance Crue'}
      indexArray=indexArray+1
      end
    end         
-- ====================================================================================================================   
-- fin vigilance crue    
-- ====================================================================================================================   
end -- if now
return commandArray
Par contre comme je suis novice, petite question :
Yat-il un intérêt de changer les numéro lors d'un UpdateDevice, exemple :
--
commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|3|ORANGE : '.. risque}
commandArray[indexArray] = {['UpdateDevice'] = dz_vigilance_alert..'|2|JAUNE : '.. risque}
--
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance

Message par papoo »

sylvaing26 a écrit : Yat-il un intérêt de changer les numéro lors d'un UpdateDevice
Le numéro sert à mettre à jour la couleur du device alerte
et comme le device alerte est de couleur, je ne voie pas l’intérêt d'indiquer la couleur en texte.
Tu est sur d'avoir créé un device alert pour ta vigilance météo?
Device Alerte.png
Device Alerte.png (23.95 Kio) Consulté 11683 fois
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
sylvaing26
Messages : 13
Inscription : 28 juil. 2016, 16:49

Re: LUA: vigilance météoFrance

Message par sylvaing26 »

Ahhhhhh merci pour tes lumières.
Je suis novice d'où mon ignorance sur les numéros qui permettent de changer la couleur de l'alerte.
J'ai bien créé un device alerte et donc comme pour le moment je n'ai pas eu de vigilance, je ne me suis pas rendu compte de cette subtilité.
Et Domoticz est installé depuis 1 mois chez moi...
Donc effectivement, ça n'a pas trop d'intérêt, sauf pour les daltoniens :-p
Dernière modification par sylvaing26 le 31 juil. 2016, 21:19, modifié 1 fois.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance

Message par papoo »

aucun pb
il faut bien commencer un jour :)
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
sylvaing26
Messages : 13
Inscription : 28 juil. 2016, 16:49

Re: LUA: vigilance météoFrance

Message par sylvaing26 »

Bonjour à tous,
je viens de m'apercevoir d'un changement dans la structure du XML de météo France. En effet, il n'y a plus le "risque" d'indiqué dans le fichier http://vigilance.meteofrance.com/data/NXFR34_LFPW_.xml

J'ai bien tenté de spliter le conseil météo car au début de celui-ci il met Risque/Couleur mais en vain, trop novice.
Deux autres options :
- Aller vérifier les différentes couleurs des risques du département via ce xml : http://vigilance.meteofrance.com/data/NXFR49_LFPW_.xml
- Ou aller récupérer le risque sur ce XML : http://vigilance.meteofrance.com/data/NXFR33_LFPW_.xml D'ailleurs il contient la couleur de vigilance et le risque. Il suffirait d'aller chercher uniquement les risques de crues sur le NXFR34_LFPW_.xml
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: LUA: vigilance météoFrance

Message par jackslayter »

le risque est indiqué dans le xml seulement si il y en a un (orage, neige....) si il y en pas le mot risque est supprimé
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
sylvaing26
Messages : 13
Inscription : 28 juil. 2016, 16:49

Re: LUA: vigilance météoFrance

Message par sylvaing26 »

A yes exact.
Le risque figure pour les niveaux > 3.
Alors que dans le listing des vigilances, même en jaune il indique pourtant le risque...http://vigilance.meteofrance.com/tab_vigi_33.html (parce que si c'est jaune, c'est que le risque est (un peu) présent
Curieux ce XML...
kronotops
Messages : 5
Inscription : 09 août 2016, 19:19
Localisation : Sauzet (30)

Re: LUA: vigilance météoFrance

Message par kronotops »

Bonjour à toutes et à tous,

je viens d'intégrer le script afin de récupérer les vigilances météo et crue qui fonctionne parfaitement bien sur Domoticz. J'utilise Impérihome afin d'interfacer Domoticz sur mon téléphone et celui de ma femme à l'extérieur de chez nous. La récupération se fait bien hormis que je n'ai pas d’icônes ou de couleurs... quelqu'un peut'il m'expliquer comment faire ? Merci.
Raspberry Pi 3 + RFLink + Domoticz
Prise mural Chacon
Module ECR-100 avec fil pilote
Module température + humidité Alecto v4 Banggood
Téléinfo sans-fil en cours de réalisation
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance

Message par papoo »

désolé, je ne sais pas comment impérihome gère les modules alert :?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
fratton
Messages : 150
Inscription : 19 août 2015, 16:38

Re: LUA: vigilance météoFrance

Message par fratton »

Petite précision:

http://vigilance.meteofrance.com/html/v ... lance.html
La Vigilance météorologique est composée d'une carte de la France métropolitaine actualisée au moins deux fois par jour à 6h et 16h. Elle signale si un danger menace un ou plusieurs départements dans les prochaines 24 heures.
au moins, c'est au minimum, mais les données peuvent être actualisé plus souvent. C'est le cas en ce moment avec les orages. Il n'est pas rare qu'un département passe du jaune à l'orange en plein milieu de journée. Du coup je trouve qu'actualisé seulement 3 fois dans la journée, c'est pas beaucoup. J'interroge 1 fois par heure, c'est déjà mieux.
Les serveurs de météofrance sont largement capable de soutenir les requêtes, ils ont des Content Delivery Network ( CDN ), ce ne sont pas nos domoticz qui vont faire du DoS.
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi
Répondre