Bonjour à tous,
Voici ci-dessous un code un peu plus intelligent que mon code initial. Il permet de renseigner les différentes sondes à extraire dans une variable liste unique et prend en compte l’heure du relevé (la commande n’est mise à jour que si la mesure à moins de 15 minutes), ce qui permet à Jeedom de gérer les alertes communications.
$phoneid="PHONE ID";
$tabmodules = [
["Cave","/html/body/div[2]/div[1]/div/div/div[1]/h3/a","/html/body/div[2]/div[1]/div/div/div[3]/h4",[//Titre du capteur, Chemin xpath du titre, Chemin xpath de la date/heure du relevé
["/html/body/div[2]/div[1]/div/div/div[4]/h4",3011],//Chemin xpath de la mesure, Id. de la commande
["/html/body/div[2]/div[1]/div/div/div[6]/h4",3012]]],
["Piscine","/html/body/div[2]/div[5]/div/div/div[1]/h3/a","/html/body/div[2]/div[5]/div/div/div[3]/h4",[
["/html/body/div[2]/div[5]/div/div/div[4]/h4",2996],
["/html/body/div[2]/div[5]/div/div/div[6]/h4",2998]]],
["Piscine 2","/html/body/div[2]/div[6]/div/div/div[1]/h3/a","/html/body/div[2]/div[6]/div/div/div[3]/h4",[
["/html/body/div[2]/div[6]/div/div/div[5]/h4",2934]]],
["Maison","/html/body/div[2]/div[4]/div/div/div[1]/h3/a","/html/body/div[2]/div[4]/div/div/div[3]/h4",[
["/html/body/div[2]/div[4]/div/div/div[5]/h4",3003],
["/html/body/div[2]/div[4]/div/div/div[6]/h4",3005],
["/html/body/div[2]/div[4]/div/div/div[4]/h4",3015],
["/html/body/div[2]/div[4]/div/div/div[7]/h4",3000]]],
["Etage","/html/body/div[2]/div[3]/div/div/div[1]/h3/a","/html/body/div[2]/div[3]/div/div/div[3]/h4",[
["/html/body/div[2]/div[3]/div/div/div[4]/h4",3007]]]
];
$stream = stream_context_create(Array("http" => Array("method" => "GET",
"header" => "User-agent: PHP",
)));
$html = file_get_contents("https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=".$phoneid,false,$stream);
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$now_timestamp=time();
foreach ($tabmodules as list($module_titre,$module_titre_xpath,$module_dateheure_xpath,$tabcapteurs)) {
$module_timestamp=date_format(date_create_from_format("d/m/Y H:i:s",$xpath->query($module_dateheure_xpath)[0]->childNodes[0]->nodeValue),'U');
if (( $xpath->query($module_titre_xpath)[0]->childNodes[0]->nodeValue == $module_titre ) && ($now_timestamp-$module_timestamp<900)) {
foreach ($tabcapteurs as list($capteur_xpath,$capteur_cmdid)) {
$value=$xpath->query($capteur_xpath)[0]->childNodes[0]->nodeValue;
if ($value!="---" && $value!="OFL") {
cmd::byId($capteur_cmdid)->event($value);
$scenario->setLog($module_titre." (".($now_timestamp-$module_timestamp).") "."->".$value);
};
};
};
};