[Plugin Tiers] Netatmo-Energie

C’est possible, quand la vanne est en cours d’ouverture l’info ne s’actualise pas instantanément.
Il faut regarder aussi le json ‹ info modules ›

Ok je vais checker ca

@limad44 je te confirme que dans le json que tu produits le pourcentage de la vanne est correct pour l’équipement thermostat mais pas la valorisation de la commande
image

Connais-tu si la fréquence d’envoi du webhook ?
@chris94440

hello @limad44
J’ai souvent du mal a modifier la température d’une vanne ou la priorité chauffage … dans les logs j’ai tjs le meme message d’erreur

execute Action : thermPriority_set sur: Maison 4 rue des perdrix
[2021-03-06 10:21:04][DEBUG] : changeHeatingPriority action: changeHeatingPriority eco- sur: Maison 4 rue des perdrix
[2021-03-06 10:21:04][DEBUG] : _nawLogin csrf_token: nJ6lkJemsjhqIRM5BA28VxT9cJnCYqgaV88mbzvd
[2021-03-06 10:21:04][DEBUG] :   * Step 2
[2021-03-06 10:21:06][DEBUG] : _nawLogin _token: 5d35b4af273f77000d0ef4a8|77aeff84dd70e975c484f063047ed0d4
[2021-03-06 10:21:06][DEBUG] : wRequest dec4: Erreur 403(Forbidden) : Invalid access token at /api/setheatingpriority
[2021-03-06 10:21:06][DEBUG] : changeHeatingPriority action: set-changeHeatingPriority non exécutée: {
[2021-03-06 10:21:06][DEBUG] : changeHeatingPriority action: set-changeHeatingPriority non exécutée: "{\"error\":{\"code\":2,\"message\":\"Invalid access token\"}}"
[2021-03-06 10:21:06][DEBUG] : execute Fin cmd-Action : thermPriority_set 

On dirait que le token utilisé est un token de lecture et pas de Maj … au bout d’un moment cela passe … par contre serait il possible que le pluggin throw une erreur dans ce cas là pour que l’on soit averti du soucis ?
@chris94440

Update :
Autre petit point … lorsque l’on met à jour une température de vanne et que tout se passe bien la maj est bien effective sur la vanne (cf. copie écran netatmo) … mais au travers de l’api cela peut prendre jusqu’a 30 min … aurais tu une idée de pourquoi ?

[2021-03-06 18:16:52][DEBUG] : execute Action : setTrueTemperature sur: Noe
[2021-03-06 18:16:52][DEBUG] : setTrueTemperatureSet corrected_temperature from : 20 to 21.1
[2021-03-06 18:16:52][DEBUG] : _nawLogin csrf_token: 6YEp5kGvGMi1zt2tLpYENuN4anTXLrDkXCe3Djde
[2021-03-06 18:16:52][DEBUG] :   * Step 2
[2021-03-06 18:16:53][DEBUG] : _nawLogin invalid2 _token: deleted retry: 1
[2021-03-06 18:16:56][DEBUG] : _nawLogin _token: 5d35b4af273f77000d0ef4a8|4e0ea20d663275ba9d132371edc21d38
[2021-03-06 18:16:56][DEBUG] : setTrueTemperature Result: "ok"
[2021-03-06 18:16:56][DEBUG] : execute Fin cmd-Action : setTrueTemperature
[2021-03-06 18:16:57][DEBUG] : execute Action : refresh sur: Noe
[2021-03-06 18:16:57][DEBUG] : getDataRoom _Homestatus {"id":"5d5e31d165846b001a196df6","modules":[{"boiler_cable":true,"firmware_revision":222,"hardware_version":245,"id":"70:ee:50:34:51:10","rf_strength":111,"type":"NAPlug","wifi_strength":64},{"anticipating":false,"battery_level":4587,"boiler_status":true,"boiler_valve_comfort_boost":false,"firmware_revision":75,"id":"04:00:00:34:82:6c","reachable":true,"rf_strength":63,"type":"NATherm1","bridge":"70:ee:50:34:51:10","battery_state":"full"},{"battery_level":2978,"firmware_revision":85,"id":"09:00:00:05:62:5a","reachable":true,"rf_strength":68,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"full"},{"battery_level":2903,"firmware_revision":85,"id":"09:00:00:05:5d:43","reachable":true,"rf_strength":76,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"high"},{"battery_level":3104,"firmware_revision":85,"id":"09:00:00:05:3e:11","reachable":true,"rf_strength":61,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"full"},{"battery_level":2909,"firmware_revision":85,"id":"09:00:00:05:d8:1d","reachable":true,"rf_strength":79,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"high"},{"battery_level":2971,"firmware_revision":85,"id":"09:00:00:01:56:02","reachable":true,"rf_strength":70,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"full"},{"battery_level":2753,"firmware_revision":85,"id":"09:00:00:06:f3:aa","reachable":true,"rf_strength":71,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"high"},{"battery_level":2721,"firmware_revision":85,"id":"09:00:00:12:43:40","reachable":true,"rf_strength":51,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"medium"},{"battery_level":2837,"firmware_revision":85,"id":"09:00:00:05:42:c9","reachable":true,"rf_strength":62,"type":"NRV","bridge":"70:ee:50:34:51:10","battery_state":"high"}],"rooms":[{"anticipating":false,"heating_power_request":0,"id":"329867741","open_window":false,"reachable":true,"therm_measured_temperature":20.5,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615014000,"therm_setpoint_temperature":20},{"anticipating":false,"heating_power_request":0,"id":"378673255","open_window":false,"reachable":true,"therm_measured_temperature":20,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615046877,"therm_setpoint_temperature":20},{"anticipating":false,"heating_power_request":100,"id":"1709629413","open_window":false,"reachable":true,"therm_measured_temperature":19,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615014000,"therm_setpoint_temperature":20},{"anticipating":false,"heating_power_request":76,"id":"1948815679","open_window":false,"reachable":true,"therm_measured_temperature":20,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615019742,"therm_setpoint_temperature":20},{"anticipating":false,"heating_power_request":0,"id":"2533902090","open_window":false,"reachable":true,"therm_measured_temperature":21,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615014005,"therm_setpoint_temperature":18.5},{"anticipating":false,"heating_power_request":100,"id":"3358727206","open_window":false,"reachable":true,"therm_measured_temperature":20.7,"therm_setpoint_mode":"schedule","therm_setpoint_start_time":1615047674,"therm_setpoint_temperature":21}]}
[2021-03-06 18:16:57][DEBUG] : _
[2021-03-06 18:16:57][DEBUG] : *********************** Sync  eqlogiq 1 Noe ***********************
[2021-03-06 18:16:57][DEBUG] : 	getDataRoom NAPlug_(Maison Villecre): {"boiler_cable":true,"firmware_revision":222,"hardware_version":245,"id":"70:ee:50:34:51:10","rf_strength":111,"type":"NAPlug","wifi_strength":59,"name":"Maison Villecre","firmware":222,"connected":true}
[2021-03-06 18:16:57][DEBUG] : 	_getRoomMeasure params : [{"beg_time":1614985288,"step_time":600,"value":[[19.7],[19.7],[19.6],[19.6],[19.5],[19.5],[19.5],[19.4],[19.3],[19.2],[19]]},{"beg_time":1614991894,"step_time":600,"value":[[17.8],[17.8],[18.1],[18.6],[19],[19.1],[19]]},{"beg_time":1614996099,"step_time":600,"value":[[20.2],[19.9],[19.7],[19.5],[19.3],[19.1],[18.9],[18.8],[18.6],[18.3],[18.2],[18.2],[18.2],[18.2],[18.2]]},{"beg_time":1615005100,"step_time":600,"value":[[18.5],[19.1],[19.5],[19.5],[19.4]]},{"beg_time":1615008105,"step_time":600,"value":[[19.2],[19],[18.8],[18.7],[18.5],[18.5]]},{"beg_time":1615011465,"step_time":600,"value":[[18.4],[18.9],[19.9],[20.7],[21],[20.9],[20.7],[20.5]]},{"beg_time":1615016272,"step_time":605,"value":[[20.3],[20.2]]},{"beg_time":1615017477,"step_time":606,"value":[[20],[20]]},{"beg_time":1615018683,"step_time":600,"value":[[20.1],[20.1],[20.1],[20],[19.8],[19.7],[19.6]]},{"beg_time":1615022886,"step_time":605,"value":[[19.5],[19.5]]},{"beg_time":1615024091,"step_time":600,"value":[[19.6],[19.7]]},{"beg_time":1615025294,"step_time":600,"value":[[19.6],[19.6],[19.6],[19.7],[19.7],[19.7],[19.7],[19.7],[19.7],[19.7],[19.7],[19.7],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8]]},{"beg_time":1615037295,"step_time":600,"value":[[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.8],[19.9],[19.9],[19.9],[20],[20],[20],[20.1],[20.1],[20.1],[20.1],[20.1],[20.1],[20],[20]]}]
[2021-03-06 18:16:57][DEBUG] : 	getDataRoom * temperature from mesuredTemp: 20°
[2021-03-06 18:16:57][DEBUG] : 	getDataRoom ***** room_modetech: schedule
[2021-03-06 18:16:57][DEBUG] : 	getDataRoom ***** powerRequest: 0
[2021-03-06 18:16:57][DEBUG] : 	getDataRoom ****************************** statustr_7 : Eteint
[2021-03-06 18:16:57][DEBUG] : 		***********   fin eqlogiq 1 Noe  **********

image

Salut
la majorité des actions passe par l’api classique c’est le cas pour (consigne, mode, planinning…)
d’autres actions nécessitent un token avec des privilèges plus élevés (c’est le cas de true-temperature, priorité chauffage…) qui nécessitent un token obtenu par connexion particulière" via le site web".
Cette dernière n’est pas une méthode officielle et Netatmo changent souvent les règles pour cette connexion ainsi que les paramètres de validités du token. vu les logs le token a bien été renouvelé mais pourquoi n’a pas été accepté c’est une bonne question, vu que des fois ça passe et pas d’autres, ça va être difficile de comprendre.

…met à jour une température ou met à jour une consigne ?
j’ai rien constaté de tel !

@limad44
Non je parle bien d’une maj de la temperature de la vanne (trueTempérature).

J’ai compris ce qui posait problème … c’est pas un problème de privilèges du token mais un problème de token plus valide malgré que sa période de validité soit encore bonne … en fait le problème se produit lorsque l’on se reconnecte au client web netatmo … un nouveau token est généré et du coup celui que tu généres par le plugin ne l’est plus … je sais pas si je suis clair … :roll_eyes:
Serait il possible que cette anomalie déclenche une erreur ?

Pour recuperer la temperature lue sur la vanne tu te sers de l’api netatmo ou tu passes par le site web ?Car j’ai l’impression et je sais pas pourquoi que le site web et plus a jour que l’api … lorsque l’on modifie une température (setTrueTemperature) le site web est à jour et pas l’api…même 10min apres

Pour preuve l’api netatmo repond, pour la vanne conservée:

{
    "body": {
        "1615213362": [
            18.4
        ],
        "1615213962": [
            21
        ],
        "1615214562": [
            19.8
        ],
        "1615215162": [
            19.8
        ],
        "1615215762": [
            19.9
        ],
        "1615216362": [
            19.7
        ]
    },
    "status": "ok",
    "time_exec": 0.058914899826049805,
    "time_server": 1615218098
}

La dernière mesure datant de 1615216362 soit le 8/3/2021 à 15:12:42 alors qu’il est 16h44 …
D’après la documentation les prises de température sont toutes les 10 min ce que globalement on observe bien … "1615213362"=>"1615213962"=>"1615214562"=>"1615215162"=>"1615215762"=>"1615216362"
sauf quand on force le chgt de température … tu observes cela aussi ?
Cordialement,
@chris94440

Oui j’ai remarqué aussi ce phénomène de retard dans l’Api après application de true température.
Le plugin décide quelle température prendre en compte api/web c’est un peu compliqué à expliquer.
En ce moment je suis en rad de connexion internet ( merci Free :japanese_ogre:) dans je peux pas regarder grand chose depuis mon smartphone.
A suivre

1 « J'aime »

Pas de soucis … des que tu es en capacite de regarder fais moi signe on pourra faire des tests.
Et pour le token tu penses pouvoir prendre en charge aussi des que tu recuperes le net ??

Update:
Excuse moi de de spamer @limad44 mais j’aime bien comprendre … du coup je me suis penché sur l’api et il s’avère que pour avoir la température en direct des vannes il faut consommer le endpoint api.netatmo.com/api/homestatus … l’inconvénient est qu’il fait un round sur la température (comme sur la vanne d’ailleurs) … l’autre endpoint : api.netatmo.com/api/getroommeasure permet lui d’avoir une valeur précise mais pas instantanée … je ne sais pas encore pourquoi … :frowning: … je continue de chercher …

Update :
En meme temps c’est écris dans la doc de l’api
image

@limad44 … cela m’agaçait que la maj des températures ne se faisaient pas à cause de ce problème de token … j’ai regardé ton code…; et j’ai trouvé le soucis … il se trouve dans la class naEnergie_W.class.php méthode wapi.
Tu testes le retour de l’api

$rqst = naEnergie_W::wRequest($path, $method, $params, true, $headers);
    	if($rqst["body"] == 'Invalid access token' && !$retry){
			log::add('naEnergie', 'debug', __FUNCTION__ .' ChD wapi on rentre dans le retry');
			$login = self::_nawLogin(true);
			self::wapi($path, $method, $params, true, $headers);
        }

Le soucis se situe au niveau du retour du body qui est en fait un json avec

{"errore":{"code":"je sais plus","message":"Invalid access token"}}

Du coup le test $rqst[« body »] == ‹ Invalid access token › est toujour faux.

Pour corriger j’ai modifié un peu à l’arrache en ce sens … :slight_smile:

$aRequest=json_decode($rqst["body"],true);	
    	if($aRequest["error"]["message"] == 'Invalid access token' && !$retry){

Tout est OK car il regénère le token du coup … je te tiens au courant si le soucis est complètement résolu.
A ta disposition
@chris94440

Bonjour,
j’utilise ce superbe plugin depuis quelques mois, mais depuis 2 jours, j’ai une erreur « cronJob Erreur WS12 » sur plusieurs vannes et mon thermostat, et après plusieurs heures mais vannes et thermostat sont désactivés. Lorsque je vais sur le site dev.netatmo j’ai une info webhooks « Banned » !
Merci pour votre aide

Bonjour
si des erreurs critiques sont détectées par le plugin( équipement injoignable depuis longtemps…) le core jeedom désactive l’équipement.
l’erreur ws12 signifie que l’équipement était injoignable depuis 100 minutes consécutives.

on se fait bannir rapidement du webhook si la box est injoignable ou tout simplement problème d’accès externe via les ports 80 ou 443.
1- essaye de nettoyer/vider le cache de ta box jeedom
2- redémarrer le box
cela devrait réinitialiser les erreurs dans le plugin et réactiver les équipements.

merci

@limad44, merci. Cela a fonctionné un moment, mais le problème revient systématiquement, et je dois passer à chaque fois par le site dev.netatmo pour passer en « Unban ».

Il arrive que tu reçoit des webhooks ?
Tu as quoi comme accès externe à ta box ?

@limad44, comment puis je voir si je reçois ou non des webhooks ? Y-a-t-il un log pour cela dans le plugin ?

Il faut activer les logs en ‹ debug ›, exécuter une action par exemple depuis ton smartphone et voir s’il se passe quelque chose dans les logs.
Comme j’ai mentionné précédemment, il faut disposer d’un accès externe sur le port 80 ou 443 c’est souvent là que ça cloche.

Bonjour,
J’ai fait l’acquisition du plugin Netatmo Energie, rentré les informations de connexion Netatmo, jusque là aucun problème. Mais quand je souhaite « synchroniser mes équipements », je n’ai aucun retour, il ne détecte pas mon thermostat (jusque là le seul équipement installé).
J’ai eu également une erreur : « Erreur sur la fonction cron10 du plugin : Call to a member function getConfiguration() on null »… je ne sais pas si c’est lié.
Une piste à me soumettre que je puisse savoir où chercher l’erreur ?
Merci

EDIT : Milles excuses, le problème venait de l’utilisation du mauvais compte chez Netatmo, un compte qui ne me sert pas. Je vais de ce pas tester ce plugin, merci pour le boulot !

Bonjour FloDP.
Vous que tu as déjà résolu ton problème, il ne me reste plus qu’à te souhaiter la bienvenue !

Merci beaucoup !

Bonjour à tous.

Pour suivre l’actualité du plugin, il faut désormais ce diriger vers ce fils d’actualité :
Plugin Netatmo-Energie (Thermostats et vannes).
Ceci afin de se conformer à « l’esprit du forum »
Merci

2 « J'aime »