Configuration d'une source de données JSON

Bonjour,

J’ai un IPX 800 v4 (FW 4.00.30) sur lequel je bute sur un problème de configuration de source de données.
Je souhaite récupérer les infos de ma VMC Helios, qui est capable de me les fournir via modbus tcp. Pour cela j’ai donc hébergé sur un Raspberry un script python sachant dialoguer et récupérer en modbus tcp les infos de la vmc et les formatte en JSON, puis j’appelle ce script Python dans un script PHP pour retourner le JSON. C’est donc ce dernier qui doit être la source de l’IPX.
Concrêtement, voici ce que ca donne:

source de données sur l’IPX:

Source du script PHP:
cat vmc.php
<?php_ _header('Access-Control-Allow-Origin: *');_ _$output = shell_exec ('/usr/bin/python /var/www/html/vmc.py');_ _echo $output;_ _?>

Via Chrome sur mon PC, je récupère bien le JSON.
…mais sur l’IPX, je suis toujours à « Never »!

Note: j’ai bien positionné le « Access-Control-Allow-Origin », pour permettre au serveur de l’IPX de requeter le serveur Http du Raspberry.

Voyez vous une explication?
Merci d’avance, :wink:

Voici le JSON lorsqu’il est demandé depuis Chrome:

Qu’affiche la console de votre navigateur lorsque vous êtes sur la Dashboard qui a cette source de donnée ?

Merci pour m’avoir lu et pour la question, qui pour le coup commence à m’éclairer…

J’ai un warning dans la console:

Quand on regarde la ligne en question, deux chose m’étonnent:

  1. cela semble utiliser un POST alors c’est un GET qui a été configuré au niveau de la source de données
  2. cela semble concaténer une extension « .json » à l’URL => forcément de l’autre coté ca va bloquer puisqu’il n’y a pas de fichier .json sur le serveur web, juste un fichier PHP.

Je me trompe dans mon analyse?

Je ne pense pas que ce soit la fonction qui s’occuper de pinger les sources de données car quand j’ajoute une source de donnée en GET, je vois bien des GET dans la console (onglet Network).

Bonsoir Mike,

J’ai pas beaucoup d’idées sur l’origine de l’erreur :unamused: mais je peux éliminer certaines pistes d’erreurs.

J’ai développé un petit serveur en node.js pour exposer des données présentées dans un widget et je peux confirmer que

  • le get d’une source de données n’est pas transformé en post
  • l’URL est bien respectée.

Par contre la réponse de mon Pi est immédiate (car il poole sa source de données et retourne immédiatement la dernière information disponible).

Le problème ne serait-il pas un simple problème de timeout ?

2 « J'aime »

Hello Teebex,

A noter que je n’ai pas le warning sous IE (mais le probleme persiste cependant).
Tres interessant ton idée de timeout, car effectivement, mon script python qui dialogue en modbus TCP avec la VMC met bien 4 à 5 secondes à me retourner les infos.
Donc à quelques ms près c’est le temps global que met mon script PHP à retourner les infos…

Je n’ai pas de Wireshark à dispo dans l’immédiat, mais je tenterais bien d’écouter les flux entre l’IPX et le Raspberry pour voir si l’IPX ne serait pas à l’initiative de la cloture de la session TCP. Qu’en penses tu?
Autre chose que je vais tenter (ce WE, en semaine je n’ai pas le temps): je vais alléger mon script en faisant juste un echo des infos indiquées dans ma copie d’écran ci-dessus (sans polling des infos aupres de la VMC pour supprimer la latence): si ca marche ce sera bien un probleme de timeout.

Je vous tiens informés du résultat de ces tests. Merci!
Mike

2 « J'aime »

Hello,

Comme convenu, j’ai fait ce WE le test suivant: j’ai commenté tout mon script PHP et il ne fait plus qu’un echo du JSON (sans aller donc récupérer les infos de la VMC qui met 5 secondes à les retourner) => Ca marche!
Cela veut donc dire que l’IPX a probablement un timeout inférieur à 5 secondes sur la récupération des données.
Du coup, je vais changer mon script: je vais le mettre en cron de mon Raspberry de façon à ce qu’il récupère toutes les 15 mins les infos de la VMC et va les stocker dans un fichier JSON. L’IPX viendra lui récupérer ce JSON qui sera donc toujours présent et surtout très rapide à retourner. Ainsi, je passerai le requetage de la VMC en asynchrone et non plus en synchrone.

Merci Teebex de m’avoir orienté, car ton feeling était le bon! :wink:
Mike

3 « J'aime »

Hello,

Je me réponds à moi-même pour éclairer d’autres qui pourraient avoir le meme soucis que moi.
En fait, ce n’était pas du tout un problème de timeout: l’IPX sait bien etre « patient » et attendre plus de 5 secondes pouru la récupération d’une source de données.
Mon problème venait d’une erreur dans la lecture des registres de la VMC, qui poussait un caractère ‹ 0x00 › dans une température. Ce caractère était automatiquement supprimé par mon browser quand je tentais la récupération du JSON depuis ce dernier donc je ne le voyais pas, mais l’IPX lui le voyait bien et bloquait sa lecture de la source de donnée…
Une fois corrigée, et bien que le script mette plus de 5 secondes avant de retourner le JSON, l’IPX récupère très bien le JSON.
Mike

4 « J'aime »

Bonsoir,

Très intéressante cette expérience.

L’IPX reste-t-il réactif aux sollicitations d’un autre client lors de la longue attente de la réponse de ce Get ?

Hello Teebex,
Je viens de faire le test: oui. Meme en attente du retour du GET, l’IPX sait depuis une autre connexion TCP d’un client exécuter ses ordres (pour ce qui me concerne, pendant qu’il attendait le JSON, j’ai demandé depuis un autre client à activer un relais qui déclenche ma porte de garage).
Mike

Merci,

décidément très doué cet IPX :slight_smile:

bonjour,

IPX 800V4_00_31 beta4

@Maxime_gce

Depuis que je suis passé en béta 4 , les sources de données correspondantes à L’ECO DEVICES et ECO DEVICES RT ne se réactualisent plus.
Par contre pour les sources de données météo et IPX800 cela fonctionne.

Cordialement

Bonjour,

Je viens de tester une source de données en 4.00.31 B7 sur une EDRT 2 et je ne’ai pas de soucis de MAJ.

N’hésitez pas à ouvrir un ticket sur notre helpdesk afin qu’un technicien vous accompagne dans la résolution de votre problème.

Bonjour,

effectivement cela fonctionne en béta 7.

Merci et cordialement