Page 1 sur 7

[DzVents] Alerte Pollens avec sélection des risques à surveiller

Publié : 27 avr. 2019, 09:39
par papoo
Pour ceux qui comme moi préfère le DZvents et qui souhaitent ne surveiller que certains pollens.
2019-04-26 21_07_36-Window.png
2019-04-26 21_07_36-Window.png (8.5 Kio) Consulté 7907 fois

Code : Tout sélectionner

--[[ alertePollens.lua for [ domoticzVents >= 2.4 ]

author/auteur = papoo
update/mise à jour = 05/05/2019
creation = 03/04/2019
https://pon.fr/dzvents-alerte-pollens
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/alertePollens.lua
https://easydomoticz.com/forum/viewtopic.php?f=17&t=8392
--]]
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local departement = "87"
        local alerte_url  = 'https://www.pollens.fr/risks/thea/counties/'  -- url
local alert_device = nil --'Pollens' -- nom ou idx du device alerte, nil si inutilisé

local risques = { -- Commentez (en ajoutant -- devant) ou décommentez (en enlevant -- devant) les risques que vous souhaitez surveiller.
                    -- "Tilleul",
                    -- "Ambroisies",
                    -- "Olivier",
                    -- "Plantain",
                    "Noisetier",
                    -- "Aulne",
                    -- "Armoise",
                    -- "Châtaignier",
                    -- "Urticacées",
                    -- "Oseille",
                    "Graminées",
                    -- "Chêne",
                    -- "Platane",
                    "Bouleau",
                    -- "Charme",
                    -- "Peuplier",
                    -- "Frêne",
                    -- "Saule",
                    -- "Cyprès",
                    }
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Alerte Pollens'
local scriptVersion     = '1.11'


return {
    active = true,
    on      =   {   timer           =   { 'every 6 hours' },
                    httpResponses   =   { "Pollens_" ..departement.. "_Trigger" }    -- Trigger the handle Json part
    },

    logging =   {
                 level    =   domoticz.LOG_DEBUG,                                           -- Seulement un niveau peut être actif; commenter les autres
                -- level    =   domoticz.LOG_INFO,                                            -- Only one level can be active; comment others
                -- level    =   domoticz.LOG_ERROR,
                -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                marker = scriptName..' v'..scriptVersion },

                data    =   {   alertePollens     = {initial = {} },             -- Keep a copy of last json just in case
    },
    execute = function(domoticz, item)

        local function logWrite(str,level)             -- Support function for shorthand debug log statements
            domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
        end

        if (item.isTimer) then
            domoticz.openURL({
                url = alerte_url..departement,
                callback = 'Pollens_' ..departement.. '_Trigger'
            })
        end

        if (item.isHTTPResponse and item.ok) then
            -- we know it is json but dzVents cannot detect this
            -- convert to Lua
            local json = domoticz.utils.fromJSON(item.data)
            -- json is now a Lua table
            if #item.data > 0 then
                domoticz.data.alertePollens    = domoticz.utils.fromJSON(item.data)
                rt = domoticz.utils.fromJSON(item.data)
            else
                domoticz.log("Problem with response from Pollens (no data) using data from earlier run",domoticz.LOG_ERROR)
                rt  = domoticz.data.alertePollens                        -- json empty. Get last valid from domoticz.data
                if #rt < 1 then                                         -- No valid data in domoticz.data either
                    domoticz.log("No previous data. are Pollens url ok?",domoticz.LOG_ERROR)
                    return false
                end
            end

            local niveau1, niveau2, niveau3, niveau4, niveau5, text = '', '', '', '', '', ''

            local riskLevel = rt.riskLevel
            logWrite('alerte de niveau '..riskLevel)
            
            for k, risque in pairs(risques) do
                for k, pollens in pairs(rt.risks) do
                    if pollens.pollenName == risque and pollens.level == 5 then niveau5 = niveau5.. " ".. pollens.pollenName.."," end
                    if pollens.pollenName == risque and pollens.level == 4 then niveau4 = niveau4.. " ".. pollens.pollenName.."," end
                    if pollens.pollenName == risque and pollens.level == 3 then niveau3 = niveau3.. " ".. pollens.pollenName.."," end
                    if pollens.pollenName == risque and pollens.level == 2 then niveau2 = niveau2.. " ".. pollens.pollenName.."," end
                    if pollens.pollenName == risque and pollens.level == 1 then niveau1 = niveau1.. " ".. pollens.pollenName.."," end
                end
            end

            if     niveau5 ~= '' then text, riskLevel = niveau5, 4
            elseif niveau4 ~= '' then text, riskLevel = niveau4, 3
            elseif niveau3 ~= '' then text, riskLevel = niveau3, 2
            elseif niveau2 ~= '' or niveau1 ~= '' then text, riskLevel = niveau2..niveau1, 1
            --elseif niveau2 ~= '' then text, riskLevel = niveau2, 1
            --elseif niveau1 ~= '' then text, riskLevel = niveau1, 1
            else                      text, riskLevel = "Aucune Alerte", 0
            end

            text = string.gsub (text, ",$", "")
            logWrite(text)

            if alert_device ~= nil then
                domoticz.devices(alert_device).updateAlertSensor(riskLevel, text)
            end
            logWrite("Alerte de niveau  "..riskLevel.." pour les pollens de : "..text, domoticz.LOG_INFO)
            
        end
    end
}

Re: [DZVents] Alerte Pollens

Publié : 28 avr. 2019, 10:53
par pilou
bonjour,
Merci papoo pour le script.
pour le département 06, j'obtiens une alerte en jaune (risque 2)et les pollens Cyprès (2), Bouleau (1), Chêne (2), graminées (1) Urticacées (1).
Pollens.gif
Pollens.gif (16.12 Kio) Consulté 7860 fois
Sur pollens.fr, j'ai le risque, Cyprès et chêne en vert et Bouleau, graminées et Urticacées en vert clair.
Ma question: ne serait-il pas possible de n'avoir que le risque le plus élevé avec les pollens concernés par ce risque? Ici Cyprès et Chêne pour risque 2.

Re: [DZVents] Alerte Pollens

Publié : 28 avr. 2019, 11:10
par papoo
je vais tester avec ton département dans la journée, je te dis

Re: [DZVents] Alerte Pollens

Publié : 28 avr. 2019, 11:29
par papoo
script corrigé et mis à jour

Re: [DZVents] Alerte Pollens

Publié : 28 avr. 2019, 16:23
par pilou
C'est OK. Merci

Re: [DZVents] Alerte Pollens

Publié : 29 avr. 2019, 08:58
par Wolfen38
Salut,

J'ai récupéré ton script et je l'ai mis dans le répertoire /home/pi/domoticz/scripts/dzVents/scripts

Mais rien ne se passe.

Au début je l'avais mis dans les script lua, mais j'avais une erreur.

Re: [DZVents] Alerte Pollens

Publié : 29 avr. 2019, 09:04
par papoo
c'est un script dzvents
il ne s’exécute que toutes les 6 heures.
décommente la ligne

Code : Tout sélectionner

-- level    =   domoticz.LOG_DEBUG,
pour voir son execution.

Éventuellement remplace

Code : Tout sélectionner

every 6 hours
par

Code : Tout sélectionner

every minute
à des fins de tests
Wolfen38 a écrit : 29 avr. 2019, 08:58 je l'ai mis dans le répertoire /home/pi/domoticz/scripts/dzVents/scripts
les droits du fichier sont ils correct? 0755.

Fait un

Code : Tout sélectionner

 sudo chmod +x /home/pi/domoticz/scripts/dzVents/scripts/pollens.lua
par acquis de conscience.

As tu créé un device Alert?

Quelle est ta version de domoticz /DZvents?

Re: [DZVents] Alerte Pollens

Publié : 29 avr. 2019, 09:23
par Wolfen38
Nickel, c'est tout bon, peut être les droits qui posaient problème.

Merci pour ton partage.

Re: [DZVents] Alerte Pollens avec sélection des risques à surveiller

Publié : 29 avr. 2019, 14:15
par papoo
nouvelle version 1.1 permettant de choisir les pollens pour lesquels nous souhaitons être alerté en commentant ou décommentant les pollens dans le tableau risques

Code : Tout sélectionner

local risques = { -- Commentez (en ajoutant -- devant) ou décommentez (en enlevant -- devant) les risques que vous souhaitez surveiller.
                    -- "Tilleul",
                    -- "Ambroisies",
                    -- "Olivier",
                    -- "Plantain",
                    "Noisetier",
                    -- "Aulne",
                    -- "Armoise",
                    -- "Châtaignier",
                    -- "Urticacées",
                    -- "Oseille",
                    "Graminées",
                    -- "Chêne",
                    -- "Platane",
                    "Bouleau",
                    -- "Charme",
                    -- "Peuplier",
                    -- "Frêne",
                    -- "Saule",
                    -- "Cyprès",
                    }
                    

Re: [DZVents] Alerte Pollens avec sélection des risques à surveiller

Publié : 02 mai 2019, 16:25
par psy501
Encore 1000 merci papoo pour tes nombreuses contributions et scripts

Mais je n'arrive pas à faire fonctionner celui ci :-(

Erreur:

Error: EventSystem: in Alerte Pollens: [string "--[[ alertePollens.lua for [ domoticzVents >=..."]:52: attempt to index global 'domoticz' (a nil value)

Une idée ?