Multiple status.xml sur une seule page ?

Alors voila supposons que j’ai 4 carte IPX800

que j’ai branché des sondes LM35 sur les entrées analogiques soit 8 sondes

et que je veuille afficher toutes les valeurs sur une seule page pour connaitre la temperature des 8 sondes d’un coup d’oeil

Question :

  1. est ce possible deja ?

  2. si oui , etant trop mauvais en java , quel serait le script pour recuperer les status multiple SANS conflict

parceque forcement si on recupere « an1 » « an2 » « an1 » « an2 » « an1 » « an2 » « an1 » « an2 » ca va coincer quelquepart
il faudrait renommer a la voler an1 et an2 apres les avoir lu dans le status pour les cartes 2 ,3 et 4

Ceci n’est qu’un exemple , je compte aussi m’inspirer de cette methode pour recuperer des status d’entrées ou des status de relais sur une seule page
pour avoir par exemple une mega page web avec tous les boutons et tous les status des 4 cartes

apres ben si c’est pas possible , ben j’vai aller me pendre

Bonjour,
c’est tout a fait possible.
Chaque carte a une ip et un formulaire XML.
Il suffit de récupérer les valeurs de chaque formulaire et les afficher dans la même page.
C’est la même fonction Java que celle de la page index qui récupère les valeurs analogiques an1 et an2.

bon ben si le grand chef a dit que c’etais possible :slight_smile:

par contre je vois pas comment scripter ca sur une seule page ?

et même déjà simplement pour récupérer le status si le site est héberger ailleurs que sur la carte

un exemple d’un connaisseur ?

Bonjour,
Si la question est « multiple status.xml sur une seule page » le titre du post la réponse est presque là:

ici un site distant (en easyPHP sur PC) relève le status.xml de UNE carte via PHP: " interpréter le fichier XML du site embarqué."

De là étendre a N cartes c’est « simple » voici pour deux cartes :slight_smile: :

[code]<?php
// ---------------------
// Parsing the XML file
// ---------------------
echo « 
--------------
XML parsing
--------------
 »;
$boards = array( ‹ Carte01 › => ‹ http://192.168.0.6 ›,
‹ Carte02 › => ‹ http://192.168.0.6 › );

foreach($boards as $key=>$path) {
$xml = simplexml_load_file($path.’/status.xml’);
$result = array();
foreach($xml->children() as $child){
$result[$child->getName()] = trim($child);
} // for each XML child
echo $key.’ RESULT of parsing XML

';
print_r($result);
echo ‹ 
 ›;
}
?>[/code]

Mais c’est en PHP et donc pas supporté sur le serveur de la carte.

Si tu mesures les Températures je suppose que les enregistrer est TRES utile et DONC il devient nécessaire d’avoir tout sur un site distant qui peut tout mettre en base de donnée ce qui élimine la solution de centraliser sur une carte IPX.

Donc comme ça marche en site distant et PHP codé avec un minimum de savoir je dirais commence par là.

Aussi pour info eeePC fait un BAREBONE qui marche avec 40W (dix fois moins qu’un PCnormal!!!).
Mettez votre site dessus!! ou alors louez un site disant qui logge tout, c’est 30 EUR/ an!

Bye
Rno

On a fait les tests a plusieurs et pointer l’ajax vers une carte extérieure en ajoutant l’ip d’une autre carte:
cette ligne fonctionne dans ce cas ci:

onclick="newAJAXCommand('http://192.168.1.55:82/rlyfs.cgi?rlyf=0')

Mais sur celle-ci:

setTimeout("newAJAXCommand('status.xml', updateStatus, true)",500);

le newAJAXCommand semble ne pas interpréter le ‹ url › ou son retour correctement! pour un XML.

Donc newAJAXCommand(‹ http://192.168.1.55:82/status.xml ›, updateStatus, true)",500) ne marche pas :frowning:

La différence des deux appels newAJAXCommand est dans le newAjax.container qui est à updateStatus comme foncntion.

Donc c’est lui qu’il faut conprendre et pq il ne se lance pas:

if(typeof(curAjax.container) == 'function'){ curAjax.container(curAjax.ajaxReq.responseXML.documentElement);
J’avoue que je cale, un peu…
Faut-il demander à l’auteur du code « mchp.js » chez microchip:
[color=#FF0000]Comment se fait-il que pointer un XML extérieur à la carte ne fait pas fonctionner la fonction updateStatus ? Ou vous avez une idée du comment?

[/color]Merci d’avance!
Bye
Rno

Bonjour RNO,

Microchip n’y peux rien…
Il s’agit d’une limitation de l’Ajax implanté pour des raisons de sécurité…

La fonction XMLHttpRequest appelé par newajaxcommand ne peux s’éxécuter que vers son serveur et non un serveur distant.

Il existe des méthodes pour contourner cette sécurité avec l’Ajax cross-domain mais je n’ai pas éssayé. En théorie cela doit fonctionner.

Cordialement,

Merci,
j’avais vu cette limitation connue comme la « Same Origin Policy » mais comme newAJAXCommand semblait fonctionner en commande rlyfs.cgi?rlyf=0 j’ai cru que les 18F n’avaient pas cette limite… et non…

Maintenant comment éviter d’utiliser XMLHttpRequest est la nouvelle question!!

Et bien en effet c’est faisable avec des balises en effet pas mal d’exemples traitent ce cas.
Exemple lisible ici:

Mais jusque là je n’ai trouvé que des test unitaires avec un retour en JSON et non XML.
En fait il y en a en XML des exemples, mais l’XML est envoyé par un bout de ‹ php › donc ne marche pas.

Je continue à chercher, le but étant d’avoir tous les états de 4 cartes sur une carte IPX800-32M… cross-domain ajax full javascript!
Si vous avez le temps regardez cet exemple.
Il interprète le retour JSON, il faudrait interpréter le retour XML c’est surement faisable . . .
A+
Bye
Rno