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

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

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

Message 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é 7899 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
}
Dernière modification par papoo le 05 mai 2019, 11:35, modifié 7 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
pilou
Messages : 30
Inscription : 26 janv. 2018, 18:05

Re: [DZVents] Alerte Pollens

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

Re: [DZVents] Alerte Pollens

Message par papoo »

je vais tester avec ton département dans la journée, je te dis
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: [DZVents] Alerte Pollens

Message par papoo »

script corrigé et mis à jour
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
pilou
Messages : 30
Inscription : 26 janv. 2018, 18:05

Re: [DZVents] Alerte Pollens

Message par pilou »

C'est OK. Merci
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: [DZVents] Alerte Pollens

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

Re: [DZVents] Alerte Pollens

Message 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?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: [DZVents] Alerte Pollens

Message par Wolfen38 »

Nickel, c'est tout bon, peut être les droits qui posaient problème.

Merci pour ton partage.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message 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",
                    }
                    
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
psy501
Messages : 48
Inscription : 02 mai 2019, 16:20

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

Message 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 ?
Répondre