A l’instar de ce qui avait été fait ici https://easydomoticz.com/domoticz-prend-lair-de-paris-avec-airparif/ avec Airparif et Python , retrouvez ici le portage sous Windows et powershell.
Généralités
Le site Airparif.com met à notre disposition les mesures de pollution de la capitale pour 4 indices de pollution : indice global, NO2, O3 et pm10 (particules) allant de 0 faible à 100 très élevé.
Domoticz
Créez 4 widgets virtuels pourcentage et nommez les indice, NO2, O3, pm1 et notez soigneusement leurs idx respectifs.
Le script
Il faudra y définir les données de Domoticz et les indices respectifs de nos widgets.
#---PARAMETRES----------------------- # --- les adresses Domoticz user/pass -------- $domoticz="http://127.0.0.1:8080" $user="" $pass="" #------------------------------------------ # --- les idx des widget pourcentag pour les indices -------- # mettez vos propres idx à la place de 13,12,11,10 # pour l'indice global, puis l'indice NO2, le 02 et enfin les pm10 $idx = @{ "dz_indice_global"="13"; "dz_indice_NO2"="12"; "dz_indice_O3"="11"; "dz_indice_pm10"="10" } # -----debug a 1 pour afficher qq messages, autre valeur sinon ---- $debug=1 #------------------------------ $url_airparif="http://www.airparif.asso.fr/appli/api/indice?date=jour" #--- FIN DES PARAMETRES----------------------- #--- Fonction d'ecriture vers Domoticz via url------------------- function majdomoticz($idx,$val) { # ----- L url pour ecriture dans un widget pourcentage DZ ---- #http://IP:PORT/json.htm?type=command¶m=udevice&idx=mon_idx&svalue=POURCENTAGE $url1="/json.htm?type=command¶m=udevice&idx="+$idx+"&svalue="+$val $urldz=($domoticz+$url1) #------------------------------ $pair = "${user}:${pass}" $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) $base64 = [System.Convert]::ToBase64String($bytes) $basicAuthValue = "Basic $base64" $headers = @{ Authorization = $basicAuthValue } #------------------------------ #Invoke the web-request avec les headers d'authentification #$json=Invoke-WebRequest -uri $urldz -Headers $headers try { $json=Invoke-WebRequest -uri $urldz -Headers $headers } catch { $_.Exception.Response.StatusCode.Value__ if ($_.Exception.Response.StatusCode.Value__-eq 201) {write-host "erreur authentification user/pass"} } # recup reponse JSON $infos_json = ConvertFrom-Json -InputObject $json #recuperation depuis $infos_json avelc les libelles Domoticz $Val_Retour=$infos_json.status if ($debug-eq 1) { Write-Host "url Domoticz=" $urldz Write-Host "message Json="$json Write-host "Status retrourné="$Val_Retour} } #--------------- recup des idx configures plus haut ---------- $idx_glob=$idx.Get_Item("dz_indice_global") $idx_NO2=$idx.Get_Item("dz_indice_NO2") $idx_O3=$idx.Get_Item("dz_indice_O3") $idx_pm10=$idx.Get_Item("dz_indice_pm10") #--------------- --------------------------------------------- if ($debug-eq 1) { write-host "Les indices" $idx_glob $idx_NO2 $idx_O3 $idx_pm10 } #--- Fonction d'interrogation de L'API airparif et recup de la couleur dans des variables globales pour appel de la fonction de # mise à jour de Domoticz # les #----------------------- function interroge_airparif { try { $airparif_json=Invoke-WebRequest -uri $url_airparif} catch { $_.Exception.Response.StatusCode.Value__ if ($_.Exception.Response.StatusCode.Value__ -eq 404) {write-host "erreur 404: acces au site web"} } Try { $infos_airparif = ConvertFrom-Json -InputObject $airparif_json #$infos_airparif $global:valeur_indice_global=$infos_airparif.global.indice $global:valeur_indice_no2=$infos_airparif.no2.indice $global:valeur_indice_o3=$infos_airparif.o3.indice $global:valeur_indice_pm10=$infos_airparif.pm10.indice } Catch { # si il y a une erreur sur l'appel de l'adresse de airparif.com on affiche 100% dans les widgets $global:valeur_indice_global="99.99999" $global:valeur_indice_no2="99.999999" $global:valeur_indice_o3="99.999999" $global:valeur_indice_pm10="99.99999" } if ($debug-eq 1) { write-host "indice glob: "$global:valeur_indice_global write-host "NO2 : "$global:valeur_indice_no2 write-host "03: "$global:valeur_indice_o3 write-host "pm10: "$global:valeur_indice_pm10 } } #--------------------------------------- interroge_airparif majdomoticz $idx_glob $global:valeur_indice_global majdomoticz $idx_NO2 $Global:valeur_indice_no2 majdomoticz $idx_O3 $global:valeur_indice_o3 majdomoticz $idx_pm10 $global:valeur_indice_pm10
En cas de non réponse de Airparif les valeurs affichées dans les widgets seront 100 (99.9999 dans le script)
Il faudra placer ce script dans le planificateur de tâches Windows afin de la lancer au moins une fois par jour afin d’obtenir nos indices