Souci retour API

Bonjour,
Pour ma part je gère mon automate depuis une interface web personnalisée qui communique avec l’automate par l’API en JSON.
Pour récupérer les informations de l’automate je réalise l’appel « Get=R|VO|VA|PW » qui me donne tout ce dont j’ai besoin. Cependant par moment j’ai toute une série de « VO » qui disparait et qui réapparait à l’appel suivant.
Y-a-t’il une raison précise à cela ou est-ce un bug?
En tout cas cela m’embête fortement pour la fiabilité de mon interface web.

Voici le JSON de retour en temps normal:

test = « {« product »:« IPX800_V4 »,« status »:« Success »,« R1 »:1,« R2 »:0,« R3 »:0,« R4 »:0,« R5 »:0,« R6 »:0,« R7 »:0,« R8 »:0,« R9 »:0,« R10 »:0,« R11 »:0,« R12 »:0,« R13 »:0,« R14 »:0,« R15 »:0,« R16 »:0,« R17 »:0,« R18 »:0,« R19 »:0,« R20 »:0,« R21 »:0,« R22 »:0,« R23 »:0,« R24 »:0,« R25 »:0,« R26 »:0,« R27 »:0,« R28 »:0,« R29 »:0,« R30 »:0,« R31 »:0,« R32 »:0,« R33 »:0,« R34 »:0,« R35 »:0,« R36 »:0,« R37 »:0,« R38 »:0,« R39 »:0,« R40 »:0,« R41 »:0,« R42 »:0,« R43 »:0,« R44 »:0,« R45 »:0,« R46 »:0,« R47 »:0,« R48 »:0,« R49 »:0,« R50 »:0,« R51 »:0,« R52 »:0,« R53 »:0,« R54 »:0,« R55 »:0,« R56 »:0,« VO1 »:0,« VO2 »:1,« VO3 »:0,« VO4 »:1,« VO5 »:0,« VO6 »:0,« VO7 »:0,« VO8 »:0,« VO9 »:0,« VO10 »:0,« VO11 »:0,« VO12 »:0,« VO13 »:0,« VO14 »:0,« VO15 »:0,« VO16 »:0,« VO17 »:0,« VO18 »:0,« VO19 »:0,« VO20 »:0,« VO21 »:0,« VO22 »:0,« VO23 »:0,« VO24 »:0,« VO25 »:0,« VO26 »:0,« VO27 »:0,« VO28 »:0,« VO29 »:0,« VO30 »:0,« VO31 »:0,« VO32 »:0,« VO33 »:1,« VO34 »:0,« VO35 »:0,« VO36 »:0,« VO37 »:0,« VO38 »:0,« VO39 »:0,« VO40 »:0,« VO41 »:0,« VO42 »:0,« VO43 »:0,« VO44 »:0,« VO45 »:0,« VO46 »:0,« VO47 »:0,« VO48 »:0,« VO49 »:0,« VO50 »:0,« VO51 »:0,« VO52 »:0,« VO53 »:0,« VO54 »:0,« VO55 »:0,« VO56 »:0,« VO57 »:0,« VO58 »:0,« VO59 »:0,« VO60 »:0,« VO61 »:0,« VO62 »:0,« VO63 »:0,« VO64 »:0,« VO65 »:0,« VO66 »:0,« VO67 »:0,« VO68 »:0,« VO69 »:0,« VO70 »:0,« VO71 »:0,« VO72 »:0,« VO73 »:0,« VO74 »:0,« VO75 »:0,« VO76 »:0,« VO77 »:0,« VO78 »:0,« VO79 »:0,« VO80 »:0,« VO81 »:0,« VO82 »:0,« VO83 »:0,« VO84 »:0,« VO85 »:0,« VO86 »:0,« VO87 »:0,« VO88 »:0,« VO89 »:0,« VO90 »:0,« VO91 »:0,« VO92 »:0,« VO93 »:0,« VO94 »:0,« VO95 »:0,« VO96 »:0,« VO97 »:0,« VO98 »:0,« VO99 »:0,« VO100 »:0,« VO101 »:0,« VO102 »:0,« VO103 »:0,« VO104 »:0,« VO105 »:0,« VO106 »:0,« VO107 »:0,« VO108 »:0,« VO109 »:0,« VO110 »:0,« VO111 »:0,« VO112 »:0,« VO113 »:0,« VO114 »:0,« VO115 »:0,« VO116 »:0,« VO117 »:0,« VO118 »:0,« VO119 »:0,« VO120 »:0,« VO121 »:0,« VO122 »:0,« VO123 »:0,« VO124 »:0,« VO125 »:0,« VO126 »:0,« VO127 »:0,« VO128 »:0,« VA1 »:1,« VA2 »:254,« VA3 »:0,« VA4 »:0,« VA5 »:0,« VA6 »:0,« VA7 »:0,« VA8 »:0,« VA9 »:0,« VA10 »:0,« VA11 »:0,« VA12 »:0,« VA13 »:0,« VA14 »:0,« VA15 »:0,« VA16 »:0,« VA17 »:0,« VA18 »:0,« VA19 »:0,« VA20 »:0,« VA21 »:0,« VA22 »:0,« VA23 »:0,« VA24 »:0,« VA25 »:0,« VA26 »:0,« VA27 »:0,« VA28 »:0,« VA29 »:0,« VA30 »:0,« VA31 »:0,« VA32 »:0,« PW1 »:0,« PW2 »:1,« PW3 »:0,« PW4 »:0,« PW5 »:0,« PW6 »:0,« PW7 »:0,« PW8 »:0,« PW9 »:0,« PW10 »:0,« PW11 »:0,« PW12 »:0,« PW13 »:0,« PW14 »:0,« PW15 »:0,« PW16 »:0,« PW17 »:0,« PW18 »:0,« PW19 »:0,« PW20 »:0,« PW21 »:0,« PW22 »:0,« PW23 »:0,« PW24 »:0,« PW25 »:0,« PW26 »:0,« PW27 »:0,« PW28 »:0,« PW29 »:0,« PW30 »:0,« PW31 »:0,« PW32 »:0} »

Voici le JSON de retour que j’ai par moment avec l’anomalie présente:

test = « {« product »:« IPX800_V4 »,« status »:« Success »,« R1 »:1,« R2 »:0,« R3 »:0,« R4 »:0,« R5 »:0,« R6 »:0,« R7 »:0,« R8 »:0,« R9 »:0,« R10 »:0,« R11 »:0,« R12 »:0,« R13 »:0,« R14 »:0,« R15 »:0,« R16 »:0,« R17 »:0,« R18 »:0,« R19 »:0,« R20 »:0,« R21 »:0,« R22 »:0,« R23 »:0,« R24 »:0,« R25 »:0,« R26 »:0,« R27 »:0,« R28 »:0,« R29 »:0,« R30 »:0,« R31 »:0,« R32 »:0,« R33 »:0,« R34 »:0,« R35 »:0,« R36 »:0,« R37 »:0,« R38 »:0,« R39 »:0,« R40 »:0,« R41 »:0,« R42 »:0,« R43 »:0,« R44 »:0,« VO45 »:0,« VO46 »:0,« VO47 »:0,« VO48 »:0,« VO49 »:0,« VO50 »:0,« VO51 »:0,« VO52 »:0,« VO53 »:0,« VO54 »:0,« VO55 »:0,« VO56 »:0,« VO57 »:0,« VO58 »:0,« VO59 »:0,« VO60 »:0,« VO61 »:0,« VO62 »:0,« VO63 »:0,« VO64 »:0,« VO65 »:0,« VO66 »:0,« VO67 »:0,« VO68 »:0,« VO69 »:0,« VO70 »:0,« VO71 »:0,« VO72 »:0,« VO73 »:0,« VO74 »:0,« VO75 »:0,« VO76 »:0,« VO77 »:0,« VO78 »:0,« VO79 »:0,« VO80 »:0,« VO81 »:0,« VO82 »:0,« VO83 »:0,« VO84 »:0,« VO85 »:0,« VO86 »:0,« VO87 »:0,« VO88 »:0,« VO89 »:0,« VO90 »:0,« VO91 »:0,« VO92 »:0,« VO93 »:0,« VO94 »:0,« VO95 »:0,« VO96 »:0,« VO97 »:0,« VO98 »:0,« VO99 »:0,« VO100 »:0,« VO101 »:0,« VO102 »:0,« VO103 »:0,« VO104 »:0,« VO105 »:0,« VO106 »:0,« VO107 »:0,« VO108 »:0,« VO109 »:0,« VO110 »:0,« VO111 »:0,« VO112 »:0,« VO113 »:0,« VO114 »:0,« VO115 »:0,« VO116 »:0,« VO117 »:0,« VO118 »:0,« VO119 »:0,« VO120 »:0,« VO121 »:0,« VO122 »:0,« VO123 »:0,« VO124 »:0,« VO125 »:0,« VO126 »:0,« VO127 »:0,« VO128 »:0,« VA1 »:1,« VA2 »:254,« VA3 »:0,« VA4 »:0,« VA5 »:0,« VA6 »:0,« VA7 »:0,« VA8 »:0,« VA9 »:0,« VA10 »:0,« VA11 »:0,« VA12 »:0,« VA13 »:0,« VA14 »:0,« VA15 »:0,« VA16 »:0,« VA17 »:0,« VA18 »:0,« VA19 »:0,« VA20 »:0,« VA21 »:0,« VA22 »:0,« VA23 »:0,« VA24 »:0,« VA25 »:0,« VA26 »:0,« VA27 »:0,« VA28 »:0,« VA29 »:0,« VA30 »:0,« VA31 »:0,« VA32 »:0,« PW1 »:0,« PW2 »:1,« PW3 »:0,« PW4 »:0,« PW5 »:0,« PW6 »:0,« PW7 »:0,« PW8 »:0,« PW9 »:0,« PW10 »:0,« PW11 »:0,« PW12 »:0,« PW13 »:0,« PW14 »:0,« PW15 »:0,« PW16 »:0,« PW17 »:0,« PW18 »:0,« PW19 »:0,« PW20 »:0,« PW21 »:0,« PW22 »:0,« PW23 »:0,« PW24 »:0,« PW25 »:0,« PW26 »:0,« PW27 »:0,« PW28 »:0,« PW29 »:0,« PW30 »:0,« PW31 »:0,« PW32 »:0} »

Ce qu’il manque c’est de R44 à VO45 dans ce cas-ci.
Du coup j’ai réalisé des requêtes en boucle en filmant mon écran pour m’assurer que ce n’était pas dans mon code que je m’était planté, mais non c’est bien à la sortie de l’automate que ca plante.
Voici une capture d’écran d’une partie des données brut:

Une idée?
Merci d’avance.

En attendant je vais compter le nombre de clés reçues pour vérifier que j’ai bien tout le contenu.

Bonjour,
Les commandes de type Get=ALL ou des requêtes multiples comme celles que vous lancez (Get=R|VO|VA|PW) sont gourmandes en ressources.
Vu le nombre d’informations que l’ipx800 doit « assembler » et transmettre, il faut laisser un peu de temps de traitement à l’IPX800.
Evitez de lancer la requête à une fréquence trop élevée.
cdt

D’accord, merci.
Cependant, il n’y a pas une commande pour ne récupérer, par exemple la VO2 et R3 simultanément?
Ca serait déjà moins gourmand. Mais pour les VO notamment je n’ai pas trouvé.

Et pourquoi le « status » reste à « Success » s’il y a des erreurs.
Le statut pourrait être à « incomplet » ou « error » dans ce genre de situation.

Dans quel but et à partir de quel matériel lancez vous ces requêtes ?

Je lance mes requêtes depuis un serveur web en PHP.
Dans le but d’avoir une interface qui me convient mieux que celle de l’automate pour contrôler les fonctionnalités.
Ici par exemple je n’ai que besoin de connaitre l’état de 10 V0 et 3 VA, mais n’ayant pas trouvé de requête pour ne charger que le contenu dont j’ai besoin, je charge tout.
Je préfère réaliser 1 requête et charger un paquet que 10 petites requêtes.

si vous lancez les requêtes en php, alors la solution la moins coûteuse en ressource pour l’IPX800, c’est l’interrogation de son fichier status.xml
Vous pouvez donc écrire un php qui récupère le XML puis fait le parsing des données.
vous devriez trouver des exemples de code sur le forum.

d’accord, merci pour l’info, je vais voir ce que je peux trouver.
bien que plus à l’aise avec le json, ca m’arrangait. :wink:

il y a quelques codes sur le forum, dont celui-ci pour commencer.

1 « J'aime »

C’est bon, j’ai trouvé comment faire.

Je vais me faire une page php qui importe le XML, puis je vais le convertir en JSON pour qu’il correspondre au résultat d’un « Get=all » (mais en plus complet).
Et après je vais faire appel à ma page plutôt qu’à l’automate.

Bon j’ai du pain sur la planche pour convertir tous ces mots-clés.
Une fois mon php de conversion fini, je le publierai ici, ainsi si d’autres amateurs en ont besoin ils n’auront plus besoin de s’amuser.

Merci de m’avoir mis sur la piste. L’idée viens de toi après tout :wink:

1 « J'aime »

+1
intéressé par ton script lorsqu’il sera terminé
Merci

Voici ce que j’ai pu rédiger dans un premier temps.
J’ai récupéré le principale comme dans le Get=all.
Cependant il y a certaines choses que je n’ai pas su où trouver dans le XML, la doc ne le renseignait pas ou alors je ne l’ai pas compris. Si vous me dites à quoi ca correspond dans le XML, je le rajoute et complète mon document.
Puis j’ai rajouté quelques éléments qui de base ne sont pas présent dans le Get=all.

Tout est décrit au début du document.
Bon amusement… :wink:

convert_v1.php.zip (4,7 Ko)

1 « J'aime »

Bonsoir
Avec le téléchargement du firmware, vous trouverez un descriptif des fichiers XML.
Bonne soirée.

Le document " Descriptif des fichiers XML IPX800_V4"?
Si oui, je l’ai trouvé, mais il n’y a pas tout qui y est décris, du moins je ne crois pas…
En tout cas, pour ma part ce que j’ai mis dans le fichier me suffit largement pour le moment. Mais au cas où il faudrait ajouter des éléments, tant qu’on me donne un mot clé sur lequel me baser, je suis prêt à faire le travail pour la communauté. :slight_smile:

1 « J'aime »

venant d’ajouter des capteur THL a mon système, je cherche maintenant à en récupérer les valeurs.
Mais celles-ci n’apparaissent pas dans le fichier XML ou si?
Le seul moyen d’y accéder est depuis un Get=all ou y a t’il un autre moyen d’accéder?