Voici un script PHP pour récupérer les mesures des sondes WeatherHub , via les serveurs de TFA, et les inscrire dans les capteurs virtuels de Domoticz. Le script n'est surement pas parfait, je n'ai pas beaucoup de connaissance, mais il fonctionne. J'utilise PHP 7.2.
Script PHP :
Code : Tout sélectionner
<?php
#Création du Dummy WeatherHub dans le menu Matériel de Domoticz
#Création des capteurs virtuels : Temp ; Temp/Hum ; Pluie ; Interrupteur (inondation)
#Notez les IDX à inscrire en bas du programme
#WeatherHub
#Lecture de la page avec les mesures
$WHurl="https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=numéro-identification";
$WHfp = fopen($WHurl,"r"); //lecture du fichier
if ($WHfp){
while (!feof($WHfp)) {
$WHpage .= fgets($WHfp, 4096); // lecture du contenu de la ligne
}
}
#Etat Domoticz - Inondation chauffe-eau
#Lecture de la page du capteur virtuel interrupteur
$Dom206url="http://192.168.1.xx:8080/json.htm?type=devices&rid=206";
$Dom206fp = fopen($Dom206url,"r"); //lecture du fichier
if ($Dom206fp){
while (!feof($Dom206fp)) {
$Dom206page .= fgets($Dom206fp, 4096); // lecture du contenu de la ligne
}
}
#Capteur Abri de jardin (température)
$ADJt=explode("numéro-du-capteur",$WHpage);
$ADJt=explode("<h4>",$ADJt[2]);
$ADJt=explode("</h4>",$ADJt[2]);
$ADJt=explode(" C",$ADJt[0]);
#Capteur Chauffe-eau (température/humidité/inondation)
$ChEt=explode("numéro-du-capteur",$WHpage);
$ChEt=explode("<h4>",$ChEt[2]);
$ChEt=explode("</h4>",$ChEt[2]);
$ChEt=explode(" C",$ChEt[0]);
$ChEh=explode("numéro-du-capteur",$WHpage);
$ChEh=explode("<h4>",$ChEh[2]);
$ChEh=explode("</h4>",$ChEh[3]);
$ChEh=explode("%",$ChEh[0]);
$ChEi=explode("numéro-du-capteur",$WHpage);
$ChEi=explode("<h4>",$ChEi[2]);
$ChEi=explode("</h4>",$ChEi[4]);
if ($ChEi[0]=="Aride"){$ChEi="Off";}
if ($ChEi[0]=="Humide"){$ChEi="On";}
$IDX206=explode("Status",$Dom206page);
$IDX206=explode('"',$IDX206[1]);
#Capteur Compteur d'eau (température/humidité/température externe)
#Cpt = compteur / E = eau / t ou h = température ou humidité / E = externe
$CptEt=explode("numéro-du-capteur",$WHpage);
$CptEt=explode("<h4>",$CptEt[2]);
$CptEt=explode("</h4>",$CptEt[2]);
$CptEt=explode(" C",$CptEt[0]);
$CptEh=explode("numéro-du-capteur",$WHpage);
$CptEh=explode("<h4>",$CptEh[2]);
$CptEh=explode("</h4>",$CptEh[4]);
$CptEh=explode("%",$CptEh[0]);
$CptEtE=explode("numéro-du-capteur",$WHpage);
$CptEtE=explode("<h4>",$CptEtE[2]);
$CptEtE=explode("</h4>",$CptEtE[3]);
$CptEtE=explode(" C",$CptEtE[0]);
#Capteur Garage (température/humidité)
$GarT=explode("numéro-du-capteur",$WHpage);
$GarT=explode("<h4>",$GarT[2]);
$GarT=explode("</h4>",$GarT[2]);
$GarT=explode(" C",$GarT[0]);
$GarH=explode("numéro-du-capteur",$WHpage);
$GarH=explode("<h4>",$GarH[2]);
$GarH=explode("</h4>",$GarH[3]);
$GarH=explode("%",$GarH[0]);
#Capteur Bureau / Chambre petite / Chambre grande / Sejour (KlimaHome)
#Sonde interne / Capteur 1 / Capteur 2 / Capteur 3
$BurT=explode("numéro-du-capteur",$WHpage);
$BurT=explode("<h4>",$BurT[2]);
$BurT=explode("</h4>",$BurT[2]);
$BurT=explode(" C",$BurT[0]);
$BurH=explode("numéro-du-capteur",$WHpage);
$BurH=explode("<h4>",$BurH[2]);
$BurH=explode("</h4>",$BurH[3]);
$BurH=explode("%",$BurH[0]);
$ChpT=explode("numéro-du-capteur",$WHpage);
$ChpT=explode("<h4>",$ChpT[2]);
$ChpT=explode("</h4>",$ChpT[4]);
$ChpT=explode(" C",$ChpT[0]);
$ChpH=explode("numéro-du-capteur",$WHpage);
$ChpH=explode("<h4>",$ChpH[2]);
$ChpH=explode("</h4>",$ChpH[5]);
$ChpH=explode("%",$ChpH[0]);
$ChgT=explode("numéro-du-capteur",$WHpage);
$ChgT=explode("<h4>",$ChgT[2]);
$ChgT=explode("</h4>",$ChgT[6]);
$ChgT=explode(" C",$ChgT[0]);
$ChgH=explode("numéro-du-capteur",$WHpage);
$ChgH=explode("<h4>",$ChgH[2]);
$ChgH=explode("</h4>",$ChgH[7]);
$ChgH=explode("%",$ChgH[0]);
$SejT=explode("numéro-du-capteur",$WHpage);
$SejT=explode("<h4>",$SejT[2]);
$SejT=explode("</h4>",$SejT[8]);
$SejT=explode(" C",$SejT[0]);
$SejH=explode("numéro-du-capteur",$WHpage);
$SejH=explode("<h4>",$SejH[2]);
$SejH=explode("</h4>",$SejH[9]);
$SejH=explode("%",$SejH[0]);
#Capteur pluviomètre
$Pluie=explode("numéro-du-capteur",$WHpage);
$Pluie=explode("<h4>",$Pluie[2]);
$Pluie=explode("</h4>",$Pluie[2]);
$Pluie=explode(" mm",$Pluie[0]);
#ENREGISTREMENT WeatherHub
#Inscription des valeurs dans un fichier, et mise à jour des capteurs dans Domoticz
{
$nomfic="WeatherHub.txt";
$ftpfile=fopen("$nomfic","w");
$val =
$ADJt[0]."\n"."\n".
$ChEt[0]."\n".$ChEh[0]."\n".$ChEi."\n"."\n".
$CptEt[0]."\n".$CptEh[0]."\n".$CptEtE[0]."\n"."\n".
$GarT[0]."\n".$GarH[0]."\n"."\n".
$BurT[0]."\n".$BurH[0]."\n".$ChpT[0]."\n".$ChpH[0]."\n".$ChgT[0]."\n".$ChgH[0]."\n".$SejT[0]."\n".$SejH[0]."\n"."\n".
$Pluie[0]."\n"."\n".
"\n";
fputs($ftpfile,$val);
fclose($ftpfile);
}
{
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=204&nvalue=0&svalue='.$ADJt[0]);
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=205&nvalue=0&svalue='.$ChEt[0].';'.$ChEh[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=207&nvalue=0&svalue='.$CptEt[0].';'.$CptEh[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=210&nvalue=0&svalue='.$CptEtE[0]);
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=211&nvalue=0&svalue='.$GarT[0].';'.$GarH[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=213&nvalue=0&svalue='.$BurT[0].';'.$BurH[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=214&nvalue=0&svalue='.$ChpT[0].';'.$ChpH[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=215&nvalue=0&svalue='.$ChgT[0].';'.$ChgH[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=216&nvalue=0&svalue='.$SejT[0].';'.$SejH[0].';0');
file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=udevice&idx=217&nvalue=0&svalue=0;'.$Pluie[0]);
}
if ($ChEi != $IDX206[2]) {file_get_contents('http://192.168.1.xx:8080/json.htm?type=command¶m=switchlight&idx=206&switchcmd='.$ChEi);}
?>
Voici les réglages du NAS Synology :
Code : Tout sélectionner
Synology - Planificateur de taches
Tache : WeatherHub
Utilisateur : root
Execution : Quotidienne
Première heure : 00
Fréquence : 5 minutes
Dernière heure : 23h55
Script : /usr/bin/php -f /volume1/Volume_1/PHP/WeatherHub.php
# volume1 = nom de la partition
# Volume_1 = nom du dossier partagé
# PHP = dossier choisi pour le stockage du script