Page 12 sur 20

Re: LUA: vigilance météoFrance V2

Publié : 05 juil. 2019, 23:29
par alpin38
Slt Papoo
je pense avoir trouver l'origine de mon probleme , je pense qu'il viens de la

local rid = assert(io.popen("/usr/bin/curl -m5 http://vigilance.meteofrance.com/data/NXFR33_LFPW_.xml"))

mon domoticz tourne sur mon nas (TS251) et je n'ai pas curl apparement , donc si un proqnap sais comment faire , je suis preneur de la solution

@+

Re: LUA: vigilance météoFrance V2

Publié : 10 avr. 2020, 00:21
par fableo
dokho a écrit : 12 oct. 2018, 11:52 Bonjour,

Je viens de mettre à jour vers la version V2 de ce script et j'ai une erreur dans les logs:

Code : Tout sélectionner

Error: EventSystem: in /home/domoticz/domoticz/scripts/lua/script_time_vigilance_meteo.lua: ...icz/domoticz/scripts/lua/script_time_vigilance_meteo.lua:82: ')' expected near '"); -- '"'
la ligne en question est:

Code : Tout sélectionner

value = string.gsub(value, "\"", """); -- '"' -> """
Suis je le seul à rencontrer ce problème ?

Merci.
Bonjour,
je viens d'installer le script et j'ai exactement le même message que Dokho. J'ai converti le fichier en UTF8-BOM mais ca ne régle pas le pbl.

J'ai réglé le problème en modifiant comme suit:
ligne 82 = value = string.gsub(value, "\"", "\""); -- '"' -> """
ligne 99 = value = string.gsub(value, "\"", "\"");

A toute fin utile. ;)

Re: LUA: vigilance météoFrance V2

Publié : 12 avr. 2020, 01:17
par balajol
Bonjour,
Merci Fableo (etPapoo bien entendu )
J'avais l'erreur:
Error: EventSystem: in script_time_vigilance_meteofrance_V2_20180303lua: [string "--[[ ..."]:82: ')' expected near '"); -- '"'

La Modification des deux lignes 82 et 99 m'ont permis de faire tourner le script sans erreur.
Cdt
Bertrand

Re: LUA: vigilance météoFrance V2

Publié : 12 juin 2020, 22:52
par Euton
Bonsoir,

Sauf erreur de ma part le script « script_time_vigilance_meteofrance_v2.lua« ne fonctionne plus correctement depuis que météo france à changer son site d’alerte météo.

Es ce que Papoo pourrait voir le problème ?

Merci d’avance

Re: LUA: vigilance météoFrance V2

Publié : 13 juin 2020, 06:37
par denis_brasseur
Meme constat depuis le 4 juin, plus de remonté d'information depuis le script.
L'url http://vigilance.meteofrance.com/data/NXFR33_LFPW_.xml est toujours active, mais je suppose que le format des données à changé.
papoo, tu peux faire quelque chose ?

Re: LUA: vigilance météoFrance V2

Publié : 13 juin 2020, 11:01
par papoo
vais regarder

Re: LUA: vigilance météoFrance V2

Publié : 13 juin 2020, 14:49
par papoo
je l'ai passé en DZvents

Code : Tout sélectionner

--[[
vigilanceMeteoFrance.lua
author/auteur = papoo
update/mise à jour = 17/06/2020
création = 28/04/2018
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance
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".

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/dzVents/scripts/vigilanceMeteoFrance.lua


--]]
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local departement              = 39                   -- renseigner votre numéro de département sur 2 chiffres exemples : 01 ou 07 ou 87 
local alert_device             = 'Vigilance Météo'    -- renseigner le nom de l'éventuel device alert vigilance météo associé (dummy - alert)
local conseil_meteo            = "Conseil Météo" --'Conseil Météo'      -- renseigner le nom de l'éventuel device alert Conseils Météo associé si souhaité, sinon nil 
local commentaire_meteo        = "Commentaire Météo" --'Commentaire Météo'  -- renseigner le nom de l'éventuel device alert Commentaire Météo associé si souhaité, sinon nil
local display_conseils         = true                 -- true pour voir les conseils sans condition, false seulement en cas de vigilance dans le département sélectionné
local display_commentaire      = true                 -- true pour voir les commentaires sans condition, false seulement en cas de vigilance dans le département sélectionné
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Vigilance météo France'
local scriptVersion     = '2.05'
local response = "vigilance_meteoFrance"
return {
    active = true,
    on =        {       timer           =   { "every minute"},
                        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 dz.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 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 "Vigilance Météo" end
        end
        local function EnumClear(Text)   -- replace the last character
            a=string.len(Text)
            b=string.sub(Text,a,a)
            if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
            a=string.len(Text)
            b=string.sub(Text,a,a)
            if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
            return Text
        end

        if (item.isHTTPResponse and item.trigger == response) then
            local abr = dz.utils.fromXML(item.data,"erreurXML") 
            local dv = abr.CV.DV
            local textAlert = ""
            local vigilanceColor = ""
            local conseil = ""
            local commentaire = ""

            for i, departements in ipairs(dv) do
                for _, result in pairs(departements) do
                            --logWrite(result.dep)
                            --logWrite(result.coul)
                    if tonumber(result.dep) == departement then 
                        logWrite("departement : "..result.dep)
                        logWrite("Couleur vigilance : "..result.coul)
                        vigilanceColor = tonumber(result.coul)
                        if dv[i].risque then 
                            risques = dv[i].risque
                            for _, risque in pairs(risques) do 
                                for _, risqueDep in pairs(risque) do
                                --print_r(risqueDep)
                                    if risqueDep.val and (type(risqueDep) == "table") then 
                                        logWrite(risqueDep.val)
                                        logWrite(risqueTxt(tonumber(risqueDep.val)))
                                        textAlert = textAlert .. risqueTxt(tonumber(risqueDep.val)) .. ", "
                                    else
                                        logWrite(risqueDep)
                                        textAlert = risqueTxt(tonumber(risqueDep))
                                    end
                                end
                            end
                        end
                    end
                end
            end

            text = EnumClear(textAlert)
            if text == '' then text = 'Aucune vigilance' end
            logWrite("------ vigilance ".. vigilanceColor .. " " .. text .. " pour le département " .. departement,dz.LOG_INFO)

            if alert_device ~= nil then
                if devAlert.color ~= vigilanceColor or devAlert.lastUpdate.minutesAgo > 1440 then
                    devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
                elseif devAlert.text ~= text then
                    devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
                end
            end

        -- ====================================================================================================================   
        -- Conseil météo (merci denis_brasseur )
        -- ====================================================================================================================         
            if conseil_meteo ~= nil then
                local vconseil = abr.CV.EV.VCONSEIL 
                if vconseil and (type(vconseil) == "table") then 
                    for i, result in pairs(vconseil) do
                        if vconseil[i].texte then
                            conseil = vconseil[i].texte
                        end
                    end
                else conseil = 'Aucun conseil disponible'
                end
                if (conseil ~= nil and vigilanceColor > 1) or (conseil ~= nil and display_conseils == true) then -- Mise à our du devise texte conseil météo si il existe
                    if dz.devices(conseil_meteo).text ~= conseil then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), conseil) end
                elseif (conseil == nil) or (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
                    if dz.devices(conseil_meteo).text ~= 'Aucun conseil disponible' then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun conseil disponible') end
                end
            end
        -- ====================================================================================================================   
        -- Commentaire météo (merci denis_brasseur )
        -- ====================================================================================================================        
            if commentaire_meteo ~= nil then
                local vcommentaire = abr.CV.EV.VCOMMENTAIRE
                if vcommentaire and (type(vcommentaire) == "table") then 
                    for i, result in pairs(vcommentaire) do
                        if vcommentaire[i].texte then
                            commentaire = vcommentaire[i].texte
                        end
                    end
                else commentaire = 'Aucun commentaire disponible'
                end
                if (commentaire ~= nil and vigilanceColor > 1) or (commentaire ~= nil and display_commentaire == true) then -- Mise à jour du devise texte commentaire météo si il existe
                    if dz.devices(commentaire_meteo).text ~= commentaire then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), commentaire) end
                elseif (commentaire == nil) or (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
                    if dz.devices(commentaire_meteo).text ~= 'Aucun commentaire disponible' then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun commentaire disponible') end
                end
            end
        -- ====================================================================================================================   

        -- ====================================================================================================================
        else
            local url = "http://vigilance2019.meteofrance.com/data/NXFR33_LFPW_.xml"
            dz.openURL({
                  url = url,
                        method = "GET",
                        callback = response})
        end
    end
}


Re: DZvents: vigilance météoFrance V2

Publié : 13 juin 2020, 19:14
par denis_brasseur
Voici dans le xml les résulats de mon département :

Code : Tout sélectionner

<DV dep="26" coul="2">
<risque val="3"/>
</DV>
Le code s'éxécute et remonte bien le niveau de vigilance.
dzVents: Info: Vigilance météo France v2.0: vigilance 2 pour le département 26

Code : Tout sélectionner

if dv[i].risque then 
ne remonte pas la valeur risque

Re: DZvents: vigilance météoFrance V2

Publié : 13 juin 2020, 21:37
par papoo
c'est corrigé, à vouloir absolument afficher plusieurs risques, j'en avais oublié de tester quand il n'y en a qu'un. désolé

Re: DZvents: vigilance météoFrance V2

Publié : 14 juin 2020, 07:37
par denis_brasseur
Ca fonctionne, merci papoo ;)
J'ai ajouté l'affichage de Conseil Météo et Commentaire Météo comme dans le script précédent
<EV dateinsert="20200614060000" dateprevue="20200615060000" daterun="20200614060000" echeance="24" noversion="1" producteur="DP" typeprev="1" crueint="99,2A,2B,22,74">
<VCONSEIL texte="Crues/Orange- Renseignez-vous avant d'entreprendre vos déplacements et soyez très prudents. Respectez, en particulier, les déviations mises en place.- Ne vous engagez en aucun cas, à pied ou en voiture, sur une voie immergée.- Dans les zones habituellement inondables, mettez en sécurité vos biens susceptibles d'être endommagés et surveillez la montée des eaux."/>
<VCOMMENTAIRE texte="Crue importante sur l'Allier entre l'Alagnon et la Dore."/>
</EV>