Forum eedomus
http://forum.eedomus.fr/

Netatmo Thermostat - Bug avéré avec le script
http://forum.eedomus.fr/viewtopic.php?f=50&t=8863
Page 1 sur 1
Auteur:  julieng [ 13 Sep 2019 19:33 ]
Sujet du message:  Netatmo Thermostat - Bug avéré avec le script

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
Auteur:  julieng [ 13 Sep 2019 21:30 ]
Sujet du message:  Re: Netatmo Thermostat - Bug avec les scripts

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]
Auteur:  julieng [ 13 Sep 2019 21:37 ]
Sujet du message:  Re: Netatmo Thermostat - Bug avec les scripts

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?
Auteur:  julieng [ 13 Sep 2019 22:00 ]
Sujet du message:  Re: Netatmo Thermostat - Bug avec les scripts

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?
Auteur:  julieng [ 13 Sep 2019 23:48 ]
Sujet du message:  Re: Netatmo Thermostat - Bug avéré avec le script

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;
Page 1 sur 1 Le fuseau horaire est UTC+1 heure