[DzVents] Vigilance MétéoFrance V2

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.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance V2

Message par papoo »

l'api ne te retourne plus d'information, le script ne peut plus les extraire.
vérifie en manuel si tu as toujours accès au site de météo france
fonctionne correctement chez moi
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
sphinxou
Messages : 231
Inscription : 03 déc. 2016, 13:37

Re: LUA: vigilance météoFrance V2

Message par sphinxou »

maintenant sa fonctionne peut-être un bug chez meteo france

merci
Domoticz 4.9700/ rfxcom /sonde diy/raspberry pi3+HDD/cirusms/contact de porte diy
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: LUA: vigilance météoFrance V2

Message par dokho »

Bonsoir,

Sûrement un problème chez météo France: je n'ai pas eu de valeur à 18h01
Image
emylive
Messages : 39
Inscription : 21 mars 2017, 22:43

Re: LUA: vigilance météoFrance V2

Message par emylive »

Bonjour,

j'ai mis le script à jour :

Code : Tout sélectionner

--[[
name : script_time_vigilance_meteofrance_V2.lua
UTF8 sans BOM
auteur : papoo
date de création : 28/04/2018
Date de mise à  jour : 03/03/2018
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance 3 fois par jour à  07H15 13H15 et 18H15 
mais j'ai cette erreur dans les logs :
2019-01-30 10:19:00.047 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_vigilance_meteofrance_V2.lua: ...icz/scripts/lua/script_time_vigilance_meteofrance_V2.lua:49: module 'fonctions_perso' not found:
2019-01-30 10:19:00.047 no field package.preload['fonctions_perso']
2019-01-30 10:19:00.047 no file '/usr/local/share/lua/5.2/fonctions_perso.lua'
2019-01-30 10:19:00.047 no file '/usr/local/share/lua/5.2/fonctions_perso/init.lua'
2019-01-30 10:19:00.047 no file '/usr/local/lib/lua/5.2/fonctions_perso.lua'
2019-01-30 10:19:00.047 no file '/usr/local/lib/lua/5.2/fonctions_perso/init.lua'
2019-01-30 10:19:00.047 no file './fonctions_perso.lua'
2019-01-30 10:19:00.047 no file '/home/pi/domoticz/scripts/lua/fonctions/fonctions_perso.lua'
2019-01-30 10:19:00.047 no file '/usr/local/lib/lua/5.2/fonctions_perso.so'
2019-01-30 10:19:00.047 no file '/usr/local/lib/lua/5.2/loadall.so'
2019-01-30 10:19:00.047 no file './fonctions_perso.so'
je ne trouve pas de solutions pour ce problème de "fonctions_perso" :?
Domoticz+Xiaomi gateway
Koala45
Messages : 46
Inscription : 28 mai 2015, 19:54

Re: LUA: vigilance météoFrance V2

Message par Koala45 »

je ne trouve pas de solutions pour ce problème de "fonctions_perso" :?
Salut
Lis ce qu'il y a écrit dans le script.
il faut commenter la ligne et décommenter les autres si tu n'as pas les fonctions dans des fichiers séparés.
A+ :)
emylive
Messages : 39
Inscription : 21 mars 2017, 22:43

Re: LUA: vigilance météoFrance V2

Message par emylive »

Koala45 a écrit : 30 janv. 2019, 10:44
je ne trouve pas de solutions pour ce problème de "fonctions_perso" :?
Salut
Lis ce qu'il y a écrit dans le script.
il faut commenter la ligne et décommenter les autres si tu n'as pas les fonctions dans des fichiers séparés.
A+ :)
Alors hier j'ai essayé mais je n'ai pas du tout comprendre! j'ai enlever --[[ et --]] à la ligne 52 et 78 du script ligne et ligne mais j'ai toujours l'erreur
Domoticz+Xiaomi gateway
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance V2

Message par papoo »

RTFM
tu as oublié
ligne 48 et 49

Code : Tout sélectionner

package.path = package.path..";/home/pi/domoticz/scripts/lua/fonctions/?.lua"   -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
require('fonctions_perso')                                                      -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
voila ce que cela doit faire chez toi si tu n'as pas pas fait le choix d'ajouter le fichier fonctions_perso.lua dans le répertoire fonctions

Code : Tout sélectionner

--[[
name : script_time_vigilance_meteofrance_V2.lua
UTF8 sans BOM
auteur : papoo
date de création : 28/04/2018
Date de mise à  jour : 03/03/2018
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance 3 fois par jour à  07H15 13H15 et 18H15 
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 "vigilance météo".
- Conseils météo 
- commentaires météo
URL forum : http://easydomoticz.com/forum/viewtopic.php?f=17&t=5492
URL blog : http://pon.fr/vigilance-meteofrance-v2/
URL github : https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_vigilance_meteofrance_v2.lua
Ce script utilise Lua-Simple-XML-Parser https://github.com/Cluain/Lua-Simple-XML-Parser
--]]
--------------------------------------------
------------ Variables à  éditer ------------
-------------------------------------------- 

local debugging                = false            	 -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local departement              = 87				     -- renseigner votre numéro de département sur 2 chiffres exemples : 01 ou 07 ou 87 
local dev_vigilance_alert      = 'Vigilance Météo'	 -- renseigner le nom de l'éventuel device alert vigilance météo associé (dummy - alert)
local dev_alert_vague          = nil    -- renseigner le nom de l'éventuel device alert vigilance vague submersion associé (dummy - alert)
local dev_conseil_meteo        = 'Conseil Météo'     -- renseigner le nom de l'éventuel device texte Conseils Météo associé si souhaité, sinon nil 
local dev_commentaire_meteo    = nil                 -- renseigner le nom de l'éventuel device texte Commentaire Météo associé si souhaité, sinon nil
local send_notification        = 3 		             -- 0: aucune notification, 1: toutes (même verte), 2: vigilances jaune, orange et rouge, 3: vigilances orange et rouge 4: seulement vigilance rouge
local send_notification_vague  = 3 	                 -- 0: aucune notification, 1: toutes (même verte), 2: vigilances jaune, orange et rouge, 3: vigilances orange et rouge 4: seulement vigilance rouge
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 nom_script = 'vigilance météofrance V2'
local version = 1.11
local risques = {}
local vigilances = ""
local departementsub = tonumber(departement .. 10)
local CouleurVigilance = 0

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
--package.path = package.path..";/home/pi/domoticz/scripts/lua/fonctions/?.lua"   -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
--require('fonctions_perso')                                                      -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script

-- ci-dessous les lignes à décommenter en cas d'utilisation des fonctions directement dans ce script( supprimer --[[ et --]])
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
    if (debugging) then 
		if s ~= nil then
        print (s)
		else
		print ("aucune valeur affichable")
		end
    end
end	-- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------

function TronquerTexte(texte, nb)  --texte à  tronquer, nb limite de caractère à  afficher (240 max pour un device text)
local sep ='[!?.]'
local DernierIndex = nil
texte = string.sub(texte, 1, nb)
local p = string.find(texte, sep, 1)
DernierIndex = p
while p do
    p = string.find(texte, sep, p + 1)
    if p then
        DernierIndex = p
    end
end
return(string.sub(texte, 1, DernierIndex))
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 "risque non défini" end
	else return "Vigilance Météo" end
end
--------------------------------------------
-- Lua-Simple-XML-Parser
--------------------------------------------
    XmlParser = {};
	self = {};

    function XmlParser:ToXmlString(value)
        value = string.gsub(value, "&", "&"); -- '&' -> "&"
        value = string.gsub(value, "<", "&lt;"); -- '<' -> "&lt;"
        value = string.gsub(value, ">", "&gt;"); -- '>' -> "&gt;"
        value = string.gsub(value, "\"", "&quot;"); -- '"' -> "&quot;"
        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, "&quot;", "\"");
        value = string.gsub(value, "&apos;", "'");
        value = string.gsub(value, "&gt;", ">");
        value = string.gsub(value, "&lt;", "<");
        value = string.gsub(value, "&amp;", "&");
        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 = {}
time=os.date("*t")
if (time.min == 15 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 exécutions du script par jour 7H15, 13h15 et 18H15
--if (time.min-1) % 1 == 0 then -- exécution du script toutes les X minutes
   
    voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
    if dev_vigilance_alert then
        dz_vigilance_alert = otherdevices_idx[dev_vigilance_alert]
        if dz_vigilance_alert then voir_les_logs("--- --- --- ".. dev_vigilance_alert .." idx : ".. dz_vigilance_alert,debugging) end
    end
    if dev_alert_vague then
        dz_alert_vague = otherdevices_idx[dev_alert_vague]
        if dz_alert_vague then voir_les_logs("--- --- --- ".. dev_alert_vague .." idx : ".. dz_alert_vague,debugging) end
    end
    if dev_conseil_meteo then
        dz_conseil_meteo = otherdevices_idx[dev_conseil_meteo]
        if dz_conseil_meteo then voir_les_logs("--- --- --- ".. dev_conseil_meteo .." idx : ".. dz_conseil_meteo,debugging) end 
    end
    if dev_commentaire_meteo then
        dz_commentaire_meteo = otherdevices_idx[dev_commentaire_meteo]
        if dz_commentaire_meteo then voir_les_logs("--- --- --- ".. dev_commentaire_meteo .." idx : ".. dz_commentaire_meteo,debugging) end
    end
     
    local rid = assert(io.popen("/usr/bin/curl -m5 http://vigilance.meteofrance.com/data/NXFR33_LFPW_.xml")) --merci jacklayster
    local testXml = rid:read('*all')
    rid:close() 

    local parsedXml = XmlParser:ParseXmlText(testXml)

    if (parsedXml) then local abr = parsedXml.CV 	

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

                if (tonumber(abr:children()[i]["@dep"]) == departement) then -- si les informations concernent le département
                Couleur_vigilance = tonumber(abr:children()[i]["@coul"])
                    if tonumber(CouleurVigilance) < tonumber(Couleur_vigilance) then CouleurVigilance = Couleur_vigilance 
                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() == "risque") then 
                             risque = tonumber(abr:children()[i]:children()[j]["@val"])
                             risques[j-1] = tonumber(abr:children()[i]:children()[j]["@val"])
                                 if risque ~= nil then
                                 voir_les_logs("--- --- --- risque trouv&eacute;e : ".. risque,debugging) 
                                 else
                                 voir_les_logs("--- --- --- pas d'information risque trouv&eacute;e",debugging)
                                 end
                             end
                         end 
                     end
                end
                   
                elseif (tonumber(abr:children()[i]["@dep"]) == departementsub) then -- Recherche risque vague submersion
                Couleur_vigilance = tonumber(abr:children()[i]["@coul"])
                    if tonumber(CouleurVigilance) < tonumber(Couleur_vigilance) then CouleurVigilance = Couleur_vigilance 
                    voir_les_logs("--- --- --- Couleur Vigilance Vague submersion : ".. CouleurVigilance .. " pour le département : ".. departement,debugging) 
                        if (#abr:children()[i]:children() > 0) then 
                            for j = 1, #abr:children()[i]:children() do 
                                if (abr:children()[i]:children()[j]:name() == "risque") then 
                                    vague_sub = tonumber(abr:children()[i]:children()[j]["@val"])
                                        if vague_sub ~= nil then
                                        voir_les_logs("--- --- --- risque Vague submersion trouvé : ".. vague_sub,debugging) 
                                        else
                                        voir_les_logs("--- --- --- pas d'information risque Vague submersion trouvé",debugging)
                                        end
                                    elseif (abr:children()[i]:children()[j]:name() == "risque") then 
                                    vague_sub = tonumber(abr:children()[i]:children()[j]["@valeur"]) 
                                    voir_les_logs("--- --- --- Risque Vague submersion trouvé : ".. vague_sub,debugging) 
                                    end
                                end    
                            end 
                        end
                    end
               
                elseif (abr:children()[i]:name() == "EV") then -- recherche commentaires
                     for j in pairs(abr:children()[i]:children()) do 
                         if (abr:children()[i]:children()[j]:name() == "VCOMMENTAIRE") then 
                         commentaire = abr:children()[i]:children()[j]["@texte"] 
                            if commentaire ~= nil then
                        voir_les_logs("--- --- --- Commentaire : " ..TronquerTexte(commentaire,240),debugging)
                            else
                        voir_les_logs("--- --- --- pas de Commentaire",debugging)	
                            end
                         end
                         if (abr:children()[i]:children()[j]:name() == "VCONSEIL") then -- recherche conseils
                         conseil = abr:children()[i]:children()[j]["@texte"] 
                            if conseil ~= nil then
                        voir_les_logs("--- --- --- Conseils : ".. TronquerTexte(conseil,240),debugging)
                            end
                         end 
                     end 
                end
        end	
    else
    print("erreur parsedXml")
    end	
    risque = risqueTxt(risque)
    if risques ~= nil then

         for k,v in pairs(risques) do
            voir_les_logs("--- --- --- vigilance  : ".. risqueTxt(v),debugging)
            vigilances = vigilances .. ", " .. risqueTxt(v)
         end -- end for
         vigilances = string.gsub (vigilances, "^, ", "")
         voir_les_logs("--- --- --- vigilances  : ".. vigilances,debugging)
    end

    if CouleurVigilance == nil then
        voir_les_logs("--- --- --- Aucune donnée disponible pour la département : ".. departement,debugging)
            if dz_vigilance_alert ~= nil then
                voir_les_logs("--- --- --- mise à  jour du device : ".. dev_vigilance_alert,debugging)
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_vigilance_alert ..'|0|Vigilance Meteo'}
            end	 
    end	

	if CouleurVigilance	~= nil then	
		voir_les_logs("--- --- --- CouleurVigilance : ".. CouleurVigilance,debugging)
		if tonumber(CouleurVigilance) == 1   then -- niveau 1
			if dz_vigilance_alert ~= nil then
                voir_les_logs("--- --- --- mise à  jour du device : ".. dev_vigilance_alert,debugging)
				commandArray[#commandArray+1] = {['UpdateDevice'] = dz_vigilance_alert..'|1|Pas de vigilance'}
			end
			if send_notification > 0 and send_notification < 2 then
                commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance meteo#Pas de vigilance'}
			end
                voir_les_logs("--- --- --- Pas de vigilance --- --- ---",debugging)
		elseif tonumber(CouleurVigilance) == 2   then -- niveau 2
			if dz_vigilance_alert ~= nil then
				voir_les_logs("--- --- --- mise à  jour du device : ".. dev_vigilance_alert,debugging)
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_vigilance_alert..'|2|'.. vigilances}
			end
            if send_notification > 0 and send_notification < 3 then
				commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance meteo#'.. vigilances}
			end
			  voir_les_logs("--- --- --- vigilance faible ".. vigilances.. " --- --- ---",debugging)   
		elseif tonumber(CouleurVigilance) == 3   then -- niveau 3
			if dz_vigilance_alert ~= nil then
				voir_les_logs("--- --- --- mise à  jour du device : ".. dev_vigilance_alert,debugging)
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_vigilance_alert..'|3|'.. vigilances}
				 
			end
			if send_notification > 0 and send_notification < 4 then
				commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance meteo#'.. vigilances}
			end
			  voir_les_logs("--- --- --- vigilance Forte ".. vigilances.. " --- --- ---",debugging)      
		elseif tonumber(CouleurVigilance) > 3  then -- niveau 4
			if dz_vigilance_alert ~= nil then
				voir_les_logs("--- --- --- mise à  jour du device : ".. dev_vigilance_alert,debugging)
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_vigilance_alert..'|4|'.. vigilances}
			end
			if send_notification > 0 and send_notification < 5 then
				commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance meteo#'.. vigilances}
			end
			  voir_les_logs("--- --- --- vigilance très forte ".. vigilances.. " --- --- ---",debugging)
		else
		  print("niveau non défini")
		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 à our du devise texte conseil météo si il existe
        voir_les_logs("--- --- --- mise à  jour du device : ".. dev_conseil_meteo,debugging)
        commandArray[#commandArray+1] = {['UpdateDevice'] = dz_conseil_meteo..'|0|'.. TronquerTexte(conseil,240)}
     
    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
        voir_les_logs("--- --- --- mise à  jour du device : ".. dev_conseil_meteo,debugging)                
        commandArray[#commandArray+1] = {['UpdateDevice'] = dz_conseil_meteo..'|0|Aucun conseil disponible'}
          
    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
        voir_les_logs("--- --- --- mise à  jour du device : ".. dev_commentaire_meteo,debugging)                
        commandArray[#commandArray+1] = {['UpdateDevice'] = dz_commentaire_meteo..'|0|'.. commentaire}
                 
    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
        voir_les_logs("--- --- --- mise à  jour du device : ".. dev_commentaire_meteo,debugging)                 
        commandArray[#commandArray+1] = {['UpdateDevice'] = dz_commentaire_meteo..'|0|Aucun commentaire disponible'}
    end
 
--------------------------------------------============================================	
-- vigilance vague submersion	  
--------------------------------------------============================================
    if vague_sub == nil and dz_alert_vague ~= nil then -- pas de donnée
        voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)         
        commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|1|Aucune donn&eacute;e vague submersion'}
                 
    elseif dz_alert_vague ~= nil and vague_sub ~= nil then	
            voir_les_logs("--- --- --- Vigilance vague submersion : ".. vague_sub,debugging)
                  
            if tonumber(vague_sub) == 1   then -- niveau 1
                if dz_alert_vague ~= nil then
                    voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)                 
                    commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|1|Pas de vigilance vague submersion'}
                end
                if send_notification_vague > 0 and send_notification_vague < 2 then
                    commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance vague submersion#Pas de vigilance vague submersion'}
                end
                voir_les_logs("--- --- --- Pas de vigilance vague submersion --- --- ---",debugging)
            elseif tonumber(vague_sub) == 2   then -- niveau 2
                if dz_alert_vague ~= nil then
                    voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)                
                    commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|2|Risque de vague submersion g&eacute;n&eacute;ratrice de d&eacute;bordements localis&eacute;s'} 
                end
                if send_notification_vague > 0 and send_notification_vague < 3 then
                    commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance vague submersion#Risque de vague submersion génératrice de débordements localisés'}
                end
                voir_les_logs("--- --- --- vigilance faible vague submersion --- --- ---",debugging)   
            elseif tonumber(vague_sub) == 3   then -- niveau 3
                if dz_alert_vague ~= nil then
                    voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)                
                    commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|3|Risque de vague submersion g&eacute;n&eacute;ratrice de d&eacute;bordements importants'}
                end
                if send_notification_vague > 0 and send_notification_vague < 4 then
                    commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance vague submersion#Risque de vague submersion génératrice de débordements importants'} 
                end
                voir_les_logs("--- --- --- vigilance Forte vague submersion --- --- ---",debugging)      
            elseif tonumber(vague_sub) > 3  then -- niveau 4
                if dz_alert_vague ~= nil then
                    voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)                      
                    commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|4|Risque de vague submersion majeur'}
                end
                if send_notification_vague > 0 and send_notification_vague < 5 then
                    commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte vigilance vague submersion#Risque de vague submersion majeur'}
                end
                voir_les_logs("--- --- --- vigilance très forte vague submersion --- --- ---",debugging)
            else
                print("niveau non défini")
            end		  
            if dz_alert_vague ~= nil and vague_sub == nil then
                voir_les_logs("--- --- --- mise à  jour du device : ".. dev_alert_vague,debugging)                   
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_alert_vague..'|0|Pas d\'information vigilance vague submersion'}
            end
        end			
--------------------------------------------============================================	
-- fin vigilance vague submersion	  
--------------------------------------------============================================	
    voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
return commandArray

@Koala45 : merci du coup de main pour le sav
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
emylive
Messages : 39
Inscription : 21 mars 2017, 22:43

Re: LUA: vigilance météoFrance V2

Message par emylive »

papoo a écrit : 30 janv. 2019, 12:57 RTFM
tu as oublié
ligne 48 et 49

Code : Tout sélectionner

package.path = package.path..";/home/pi/domoticz/scripts/lua/fonctions/?.lua"   -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
require('fonctions_perso')                                                      -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
oui j'avais bien vu ligne à commenter mais je n'avait pas compris quel commentaire mettre :roll: <=noob inside

Un grand merci à vous deux pour votre aide!
Domoticz+Xiaomi gateway
Matthieu
Messages : 20
Inscription : 31 janv. 2019, 23:11

Re: LUA: vigilance météoFrance V2

Message par Matthieu »

Bonjour,

Je débute sur Domoticz pardon d'avance si je dis des bétises...

J’essaie d'installer ce script et j'ai un probléme, j'ai bien créé le device alert que j'ai nommé : Vigilance Météo

j'ai ce message d'erreur :

Code : Tout sélectionner

2019-01-31 23:18:00.177 Status: dzVents: Error (2.4.6): .../pi/domoticz/scripts/dzVents/scripts/Vigilance_meteo.lua:253: attempt to index global 'otherdevices_idx' (a nil value)
j'ai testé en remplacant :

Code : Tout sélectionner

local dev_vigilance_alert      = 'Vigilance Météo'
par

Code : Tout sélectionner

local dev_vigilance_alert      = nil
et dans ce cas là le script se déroule sans probléme.

une idée de l'endroit ou j'ai fait une erreur?
Merci d'avance
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA: vigilance météoFrance V2

Message par papoo »

Le nom de ton device Alert est « strictement » identique au nom renseigné dans la variable dev_alerte_meteo ?
Pas d’espace avant après, les majuscules, les accents?
Essai en renommant ton device alert avec un nom simple, court, dans espace, sans majuscule et sans accent
Modifie le script pour vérifier si cela fonctionne
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre