LUA: qualité de l'air de votre maison

Vous avez crée 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.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
totof60
Messages : 321
Enregistré le : 29 avr. 2016, 09:31

LUA: qualité de l'air de votre maison

Message par totof60 » 19 déc. 2017, 17:07

Bonjour à tous.

stephdes nous a fait un super tuto afin de réaliser un capteur de particules chez soi
viewtopic.php?f=24&t=5412

Dans son tuto il pointe vers le site du OK Lab Stuttgart
http://luftdaten.info/fr/accueil/
Le projet très bien documenté en Français propose de réaliser un capteur de particules et de transmettre les données sur un site d'alerte.

Tellement bien documenté que je me suis empressé de commander la sonde laser pour une quinzaine d'Euro : SDS011
https://fr.aliexpress.com/af/SDS011.htm ... isViewCP=y

Je ne reviendrai pas sur la création du capteur puisque tout est documenté sur le site.
Le capteur est en fonction, et il est possible de récupérer les données en local ( certainement aussi sur l'API)

Donc voici un petit tuto et partage de mon script
Le script est basé sur celui de papoo qui signe des script tellement clairs et documentés qu'un noobs comme moi arrive à les modifier.
merci à lui .

COTE DOMOTICZ :

- Création d'un Matériel de type Dummy , capteur virtuel , type de capteur : Custom Sensor, Nom : "Qualité air maison PM10", Nom de l'axe : "µg/m3" on notera son IDX

- Création d'un Matériel de type Dummy , capteur virtuel , type de capteur : Custom Sensor, Nom : "Qualité air maison PM2.5", Nom de l'axe : "µg/m3" on notera son IDX

- Création d'un Matériel de type Dummy , capteur virtuel , type de capteur :"Alerte", Nom : "Qualité air maison PM2.5" on notera son IDX

Le script :

Code : Tout sélectionner

--[[
name : script_time_qualite_air_maison.lua
auteur : chris
Script honteusement pompé sur celui de Papoo, merci à lui 
date de création : 19/12/2017
Date de mise à jour : 19/192/2017
Principe : Ce script a pour but d'interroger le capteur de particules de la maison  pour récupérer les informations de pollution 
le capteur est basé sur le projet du OK Lab Stuttgart
URL du projet : http://luftdaten.info/fr/accueil/
URL post :http://easydomoticz.com/forum/viewtopic.php?f=17&t=5519

]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local nom_script = "Qualité de l\'air maison"
local version = "0.50"
local debugging = true 
local IPsensor = "192.168.0.43"   -- renseigner l'IP  du capteur de particules
local dz_pm10 = 121               -- renseigner l'idx du device taux de particules associé si souhaité, sinon nil(custom sensor) 
local dz_pm25 = 122               -- renseigner l'idx du device taux de particules associé si souhaité, sinon nil(custom sensor)
local dz_indice_alert = 123         -- renseigner l'idx du device alert pollution associé si souhaité, sinon nil (dummy - alert)
local send_notification = 2       -- 0: aucune notification, 1: toutes, 2: (50 > Pollution <=100), 3: (100 > Pollution <=150), 4: (150 > Pollution <=200), 5: (Pollution > 200)
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
-- json = (loadfile "D:\\domoticz\\scripts\\lua\\json.lua")()  -- For Windows
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
    if (debugging) then
      if s ~= nil then
        print ("<font color='#f3031d'>".. s .."</font>")
      else
      print ("<font color='#f3031d'>aucune valeur affichable</font>")
      end
    end
end
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}
 now = os.date("*t")
 if now.min%10 == 0 then -- Toutes les 10 minutes

   local config=assert(io.popen('/usr/bin/curl -m5 "http://'..IPsensor..'/data.json"'))

   voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
    local blocjson = config:read('*all')
    config:close()
  -- print (blocjson)
   
   local jsonValeur = json:decode(blocjson)
   
   for valeur,i in pairs(jsonValeur.sensordatavalues) do
   
      -- Mise à jour du devise pm10 si il existe et si une valeur est disponible
     
             if dz_pm10 ~= nil then commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm10 ..'|0|'.. tostring(jsonValeur.sensordatavalues[1].value)} 
      end   
      -- Mise à jour du devise pm25 si il existe et si une valeur est disponible
      
             if dz_pm25 ~= nil then commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm25 ..'|0|'.. tostring(jsonValeur.sensordatavalues[2].value)} 
     end
     
 end
 local pm25 = jsonValeur.sensordatavalues[2].value
      --Mise à jour du devise aqi si il existe   
      if dz_indice_alert ~= nil then   
         if tonumber(pm25) <= 50   then -- niveau 2
            commandArray[#commandArray+1] = {['UpdateDevice'] = dz_indice_alert..'|1|Pas de Pollution'}
            if send_notification > 0 and send_notification < 2 then
            commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte Pollution#Pas de Pollution!'}
            end
            voir_les_logs("--- --- --- Pas de pollution --- --- ---",debugging)

         elseif tonumber(pm25) <= 100   then -- niveau 3
            commandArray[#commandArray+1] = {['UpdateDevice'] = dz_indice_alert..'|2|Polution Faible'}
            if send_notification > 0 and send_notification < 3 then
            commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte Pollution#Pollution Faible!'}
            end
            voir_les_logs("--- --- --- Pollution Faible --- --- ---",debugging)   

         elseif tonumber(pm25) <= 150   then -- niveau 4
            commandArray[#commandArray+1] = {['UpdateDevice'] = dz_indice_alert..'|3|Pollution Forte'}
            if send_notification > 0 and send_notification < 4 then
            commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte Pollution#Pollution Forte!'}
            end
            voir_les_logs("--- --- --- Pollution Forte --- --- ---",debugging)     

         elseif tonumber(pm25) > 150  then -- niveau 5
            commandArray[#commandArray+1] = {['UpdateDevice'] = dz_indice_alert..'|4|Pollution tres forte'}
            if send_notification > 0 and send_notification < 5 then
            commandArray[#commandArray+1] = {['SendNotification'] = 'Alerte Pollution#Pollution tres forte!'}
            end
            voir_les_logs("--- --- --- Pollution très forte --- --- ---",debugging)
         else
            voir_les_logs("niveau non defini")
         end
 end
    
     
      if debugging == true then --affichage des informations disponibles en mod debugging
     pm10 = jsonValeur.sensordatavalues[1].value
     pm25 = jsonValeur.sensordatavalues[2].value
     voir_les_logs("--- --- --- pm10 : ".. pm10 .." --- --- ---",debugging)
     voir_les_logs("--- --- --- pm25 : ".. pm25 .." --- --- ---",debugging)
     end
     voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
     
end --if time
      
   


return commandArray
Dans les variables à éditer:

local debugging: true pour voir le debug dans les log sinon false
local IPsensor : on notera l'IP du capteur précédemment créé
local dz_pm10 : notez l'IDX du custom sensor précédemment créé
local dz_pm25 : notez l'IDX du custom sensor précédemment créé
local dz_indice_alert: notez l'IDX du capteur virtuel alerte précédemment créé
local send_notification: selon votre choix activez le niveau d'alerte

Le script est à mettre dans l’éditeur evenements
de type LUA et TIME
Image

Et le résultat :
Image
Domoticz V4.9788
sous raspbian-Stretch, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Chrominator
Messages : 409
Enregistré le : 19 déc. 2015, 07:29

Re: LUA: qualité de l'air de votre maison

Message par Chrominator » 24 févr. 2018, 21:51

Je viens de suivre ton tuto.

Merci, ça fonctionne impec. :D
Il ne me reste plus qu'à l'installer à l'extérieur.

Chrominator
Messages : 409
Enregistré le : 19 déc. 2015, 07:29

Re: LUA: qualité de l'air de votre maison

Message par Chrominator » 03 mars 2018, 11:46

J'ai revu un peu le script.
J'ai remplacé les seuils existants par ceux de l'indice Atmo qui prend en compte les PM10.
Les PM2.5 qui sont testées dans le script n'indiqueront probablement jamais de pollution, les seuils sont bien trop hauts.
https://www.sciencesetavenir.fr a écrit :SEUILS. Les seuils limites fixés par l'Union européenne pour la qualité de l'air sont de 40 µg par m3 pour les PM10 et de 25 µg par m3 pour les PM2,5. L'OMS recommande pour sa part de limiter l'exposition à 20µg par m3 pour les PM10 et à 10 µg par m3 pour les PM2,5. Mais les chercheurs relèvent que dans leur étude, le risque de cancer du poumon subsiste même à des concentrations inférieures aux normes européennes et qu'il augmente en fonction du niveau atteint.
https://www.sciencesetavenir.fr/sante/p ... uils_25899

totof60
Messages : 321
Enregistré le : 29 avr. 2016, 09:31

Re: LUA: qualité de l'air de votre maison

Message par totof60 » 03 mars 2018, 15:49

Je peux malheureusement te confirmer que les seuils sont régulièrement dépassés.

Image
Domoticz V4.9788
sous raspbian-Stretch, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


victor81
Messages : 138
Enregistré le : 25 juin 2017, 09:59
Localisation : Tarn

Re: LUA: qualité de l'air de votre maison

Message par victor81 » 04 avr. 2018, 18:11

bonjour, je viens de monter le capteur.
apparement il fonctionne car j'ai ses valeurs par le site internet.
cependant, j'ai une erraur pour les info dans domoticz:
dans les log d'erreur: " 2018-04-04 17:40:03.501 Error: EventSystem: in qualité_air_maison: [string "--[[..."]:58: attempt to index local 'jsonValeur' (a nil value)
2018-04-04 17:50:03.498 Error: EventSystem: in qualité_air_maison: [string "--[[..."]:58: attempt to index local 'jsonValeur' (a nil value)
2018-04-04 18:00:03.498 Error: EventSystem: in qualité_air_maison: [string "--[[..."]:58: attempt to index local 'jsonValeur' (a nil value)
2018-04-04 18:10:03.418 Error: EventSystem: in qualité_air_maison: [string "--[[..."]:58: attempt to index local 'jsonValeur' (a nil value)"

a votre avis, où ais je péché? :/
Rpi 3b jessie sur ssd, rflink48, domoticz 4.9700, YANA
ma presentation: https://easydomoticz.com/forum/viewtopi ... =21&t=6449

victor81
Messages : 138
Enregistré le : 25 juin 2017, 09:59
Localisation : Tarn

Re: LUA: qualité de l'air de votre maison

Message par victor81 » 04 avr. 2018, 18:42

je m'autorepond XD.
c'etait l'adresse ip qui n'etait pas bonne.... tout est relevé maintenant
merci de ce script! :)
Rpi 3b jessie sur ssd, rflink48, domoticz 4.9700, YANA
ma presentation: https://easydomoticz.com/forum/viewtopi ... =21&t=6449

totof60
Messages : 321
Enregistré le : 29 avr. 2016, 09:31

Re: LUA: qualité de l'air de votre maison

Message par totof60 » 04 avr. 2018, 19:28

;)
Domoticz V4.9788
sous raspbian-Stretch, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY

domcars0
Messages : 181
Enregistré le : 18 févr. 2017, 20:23

Re: LUA: qualité de l'air de votre maison

Message par domcars0 » 14 avr. 2018, 15:24

Super petit script, merci beaucoup pour le partage!

Juste pour info, à ceux qui choisiraient dans domoticz des devices PPM10 et PPM25 de type "Qualité de l'air" (sous-type Voltcraft CO-20), il faut remplacer les lignes

Code : Tout sélectionner

       if dz_pm10 ~= nil then
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm10 ..'|0|'.. tostring(jsonValeur.sensordatavalues[1].value)}
        end
      -- Mise à jour du devise pm25 si il existe et si une valeur est disponible
        if dz_pm25 ~= nil then
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm25 ..'|0|'.. tostring(jsonValeur.sensordatavalues[2].value)}
        end
par

Code : Tout sélectionner

      if dz_pm10 ~= nil then
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm10 ..'|'.. tostring(jsonValeur.sensordatavalues[1].value)}
        end
      -- Mise à jour du devise pm25 si il existe et si une valeur est disponible
        if dz_pm25 ~= nil then
                commandArray[#commandArray+1] = {['UpdateDevice'] = dz_pm25 ..'|'.. tostring(jsonValeur.sensordatavalues[2].value)}
        end
(On enlève '|0', car ce type de device n'attend pas de valeur pour 'nvalue', voir https://www.domoticz.com/wiki/Domoticz_ ... ir_quality)
Modifié en dernier par domcars0 le 15 avr. 2018, 00:40, modifié 1 fois.

totof60
Messages : 321
Enregistré le : 29 avr. 2016, 09:31

Re: LUA: qualité de l'air de votre maison

Message par totof60 » 14 avr. 2018, 19:36

merci pour ton retour
Domoticz V4.9788
sous raspbian-Stretch, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY

Dom
Messages : 1
Enregistré le : 26 juil. 2018, 16:28

Re: LUA: qualité de l'air de votre maison

Message par Dom » 26 juil. 2018, 16:43

Bonjour,

Merci pour le Tuto

J'ai installé un Capteur de particules fines SDS011 sur un port USB de mon Raspberry PI avec Domoticz.
J'ai donc suivi le tuto mais utilisant le port USB je n'arrive pas à adapter le script pour non pas récupérer les données du capteur via le réseau mais sur le port USB.

Quelqu'un a t-il une solution ?

Merci par avance

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre