Ceci est un exemple et est perfectible, il permet de lire l’état des entrées digitale et des relais.
J’ai choisi dans mon exemple de ne lire que les éléments actifs, mais on peux lister également les éléments inactifs.
On peux aussi lire l’état des entrées analogique afin de lire une température.
1 - Un fichier status.php sur mon serveur charge et interprète le fichier status.xml de ma carte.
2 - SARA charge et lis le retour du fichier PHP.
Code du fichier status.php.
<?php
$dom = new DomDocument;
// Lecture du fichier XML
$dom->load("http://adresse_de_la_carte/status.xml");
$capteur = $dom->getElementsByTagName('response')->item(0);
/////////////////////////////////////////
// Lecture de l'état des entrées Digitale
/////////////////////////////////////////
$i=0;
while ($i <= 3)
{
$bouton = $capteur->getElementsByTagName("btn" . $i);
/////////////////////////////////////
// Affichage de chaque entrée active
/////////////////////////////////////
foreach($bouton as $entree)
$i++;
if ($entree->firstChild->nodeValue == "dn")
echo "L'entree digitale " . $i . " est active.". "\n";
}
/////////////////////////////////////////
// Lecture de l'état des relais
/////////////////////////////////////////
$led=0;
while ($led <= 7)
{
$bouton1 = $capteur->getElementsByTagName("led" . $led);
/////////////////////////////////////
// Affichage de chaque relai actif
/////////////////////////////////////
foreach($bouton1 as $relai)
$led++;
if ($relai->firstChild->nodeValue == "1")
echo "Le relai " . $led . " est actif." . "\n";
}
?>
Code de la commande SARA
<?
if($request=="status"){
$html="";
if ($html=implode("",file("http://adresse_du_serveur/mon_fichier_php)));
$response->say($html);
$response->ExitContext();
ok();
}
Le lien de la vidéo exemple se trouve ici http://youtu.be/_KrnH8PmnIU
Merci à BoB41 de m’avoir fait connaitre SARA et de m’avoir mis la pression pour lui bricoler quelque chose d’utile !