Extraction données de sondes Mobile-Alerts/La Crosse

Effectivement c’est la fonction cmd::byId(X)->event($value) qui envoie à Jeedom la valeur. X est l’identifiant de la commande (et non du virtuel). Un équipement Jeedom peut contenir plusieurs commandes de type info. Par exemple dans mon cas j’ai un virtuel Cave qui contient deux commandes infos (témpérature et hygrométrie) qui sont toutes deux mises à jour par deux appels cmd::byId().

Merci de m’avoir répondu mais je ne sais pas encore très bien comment procéder.
J’ai bien récupéré le xpath de la valeur que je souhaite afficher mais quelle est la valeur de X dans cmd::byId(X) ? J’ai fait un copier collé de votre code ajusté pour mon Mobil-Alerts et je suppose que je que je dois trouver quelque part cette valeur X, mais où ?
Ensuite comment tester que tout soit ok pour l’intégrer dans un virtuel par l’appel d::byId() ?
Merci encore de bien vouloir m’assister…

Dans le virtuel vous avez les ID dans l’onglet équipement :

Que voulez vous dire par tester sur tout soit ok ?

if ( $xpath->query("/html/body/div[2]/div[2]/div/div/div[4]/h5")[0]->childNodes[0]->nodeValue == "Piscine" ) {
   	$value=$xpath->query("/html/body/div[2]/div[2]/div/div/div[4]/h4")[0]->childNodes[0]->nodeValue;//Température Piscine
    if ($value!="---" && $value!="OFL") cmd::byId(26030)->event($value);

Si j’appuie sur le bouton ‹ Tester › à droite sur la copie d’ écran ne devrai-je pas voire la valeur de la sonde s’afficher ?

Non impossible ce n’est pas la commande qui va chercher la valeur c’est un scénario qui l’alimente. Vous ne devez rien mettre dans la zone Valeur de la commande.

Vous devez créer un scénario avec le bloc code suivant :

$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=XXXXXXX",false,$stream); 

//$scenario->setLog(strlen($html));

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

if ( $xpath->query("/html/body/div[2]/div[1]/div/div/div[1]/h3/a")[0]->childNodes[0]->nodeValue == "Cave" ) {
   	$value=$xpath->query("/html/body/div[2]/div[1]/div/div/div[4]/h4")[0]->childNodes[0]->nodeValue;//Température
    if ($value!="---" && $value!="OFL") cmd::byId(3011)->event($value);
}

Vous remplacez dans ce code XXXXXXX par votre phoneid et bien sur les xpath et le 3011 par votre identifiant (26030).

Le scénario est de type Programmé et doit se lancer par exemple toutes les 15 minutes pour envoyer les valeurs au virtuel régulièrement.

Je viens de refaire le test sans rien rien mettre dans la zone valeur et bien sur programmé un scénario toutes les 15 minutes avec les bonnes valeurs phoneid et identifiant (26030), mais comment faire pour visualiser la valeur dans le virtuel ?
Désolé, mais il doit me manquer une information :thinking:

Slt , Quelqu’un sait’il si c’est possible de récupérer les données sur le serveur local de la station météo plutôt que le serveur mobile-alerts ?

Je ne pense pas que la passerelle conserve un historique des données et à ma connaissance il n’existe de toutes façons pas de moyen de s’y connecter.

L’idéale serait de pouvoir se passer de cette passerelle en connectant directement les sondes à un récepteur mais aucun n’existe actuellement. Les sondes étant en 868 Mhz le rfxcom n’est pas compatible la seule possibilité serait le rfplayer mais il ne les supportes pas pour le moment.

Merci pour votre retour ,

en effet l’idéale serait d’enlever la passerelle :wink: et récupérer directement le signal

La société GCE qui a récemment repris la commercialisation du RFPlayer est ouverte aux suggestions d’évolution. J’ai suggéré comme d’autres le support des sondes La Crosse :

1 « J'aime »

Je m’auto-répond, tout est ok maintenant.
Merci à tous.

Excusez moi je n’avais pas vu votre message. On peut visualiser la valeur dans le dashboard si la l’équipement est la commande sont « Visibles »’ et sinon dans la configuration de la commande dans l’onglet « Informations ».

pour ceux que ça intéressent,
je me suis ajouté au script de laurent des boucles pour extraire l’heure et données par sondes avec les id à renseigner.

$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=xxxxx",false,$stream); 
//$scenario->setLog("html " .strlen($html));
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

// ------------------------------------------------------------------------------------------------------------------------
$id = array(5756, 2112);
$label = array("heure",	"Pluie");
$scenario->setLog("Pluie");
foreach ($id as $cle => $val) {
    $n=$cle+3;
   	$value[$cle]=$xpath->query("/html/body/div[2]/div[4]/div/div/div[".$n."]/h4")[0]->childNodes[0]->nodeValue;
  	$value[$cle] = substr($value[$cle], 0, -2);
  	$scenario->setLog($id[$cle]." ".$label[$cle]."=".$value[$cle]);
    if ($value[$cle]!="---" && $value[$cle]!="OFL") cmd::byId($id[$cle])->event($value[$cle]);
};

// ------------------------------------------------------------------------------------------------------------------------
$id = array(5739, 2106, 2107);
$label = array("heure", "temp Terrasse", "hygro Terrasse");
$scenario->setLog("Terrasse");
foreach ($id as $cle => $val) {
    $n=$cle+3;
   	$value[$cle]=$xpath->query("/html/body/div[2]/div[5]/div/div/div[".$n."]/h4")[0]->childNodes[0]->nodeValue;
  	$value[$cle] = substr($value[$cle], 0, -1);
  	$scenario->setLog($id[$cle]." ".$label[$cle]."=".$value[$cle]);
    if ($value[$cle]!="---" && $value[$cle]!="OFL") cmd::byId($id[$cle])->event($value[$cle]);
};

Bonjour, @HermioneG; @laurent.da-col
Plus d’accès depuis hier 22:30 Local
Erreur 403 et vous ? Merci
image

Bonjour,

Ce matin ça ne fonctionnait pas, et sur l’appli mobile j’ai eu un message de mise à jour de l’appli.
Par contre à l’instant je viens de vérifier, ça refonctionne, j’ai bien la page « mes capteurs » et le script est OK. Et vous ?

Ok, Merci effectivement c’est reparti.
Je vais voir pour intercepter les messages qui vont sur Mobile Alertes, c’est quand même dommage de devoir passer par un site pour nos « propres » données !

1 « J'aime »

100 % d’accord avec toi, récupérer les données en local et bloquer l’envoie vers leurs serveurs.

pour info ma surveillance (15mn) ma remontée ça l’après midi du 23 et le matin du 24…
de nouveau planté temporairement ce matin du 26 à 6H30 !

D’accord pour récupérer les données en local mais ne bloquer l’envoi que sur option, car dans ce cas plus de suivi dans l’application MA du smartphone…

Je suis en train de regarder, pas si simple, il teste les liaisons sur les 3 serveurs .net .de et .com
Je vois qu’il font aussi une demande ?
On peut renvoyer sur leurs serveurs après interception , si effectivement on trouve la méthode d’envoie.
Je le fais déjà pour une station Météo (Bresser 5 in1), interception message vers « wunderground » que je récupère sur « Jeedom » puis renvoie sur « Wunderground » ensuite.

Si il y a des volontaires « costaux » pour tester de leurs côtés ! :thinking: