Pour info j’ai maintenant une version qui fonction via l’aide d’une personne du forum Cartelectronique et de l’aide de @Doubledom
Si cela vous intéresse voici le code il n’est pas optimisé:
$WesIP ="192.168.1.46";
$User="xx:yy";
$dataPage="D_SOND.CGX";
////////////////////////////////////
// Permet de charger un fichier XML
// $pUser = login:password
// $pWesIP = Ip du serveur 192.168.x.x
// $pDataPage = nom du fichier XML à télécharger
//
function getWesXml($pUser, $pWesIP, $pDataPage) {
try {
$xmldoc = null;
// Url a requeter
$wesUrl="http://".$pUser."@".$pWesIP."/".$pDataPage;
// Tableau contenant les options de téléchargement
$options=array(
CURLOPT_URL => $wesUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_CONNECTTIMEOUT => 2000,
CURLOPT_FRESH_CONNECT => true,
CURLOPT_USERPWD => $pUser
);
// Création d'un nouvelle ressource cURL
$CURL=curl_init();
// Configuration des options de téléchargement
curl_setopt_array($CURL, $options);
// Exécution de la requête
$content=curl_exec($CURL);
// Fermeture de la session cURL
curl_close($CURL);
if ($content == "") {
return null;
}
else {
$xmldoc = new DomDocument();
$xmldoc->loadXML($content);
}
return $xmldoc;
} catch (Exception $e) {
echo "Erreur Read File XML, Error = ".$e->getMessage();
return null;
}
}
/*
# Lecture d'une valeur d'un TAG enfant défini dans un Groupe de TAG Parent et mise à jour de l'objet virtuel dand JEEDOM par son n°ID
# Paramètres:
# - $pXml: contient l'ensemble du document XML à lire.
# - $pXmlNoeud: contient le nom du Tag Parent XML du groupe des enfants à lire.
# - $pXmlAttribut: contient le nom du TAG enfant à lire contenu dans le Groupe défini par le TAG XML Parent
# - $pId: Identifiant du virtuel Jeedom dans lequel la valeur de l'attribut XML doit être stockée.
# - $pUnite: Divise la valeur par ce chiffre si $pUnite est >à zéro.
*/
function lireValeurXml($pXml, $pXmlNoeud, $pXmlAttribut, $pId, $pUnite) {
try {
$valeur = $pXml->getElementsByTagName($pXmlNoeud)->item(0)->getElementsByTagName($pXmlAttribut)->item(0)->nodeValue;
//echo $valeur."\n";
if ($pUnite > 0)
$valeur = $valeur / $pUnite;
$cmd=cmd::byId($pId);
$cmd->setValue($valeur);
$cmd->event($valeur);
} catch (Exception $e) {
echo "Erreur Exception LireValeurXml = ".$e->getMessage();
return;
}
}
/*
# Lecture d'une valeur d'un flux XML type Tableau HTML et mise à jour de l'objet virtuel de JEEDOM
# Paramètres:
# - $pXml: contient l'ensemble du document XML à lire.
# - $pXmlNoeud: contient le nom du noeud parent XML à lire.
# - $pXmlAttribut: contient le nom de l'attribut enfant XML à lire.
# - $nItem: contient le n° enfant du TAG à lire (NOUVEAU)
# - $pId: Identifiant du virtuel Jeedom dans lequel la valeur de l'attribut XML doit être stockée.
# - $pUnite: Divise la valeur par ce chiffre si $pUnite est >à zéro.
*/
function lireValeurTableauXml($pXml, $pXmlNoeud, $pItem, $pId, $pUnite) {
try {
// récupération de la zone XML parent du tableau HTML
$Tabl = $pXml->getElementsByTagName($pXmlNoeud)->item(0)->nodeValue;
// suppression des caractères espaces et textes parasites.
$Tabl= str_replace(" align=right", "", $Tabl);
$Tabl= str_replace("<tr class='A0'>", "", $Tabl);
$Tabl= str_replace("</td>", "", $Tabl);
$Tabl= str_replace("</tr>", "", $Tabl);
$Tabl= str_replace("\n", "", $Tabl);
// récupération de la valeur du N° Item d'un enfant TAG <TD>
$Tagtd = explode("<td>", $Tabl);
$valeur = $Tagtd[$pItem];
//echo $valeur."\n";
if ($pUnite > 0)
$valeur = $valeur / $pUnite;
$cmd=cmd::byId($pId);
$cmd->setValue($valeur);
$cmd->event($valeur);
} catch (Exception $e) {
echo "Erreur Exception lireValeurTableauXml = ".$e->getMessage();
}
}
////////////////////////////
// Lance la lecture des données du fichier XML
$xml = getWesXml($User, $WesIP, $dataPage);
if($xml===null) {
echo "Erreur Lecture XML\n";
}
else {
//############################################################################
//# Infos
//############################################################################
//lireValeurXml($xml, 'info', 'time', 1457, 0);
//############################################################################
//# Temperatures
//############################################################################
//lireValeurXml($xml, 'temp', 'SONDE1', 1507, 0);
//lireValeurXml($xml, 'temp', 'SONDE2', 1508, 0);
//lireValeurXml($xml, 'temp', 'SONDE3', 1899, 0);
lireValeurXml($xml, 'temp', 'SONDE4', 1900, 0);
lireValeurXml($xml, 'temp', 'SONDE5', 1901, 0);
lireValeurXml($xml, 'temp', 'SONDE6', 1902, 0);
//lireValeurXml($xml, 'temp', 'SONDE7', 1903, 0);
//lireValeurXml($xml, 'temp', 'SONDE8', 1904, 0);
//############################################################################
//# TblanTIC1 Kwh HP / HC et Coût TIC1
//############################################################################
lireValeurTableauXml($xml, 'TblanTIC1', 2, 1899, 0); // valeur KW HP
lireValeurTableauXml($xml, 'TblanTIC1', 3, 1507, 0); // valeur Coût HP
lireValeurTableauXml($xml, 'TblanTIC1', 5, 1508, 0); // valeur KW HC
//lireValeurTableauXml($xml, 'TblanTIC1', 6, 1904, 0); // valeur Côut HC
//#############################################################################
} // Fin du else