Externalisation du fichier xml

Bonjour,

Je me demande s’il est posible d’externaliser le fichier xml de la carte ipx800v2. Je voudrais toutes les 30 min le transférer via ftp (par exemple) sur un autre server pour en extraire différentes valeurs.

Merci de vos avis,

marc,

Déjà fait:
un serveur avec du php lit le XML distant du IPX et écrit des données s’y trouvant pour archives.
ICI: http://forum.gce-electronics.com/t/kit-temperature/132/10
Donc le XML est transféré en html (pas en ftp mais bon!) sur une autre machine.
Ensuite est développé comment le faire à intervalle régulier.
Bye
Rno

merci RNO, je l’ai déjà utiliser en local et cela focntionne très bien.
Par contre, j’ai installé la db de récupération chez mon provider, et le script de récupération ne focntionne pas : contact pris, je dois passer par des commandes CURL pour extraire les valeurs dont j’ai besoin ou alors de pouvoir copier le fichier complet.

Je vais tester tout cela en début de semaine.

Tu as déjà travailler avec CURL ?

merci,

marc,

bon dimanche,

Tu touveras dans ce post Serveur php multi carte - #10 par acd un site en php, je j’ai développé pour utiliser plusieurs cartes IPX à partir d’un site hébergé chez free.fr.
La lecture des status xml se font par un simplexml, l’execution des commandes par curl.

Hello,
Oui CURL pour simuler des interactions utilisateurs c’est TOP mais ça fait peur à lire.
Donc essaye avant simpleXML devrait marcher comme vu sur le post de FJPLESSIS!
Bye
Rno
PS: CURL sera plus utile pour renseigner les Timers en PHP car il faut saisir tout un formulaire.

  $xml = simplexml_load_file('http://'.$value['ip'].'/status.xml');
$result = array();
//echo ' alors ?? '$xml;
foreach($xml->children() as $child){$result[$child->getName()] = trim($child);}
// hard coded labels here
$statusgrid['Lampe']       = $result['led0'];
$statusgrid['Exterrieur']   = $result['led1'];
$statusgrid['Chauffage']  = $result['led2'];
$statusgrid['Cave']         = $result['led3'];
$statusgrid['Reserve']     = $result['led4'];
$statusgrid['swi6']          = $result['led5'];
$statusgrid['swi7']          = $result['led6'];
$statusgrid['swi8']          = $result['led7'];

// =====
// DEBUG 
// =====
 echo "=======================================<br> echo statusgrid <br>";
 echo "<pre>";
 print_r ($statusgrid);
 echo "</pre>";

Testé ok ce qui suit : regération d’un fichier xml en local sur mon pc à partir du fichier status.xml sur la carte.

<?php $ch = curl_init("http://192.168.x.y/status.xml"); $fp = fopen("status.xml", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); ?>

merci pour les infos.

erreur de post

Bonjour a tous,

GCE →

Peux t on envisager un dev. pour sauvegarder le fichier XML dans un autre fichier tous les x secondes sur une allocation mémoire de la carte ?

Nous aurions un fichier « historique » sur les événements/état de la carte.

Ca serait vraiment TOP !

Merci.

Bonjour,

Logger tous le xml n’est peut etre pas utile…
On pourrait faire une page log.html avec un log toutes les x mn affichant l’heure et l’état des entrées / sorties…et peut etre un bouton pour télécharger une page en .csv .

Qu’en pensez vous?

Cordialement,

Patrick

Bonjour,

Oui, il n’est effectivement pas nécessaire de surcharger le fichier Log avec le fichier xml entier.
Cela serait ce type de fichier (séparé par des tab) :

day time R1 R2 R3 R4 R5 R6 R7 R8 Di1 Di2 Di3 Di4 Ai1 Ai2
1 09:23:31 0 1 1 1 1 1 1 1 1 0 Up Dn Up Dn 92 45

Les lignes les plus anciennes seront supprimées lorsque le fichier aura atteint sa taille maximale.

En ce qui concerne la taille maxi du fichier elle devra être définie préalablement.
Idéalement, cette taille pourra etre paramétrable, une carte de 32mb, pourrait avoir un fichier log d’une taille plus importante.

Le log devrait s’enclencher dès que l’on met la carte en route, de façon autonome et transparente.

Merci beaucoup pour le Dev. de cette evolution !

Bon courage.

Cdt.

Bonjour,

Est ce que la description ci-dessus vous semble correcte / réalisable ?
J’attends avec impatience cette fonctionnalité !

Merci beaucoup.

Cdt.

Bonjour,

Je pense que c’est réalisable mais on doit faire une modification importante du
firmware pour pouvoir échanger des plus gros volumes de données entre le
serveur et le site embarqué et voir comment on peux gérer le log (stockage,
affichage, download).

A suivre…

GCE

Pour php j’ai coder ça si ça intéresse

<span class="syntaxdefault"><?php<br /></span><span class="syntaxcomment">/*<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPX800.func.php<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free&nbsp;Copyright&nbsp;2011&nbsp;Guillaume&nbsp;JONVILLE&nbsp;<Guillaume.jonville<AT>gmail<DOT>com><br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">function&nbsp;</span><span class="syntaxdefault">getEtatLed</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$ipIPX800</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(@</span><span class="syntaxdefault">preg_match_all</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#<led(\d{1})>(.*)</led(\d{1})>#"</span><span class="syntaxkeyword">,@</span><span class="syntaxdefault">file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"http://$ipIPX800/status.xml"</span><span class="syntaxkeyword">),</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">))&nbsp;?&nbsp;</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]&nbsp;:&nbsp;</span><span class="syntaxdefault">False</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span class="syntaxdefault">getEtatBtn</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$ipIPX800</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(@</span><span class="syntaxdefault">preg_match_all</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#<btn(\d{1})>(.*)</btn(\d{1})>#"</span><span class="syntaxkeyword">,@</span><span class="syntaxdefault">file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"http://$ipIPX800/status.xml"</span><span class="syntaxkeyword">),</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">))&nbsp;?&nbsp;</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]&nbsp;:&nbsp;</span><span class="syntaxdefault">False</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span class="syntaxdefault">getEtatAn</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$ipIPX800</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(@</span><span class="syntaxdefault">preg_match_all</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#<an(\d{1})>(.*)</an(\d{1})>#"</span><span class="syntaxkeyword">,@</span><span class="syntaxdefault">file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"http://$ipIPX800/status.xml"</span><span class="syntaxkeyword">),</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">))&nbsp;?&nbsp;</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]&nbsp;:&nbsp;</span><span class="syntaxdefault">False</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span class="syntaxdefault">?></span>