Edit du 11/01/2017 : Comme indiqué dans les commentaires l’adresse http://www.lcsqa.org/surveillance/indices/prevus/jour/xml/ ne répond plus. Ce qui suit est donc inexploitable.
Si vous avez des infos sur les endroits ou on peut degoter les indices de qualité d’air, faites en part dans les commentaires.
Après l’article concernant l’intégration des données de qualité de l’air à Paris grâce à Airparif, voyons comment intégrer la qualité de l’air à Domoticz pour d’autres villes que la capitale.
Un commentaire d’ Emmanuel Pierre nous indiquait l’existence d’un script perl permettant d’intégrer la qualité de l’air depuis le site lcsqa.org : Laboratoire Central de Surveillance de la Qualité de l’Air pour de nombreuses viles Françaises.
Bonjour,
Le même script en perl mais qui permet de récupérer ces données pour une ville de France:
https://github.com/empierre/domoticz/blob/master/AIQ-LCSQA.pl
Un commentaire du mois de juin de Nam nous propose un script Lua dont vous trouverez le code plus bas dans l’article.
Le site lcsqa.org met à notre disposition une API interrogeable par le nom de la ville.
On peut visualiser sur cette carte http://www.lcsqa.org/surveillance/indices/cartographie les indices et récupérer le nom de la ville qui nous intéresse en cliquant dessus..
ou sous forme de liste complété pour une date précise http://www.lcsqa.org/surveillance/indices/liste?date_indice=2015-04-19
Le paramétrage de Domoticz.
Il faut créer dans Domoticz 5 capteurs virtuels « Qualité de l’air » correspondant aux indices partiels et global : indice global, No2, So2,O3, pm10 et noter leur idx respectifs.
Le script Perl
- Récupérez le script depuis le github de empierre : https://github.com/empierre/domoticz/blob/master/AIQ-LCSQA.pl
- Copiez le dans Domoticz/script
- Rendez le exécutable.
Il nécessite la bibliothèque XML:Simple et JSON : installez les par
Modifiez la partie ci dessous pour la faire correspondre à votre configuration
#A adapter à votre configuration: my $domo_ip="192.168.0.28"; my $domo_port="8080"; my $agglomeration="PARIS"; my $dz_ind=211; my $dz_o3=220; my $dz_no2=221; my $dz_so2=222; my $dz_pm10=219;
A noter : Les valeurs des polluants restent souvent à 0 , on ne récupère que l’indice global.
Le script Lua
Edit du 19/10/2015: suppression du script Lua
Il reste toutefois dans les commentaires de ce billet au cas ou une bonne volonté aurait envie de corriger/refaire un script correct.
Ça y est nous avons tous nos indices de pollution comme les parisiens !!
Mais chez nous, pas de pollution !!!
Merci à Empierre pour son travail.
Bonjour,
je viens d’installer ce script sur mon système mais cela ne fonctionne pas pour le moment.
J’ai mis le script avec mes paramètres dans /scripts/perl sous le nom de script_qualite_air.pl après l’avoir rendu exécutable avec un chmod u+x script_qualite_air.pl.
Est ce que cela est correct?
Je ne vois pas d’ou viens l’erreur.
Peut être les `au lieu de ‘ dans les lignes 42 44 46 48 50 ?
Merci pour votre aide
Bonsoir
Oui c’est correct
Y’a t’il des erreurs au lancement du script manuellement ?
Je n’ai pas eu besoin de toucher quoique ce soit d’autre en dehors des parametres specifiques à mon installation
A tu un user/motdepasse pour Domoticz ?
Bonjour,
merci pour la réponse mais je n’ai pas de user/motdepasse pour Domoticz.
Je teste ce soir en manuel.
Faut il créer une ligne dans cron pour exécuter le script ou s’exécute-il tout seul?
Merci
Après avoir réglé le problème dont tu parles , il faudra en effet le placer dans le cron
Salut
J’ai essayé les deux scripts et (py et pl) et ça ne fonctionne pas.
Le script Pyton me donne les erreurs d’identifation. J’ai donc supprimé les users et mot de passe et ça ne fonctionne pas (Même en faisant l’inverse)
Le script Perl m’affiche bien les valeurs dans Putty (Genre 6 5 4 6) mais elles ne sont pas prise en compte dans domoticz.
J’ai bien ajouter des dispositifs et mis leur IDX et non ça ne va pas.
Par contre si je copie l’URL dans mon navigateur ça fonctionne (Même en navigation privée)
A+
Bonjour
N’ayant pas rencontré de soucis particulier ni avec l’un ,ni avec l’autre, découpons tout ça pour y voir plus clair:
Est ce que Domoticz est protege par mot de passe/user
Pour le script python quels sont les messages erreurs ?
Pour le perl est ce que les capteurs virtuels sont du bon type (qualite de l’air)
Merci d’avoir répondu
Non pas de mot de passe/user
J’ai des soucis sur le script Airparif.py, j’ai bien créé les bon capteur virtuel
Pour le script perl oui j’ai mis des capteurs virtuels qualité de l’air.
Comme je l’ai dis au dessus, si je prend un URL dans le script Airparif.py pour la qualité de l’air (Exemple), que je mets une valeurs au hasard et que je copie l’URL dans mon navigateur ça fonctionne.
On dirait que le soucis vient de Putty, comme si ça ne trouvait pas l’adresse IP de domoticz (Alors que j’ai bien mis la bonne)
Bonne journée
Et pour le python quelle est l’ erreur
As tu fait des chmod + x sur tes 2 scripts
Voici l’erreur
requests.exceptions.ConnectionError: (‘Connection aborted.’, error(110, ‘Connection timed out’))
Cela correspond à une ip inaccessible
tu as vu ici , recherche le problème par la
fais attention aux points, au simple guillemet qui referment, le port c’est 8080 chez toi ou tu l’as changé dans la config de Domoticz ?
J’ai bien mis la bonne ip et le bon port, on dirait qu’il y’a un blocage entre putty et domoticz, si je copie l’adresse http que j’ai en retour dans mon navigateur, ça fonctionne
OK et dans putty que donne un acces a Airparif par
curl http://www.airparif.asso.fr/appli/api/indice?date=jour
puis un acces a domoticz par l’adresse http qui matche dans ton navigateur
curl http://ipdomoticz:port……
une des 2 doit donner une erreur, laquelle ?
Le premier fonctionne mais le deuxième non:
curl http://192.168.1.85:8080
curl: (7) couldn’t connect to host
Bien,
et que donne curl http://192.168.1.85:8080/json.htm?type= ……… avec toute la suite
pourrais tu mettre ici la chaine complète envoyée vers Domoticz que l’on voit ou ca peche
Voici ce que ça donne:
curl http://192.168.1.85:8080/json.htm?type=command¶m=udevice&idx=73&nvalue=2
[7] 22653
[8] 22654
[9] 22655
[6] Done idx=73
[8]- Done param=udevice
[9]+ Done idx=73
La valeur ne change pas dans domoticz
Compliqué cette histoire
Oups j’ai oublié la dernière ligne
curl: (7) couldn’t connect to host
Ah, c’est bon, j’ai compris
Je pense que tu n’a pas crée des widget pourcentage, le script python cherche à remplir des valeurs dans un widget pourcent et comme ton widget ne l’est pas ca bugge
Cree donc 4 widgets pourcent , place leurs idx dans le script et ca doit rouler
Pour le script Python j’ai des widget %
Pour le script Perl j’ai des widget Qualité de l’air
Mais j’ai toujours la même erreur, sauf si je mets l’adresse manuellement dans mon navigateur
Si un jour je trouve la solution je vous la communiquerai parce que là je comprend pas
Merci quand même 🙂
Toujours pour le script python , je viens de voir dans la commande que tu donnais précédemment un nvalue=2
« http://192.168.1.85:8080/json.htm?type=command¶m=udevice&idx=73&nvalue=2 »
or dans le script python d’origine (et je viens de vérifier à l’instant) ce n’est pas nvalue mais svalue
Je pense que tout vient de la
A suivre…
Non toujours pas :/
J’ai curl: « (7) couldn’t connect to host » au bout de 60 sec
Il faudrait que je post dans le forum car j’ai d’autre soucis étrange
J’ai réinstaller domoticz et ça fonctionne, il devrait y’avoir des erreurs (Et oui ça fait 1 ans que mon RPi tourne)
Merci pour ton site, j’apprends plein de choses 🙂
A+
Bonjour,
le script perl fonctionne aussi chez moi mais j’ai uniquement le retour pour l’indice global.
Savez vous pourquoi je n’obtiens pas les autres infos?
Je n’ai pas encore édité le fichier cron car je ne sais pas quoi mettre comme paramètres sachant qu’il est inutile de demander une mise à jour toute les heures si le site les mets à jour 2 fois par jour.
Savez-vous la fréquence de rafraîchissement de l’indice sur le site http://www.lcsqa.org ?
Qu’utilisez vous comme ligne cron?
Merci pour vos infos
Activa73
Bon , parfait
Bonne continuation et merci des compliments
Bonsoir,
Indéniablement ,les stations ne renvoient pas tous les paramètres.
Regarde dans cette liste ce que renvoie ta ville http://www.lcsqa.org/surveillance/indices/liste
Quand à la fréquence , je leur ai posé la question il y a plusieurs jours, ainsi que celle des mesures à vide mais pas de réponse à ce jour
Voici le scipt lua (script_time_pollution.lua)
Il fait la maj 2 fois par jour (au levé et au couché du soleil) afin de ne pas trop solliciter le site http://www.lcsqa.org
— demo time script
— script names have three name components: script_trigger_name.lua
— trigger can be ‘time’ or ‘device’, name can be any string
— domoticz will execute all time and device triggers when the relevant trigger occurs
—
— copy this script and change the « name » part, all scripts named « demo » are ignored.
—
— Make sure the encoding is UTF8 of the file
—
— ingests tables: otherdevices,otherdevices_svalues
—
— otherdevices and otherdevices_svalues are two item array for all devices:
— otherdevices[‘yourotherdevicename’]= »On »
— otherdevices_svalues[‘yourotherthermometer’] = string of svalues
—
— Based on your logic, fill the commandArray with device commands. Device name is case sensitive.
—
— Always, and I repeat ALWAYS start by checking for a state.
— If you would only specify commandArray[‘AnotherDevice’]=’On’, every time trigger (e.g. every minute) will switch AnotherDevice on.
—
— The print command will output lua print statements to the domoticz log for debugging.
–List all otherdevices states for debugging:
— for i, v in pairs(otherdevices) do print(i, v) end
–List all otherdevices svalues for debugging:
— for i, v in pairs(otherdevices_svalues) do print(i, v) end
print(‘Start: script_time_pollution in the domoticz log’)
id= »(AIR) »
commandArray = {}
printf = function(s,…) return print(id..s:format(…)) end
#Parametres à changer
local domo_ip= »localhost »
local domo_port= »8080″
local user= » »
local password= » »
local agglomeration= »
local dz_ind=
local dz_no2=
local dz_so2=
local dz_o3=
local dz_pm10=
local time = os.date(« *t »)
t1 = time.hour*60+time.min
t2 = timeofday[‘SunriseInMinutes’]
t3 = timeofday[‘SunsetInMinutes’]
print (‘Now ‘..t1..’ sunrise ‘..t2..’ sunset ‘..t3)
if ((t1 == t2 ) or (t1 == t3 )) then
os.execute(« curl http://www.lcsqa.org/surveillance/indices/prevus/jour/xml > /tmp/air.xml && chmod 777 /tmp/air.xml »)
listing= »/tmp/air.xml »
fhnd,err=io.input(listing) –io.open(listing)
if fhnd then
XmlString = io.read(« *all »)
fhnd.close()
for att in XmlString:gmatch'(.-)’ do
v_ville = att:match'(.-)’
if (v_ville == agglomeration) then
v_date = (att:match'(.-)’ or ‘n/a’)
v_ind = (att:match'(.-)’ or ‘n/a’)
v_O3 = (att:match'(.-)’ or ‘n/a’)
v_NO2 = (att:match'(.-)’ or ‘n/a’)
v_PM10 = (att:match'(.-)’ or ‘n/a’)
v_SO2 = (att:match'(.-)’ or ‘n/a’)
v_com = (att:match'(.-)’ or ‘n/a’)
url=’http://’..user..’:’..password..’@’..domo_ip..’:’..domo_port..’/json.htm?type=command¶m=udevice&idx=’..dz_ind..’&nvalue=’..v_ind
s = ‘curl -s -I « ‘..url..' »‘
os.execute(s)
url=’http://’..user..’:’..password..’@’..domo_ip..’:’..domo_port..’/json.htm?type=command¶m=udevice&idx=’..dz_no2..’&nvalue=’..v_NO2
s = ‘curl « ‘..url..' »‘
os.execute(s)
url=’http://’..user..’:’..password..’@’..domo_ip..’:’..domo_port..’/json.htm?type=command¶m=udevice&idx=’..dz_so2..’&nvalue=’..v_SO2
s = ‘curl « ‘..url..' »‘
os.execute(s)
url=’http://’..user..’:’..password..’@’..domo_ip..’:’..domo_port..’/json.htm?type=command¶m=udevice&idx=’..dz_o3..’&nvalue=’..v_O3
s = ‘curl « ‘..url..' »‘
os.execute(s)
url=’http://’..user..’:’..password..’@’..domo_ip..’:’..domo_port..’/json.htm?type=command¶m=udevice&idx=’..dz_pm10..’&nvalue=’..v_PM10
s = ‘curl « ‘..url..' »‘
os.execute(s)
break
end
end
else
printf(« Can’t open file: %s (%s) »,listing,err)
end
end
print(‘Stop: script_time_pollution in the domoticz log’)
return commandArray
Bonjour, concernant le script LUA l avait vous tester ? Pour moi rien ne fonctionne, est il possible d avoir un peu plus d explications ?
Merci
Bonjour
Le script Lua est en effet buggé de chez buggé
Je n’ai pas le temps, ni les connaissances suffisantes pour le corriger de fond en comble
Je le supprime de l’article
Bonjour
Le script perl fonctionne chez moi.
Après quelques recherches pour les mêmes motifs que Patrice73, je penses avoir la réponse à la question concernant les infos manquantes.
Le script récupère les informations que l’on visualise dans l’onglet « Données prévues pour aujourd’hui » et rare sont les sous-indices renseignés.
Test fait avec la ville de AUBAGNE le 1er Décembre 2015 à 13h30
Données consolidées : 3 3 2 – –
Données prévues aujourd’hui : 4 3 4 4 – les valeurs reçues dans DomoticZ.
Données prévues demain : 5
Un grand merci pour votre site sur lequel j’ai trouvé un maximum d’infos et qui m’a souvent dépanné dans mes galères.
Cordialement
Ca marche pas mal mais… pour une qualité de l’air de 8 (Mauvais en pratique), j’obtiens sur Domoticz Excellent… en fait tout est à excellent… d’où vient ce libellé? De même que l’unité, qui est à « ppm »! Alors que le script PERL ne retourne qu’une valeur numérique…
Merci pour vos explications!
Cdt,
bonsoir
Quel script utilises tu ?
pas le perl d’après ce que je comprends
Bonjour Patrice, Si j’utilise le script de https://github.com/empierre/domoticz/blob/master/AIQ-LCSQA.pl …
A priori si je lis bien le source il fait des appels avec seulement des valeurs numériques, donc c’est coté Domoticz que doit se passer l’interprétation?
Bonsoir
Ah j’ai compris !!
On recupere des valeurs depuis le site airqual dont les valeurs sont entre 1 et 30/50.
Comme on met cela dans un widget domoticz CO2, les valeurs 1,2,3, … sont faibles et le commentaire associé à la valeur est donc excellent parce que 1,2,3,… de CO2 c’est excellent.
Donc cela ne reflete rien le commantaire lié à la valeur puisque pas approprié , donc 2 solutions
soit tu fais avec soit tu créé d’autres widgets (texte ou alerte) et tu modifie le script perl pour alimenter non plus des widgets CO2 mais des text ou alerte
merci pour ta réponse… je vais faire d’abord l’option 1 parce que je viens juste de découvrir Domoticz (et je ne comprends pas encore bien la philisophie…), puis je ferai le 2) si j’en suis capable 🙂
Cdt,
S
Fini de jouer , la page http://www.lcsqa.org/surveillance/indices/prevus/jour/xml n’existe plus (et pas trouvé d’autre lien…)…
Arf, c’est bien dommage que cela ne fonctionne plus.
Pour info, concernant la normandie (où je réside), le site www.airnormand.fr permet de retoruver toutes les infos de qualité de l’air avec des mesures heure par heure. Aucune idée de comment rapatrier cela dans domoticz, et ce ne sera de toute façon pas valable pour l’ensemble du territoire….
Merci encore pour le travail fourni, en espérant que cela re-fonctionne un jour.
On peut peut etre récuperer les données du site de prev’air : http://www2.prevair.org/
Ca y est,j’ai ecrit un script qui recupere ces données vous pouvez le trouver sur ce sujet du forum:
https://easydomoticz.com/forum/viewtopic.php?f=17&t=3366