hallard / remora_soft

Logiciel pour les cartes Fils Pilotes Wifi de type Remora
https://community.hallard.me/category/5
17 stars 24 forks source link

Problème de communication avec Jeedom #29

Closed DanoneKiD closed 7 years ago

DanoneKiD commented 7 years ago

Bonjour,

Depuis que j'ai mis ma remora 1.2C en version 1.3.5 je n'ai plus aucune communication avec le plugin Jeedom Remora. (pas de problème avec le plugin TéléInfo vu que c'est en Push). Si on fait en php un : $result = file('http://192.168.1.xxx/?setfp=1H'); La requête n'abouti pas.

Si par contre un fait la même requete avec curl :

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.xxx/?setfp=1H');
$result = curl_exec($ch);
curl_close($ch);

La requête abouti.

Azema commented 7 years ago

Salut @DanoneKiD

Je viens de vérifier les logs sur la Remora lors d'un appel à l'API avec la fonction file de PHP et j'ai bien une trace de la requête, ainsi que l'information comme quoi la réponse a été envoyée. Je pense que le problème se situe au niveau du traitement de la réponse dans PHP. Donc le problème ne vient pas du serveur de la Remora, sachant qu'avec une requête Curl, cela fonctionne très bien.

Azema commented 7 years ago

Petite correction, la fonction file retourne bien la réponse, mais au bout de 2 minutes. J'ai l'impression que cela correspond à un timeout. Ce qui voudrait dire que la fermeture de la connexion, envoyée par le serveur de la Remora, dans les en-têtes de la réponse, n'est pas reconnue par PHP. Les 2 requêtes que j'ai testé (/fp et /hb.htm) se comportent de la même manière, avec le même temps d'exécution.

DanoneKiD commented 7 years ago

Bonjour @Azema

Merci d'avoir regardé, effectivement avec curl ça marche j'ai d'ailleurs fait un PR @lunarok pour le plugin jeedom et c'est OK. Ce qui est bizarre c'est que ça fonctionnait en 1.3.2.

Azema commented 7 years ago

Depuis la version v1.3.4, la Remora utilise les connexions TCP asynchrones. C'est sûrement à cause de ça, par contre, te dire ce qui bloque chez PHP, je n'en sais rien.