Netatmo Thermostat - Bug avéré avec le script

Discussion et échanges de scripts pour la box eedomus

Netatmo Thermostat - Bug avéré avec le script

Messagepar julieng » 13 Sep 2019 19:33

Bonjour - J'ai à la maison 4 thermostats Netatmo qui marchent parfaitement avec l'app Netatmo.
Je souhaite récupérer les valeur de mes thermostats dans ma box domotique eedomus

La box eedomus est configurée pour récupérer les valeurs des température toutes les 30 minutes et fait donc des appels API.

Le problème est que lorsque les 4 requetes http sont lancées dans la meme plage de quelques minutes, Netamo renvoie la meme valeur.
Si j'attend 5+ minutes, alors la première requete executée me renvoie la bonne valeur mais pas la 2eme sur un autre thermostat.

Cela ressemble fortement à un système de cache coté API Netatmo et j'ai donc logué un ticket chez Netatmo dont voici la réponse:

Cela n'est pas un fonctionnement interne de nos serveurs, pour les Thermostats, même si en fonctionnement normal la demande est de toute les 10 minutes, quand il y a un call la valeur de la température est en quasi live.

Cela ressemble plutôt au code Eedomus qui semble exécuter un call sur le même appareil de façon répété. Vous pouvez confirmer qu'il ne s'agit pas d'un fonctionnement de nos serveurs en utilisant postman par exemple et exécuter les 4 calls en même temps. Avec ce call vous avez même toute les info en même temps : https://dev.netatmo.com/resources/techn ... /homesdata

Voici nos calls et endpoint dispo pour l'API : https://dev.netatmo.com/resources/techn ... nce/energy

Il s'agit donc très certainement du code Eedomus et je vous invite à les contacter avec d’éclaircir le sujet.



Comment débuguer le script?
Comment voir les requetes que Eedomus envoie aux API Netatmo?
Merci bcp
Dernière édition par julieng le 13 Sep 2019 22:05, édité 1 fois.
julieng
 
Messages : 130
Inscription : 25 Fév 2019

Re: Netatmo Thermostat - Bug avec les scripts

Messagepar julieng » 13 Sep 2019 21:30

J'ai épluché les logs:
Les 2 calls successifs vers 2 modules différents renvoient systématiquement la meme valeur alors qu'ils sont dans des étages différents donc les valeurs devraient être différents (j'ai maquillé les ID).
Ou peut on voir les appels API réels vers Netatmo?

[22:15:45.146] HTTP [GET] Query -> [http://localhost/script/?exec=netatmo_thermostat_oauth.php&home_id=5b9ff449ea00a00&room_id=29569&module_id=04:00:00:38&eedomus_controller_module_id=161] XPATH -> [/netatmo/temperature]
[22:15:45.213] Result -> [HTTP:200] in 1s
[22:15:45.215]  -> Read value [24.7]
[22:16:20.201] HTTP [GET] Query -> [http://localhost/script/?exec=netatmo_thermostat_oauth.php&home_id=5b9ff449ea00a00&room_id=414523&module_id=04:00:00:11&eedomus_controller_module_id=16] XPATH -> [/netatmo/temperature]
[22:16:20.263] Result -> [HTTP:200] in 1s
[22:16:20.264]  -> Read value [24.7]
julieng
 
Messages : 130
Inscription : 25 Fév 2019

Re: Netatmo Thermostat - Bug avec les scripts

Messagepar julieng » 13 Sep 2019 21:37

Je vois dans le script netatmo_thermostat_oauth.php une variable $CACHE_DURATION = 2; // minutes...

Ne serait elle pas la source de mon problème ?

Je pense passer à $CACHE_DURATION = 0; sachant que le script se lance toutes les 30 min.
Qu'en pensez vous?
julieng
 
Messages : 130
Inscription : 25 Fév 2019

Re: Netatmo Thermostat - Bug avec les scripts

Messagepar julieng » 13 Sep 2019 22:00

Bug confirmé

Je le joue une première fois sur la box en envoyant cette requete
http://192.168.0.29/script/?exec=netatmo_thermostat_oauth.php&home_id=5b9ff449e08b45dd&room_id=6940709&module_id=04:000:9c:0e&eedomus_controller_module_id=16063
Ca me renvoie la même chose alors que la requete ne devrait jamais marcher...
<netatmo>
<cached>1</cached>
<setpoint_mode>schedule</setpoint_mode>
<setpoint_temperature>22</setpoint_temperature>
<temperature>24.6</temperature>
<boiler>0</boiler>
</netatmo>



Je le rejoue dans la foulée en mettant une valeur bidon dans les variables
http://192.168.0.29/script/?exec=netatmo_thermostat_oauth.php&home_id=5b9ff449e08b4XXX5dd&room_id=6940XXX709&module_id=04:0>XXX00:9c:0e&eedomus_controller_module_id=16063
Ca me renvoie
<netatmo>
<cached>1</cached>
<setpoint_mode>schedule</setpoint_mode>
<setpoint_temperature>22</setpoint_temperature>
<temperature>24.6</temperature>
<boiler>0</boiler>
</netatmo>


Comment régler ca proprement?
julieng
 
Messages : 130
Inscription : 25 Fév 2019

Re: Netatmo Thermostat - Bug avéré avec le script

Messagepar julieng » 13 Sep 2019 23:48

J'ai réglé le problème en rajoutant en dur des switch dans le code...
Je pense qu'il y aurait moyen de faire ca plus proprement avec un tableau, dynamique dans cached_xml et last_xml_success mais je n'ai pas eu envie de me prendre la tete.

echo $cached_xml;
$cached_xml = str_replace('<cached>0</cached>', '<cached>1</cached>', $cached_xml);
if ($allow_cache)
{
switch($room_id)
{
case '230518663';
saveVariable('cached_xml_e1', $cached_xml);
saveVariable('last_xml_success_e1', time());
break;
case '694056709';
saveVariable('cached_xml_e2', $cached_xml);
saveVariable('last_xml_success_e2', time());
break;
case '2956991408';
saveVariable('cached_xml_e3', $cached_xml);
saveVariable('last_xml_success_e3', time());
break;
case '4145288283';
saveVariable('cached_xml_e4', $cached_xml);
saveVariable('last_xml_success_e4', time());
break;
julieng
 
Messages : 130
Inscription : 25 Fév 2019


Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 52 invité(s)