Forum eedomus
https://forum.eedomus.com/

[HELP] Nest - Récupérer les valeurs hvac_state et humidity
https://forum.eedomus.com/viewtopic.php?f=59&t=7811
« Précédent  Page 2 sur 3  Suivant »
Auteur:  merguez07 [ 26 Nov 2018 16:47 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

ElYoM a écrit: il s'est amusé à requêter le thermostat Nest de son boulot à l'aide de Postman et il récupère bien les valeurs de "hvac_state" et "humidity", le contraire serait d'ailleurs étonnant puisque l'API le prévoit et le permet)


Il a requêté ton Nest ou le sien ?
Auteur:  ElYoM [ 26 Nov 2018 18:33 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Il a requêté celui qu'ils ont dans les locaux de son boulot.
Auteur:  Havok [ 26 Nov 2018 18:34 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Si le script ne recupere pas les valeurs que tu veux c’est peut etre qu’il ne les demande pas à l’API ?
Auteur:  ElYoM [ 26 Nov 2018 18:58 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

C'est ce qu'on s'est dit avec merguez07 mais, à priori, c'est autre chose étant donné les tests qu'on a menés. La variable $json retournée par le script contient bien d'autres variables que celles utilisées par le script, sauf hvac_state et humidity sans que je n'ai décelé dans le code quelque chose qui briderait cette remontée d'infos. Après, j'avoue que le PHP, ça me dépasse vraiment, même si je n'en suis pas à ma première bidouille de scripts dans plusieurs autres langages.
Auteur:  merguez07 [ 26 Nov 2018 19:44 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

perso j'ai le sentiment que c'est la version de ton Nest qui est bridée. Essaye de faire un postman toi même sur ton Nest.
Si tu ne sais pas faire je peux le faire pour toi si tu me donne en MP les données de ton Nest
Auteur:  ElYoM [ 26 Nov 2018 21:26 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Hello merguez07,

Je sais utiliser PostMan, il n'y a que pour l'autorisation que je n'ai pas vraiment compris comment récupérer un token dans la doc de l'API. Mais ce serait effectivement un test à faire, je serais fixé comme cela. En tout cas, dans la doc, hormis ces histoires de permission, je n'ai trouvé aucune sorte de bridage.

Du coup, si tu comprends comment gérer l'authentification avec postman pour le Nest, un dernier petit coup de main ne serait pas de refus. ;) Il y a peut-être moyen de récupérer le token utilisé par le script eedomus mais je ne vois pas comment l'afficher.
Auteur:  merguez07 [ 27 Nov 2018 08:14 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

ElYoM a écrit:Il y a peut-être moyen de récupérer le token utilisé par le script eedomus mais je ne vois pas comment l'afficher.


c'est simple tu rajoutes dans le code
Code : Tout sélectionner
$xml .= '<hvac_state>';
$xml .= $json['hvac_state'];
$xml .= '</hvac_state>';
$xml .= '<token>';
$xml .= $access_token;
$xml .= '</token>';


et avec le xpath qui va bien tu as le token qui s'affiche
Auteur:  ElYoM [ 27 Nov 2018 12:18 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Parfait, merci pour la réponse merguez07, c'était vraiment simple en fait... [shame on me]. Je viens de tester et, effectivement, ni 'hvac_state', ni 'humidity' ne remonte dans le json quand j'utilise le token demandé par l'eedomus.

Du coup, je viens d'avoir brièvement mon collègue développeur au téléphone et il m'a expliqué (avec ses mots de développeur, j'ai pas tout compris mais moi je suis dans les infrastructures info, pas le code ^^) que cela a à voir avec la version du client oauth utilisé par eedomus et m'a donné en référence cette page de la documentation de l'API Nest. Le problème vient donc bien, à priori, de la version du client oauth utilisé par eedomus qui n'a pas été mis à jour depuis 2014. (le json me remonte cela comme info de version du client : "client_version": 1).

https://developers.nest.com/guides/acco ... nt-version
Auteur:  Havok [ 27 Nov 2018 13:22 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

C'est pas plutot à toi de mettre à jour tes autorisations en allant la : https://developers.nest.com/products ?

With the Nov 2014 release, we added the humidity field to the thermostats object. In order to access humidity from your product, you should follow these steps to enable the new fields:

Select the Permissions tab on the OAuth Clients page
Open the product category containing the permission you wish to edit
Select [Edit] for one of your existing permissions
Select [Done] without making any changes
Select [Update Permissions] at the bottom of the screen
Check the Overview tab—the client version number has incremented by 1
Auteur:  ElYoM [ 27 Nov 2018 13:49 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Havok a écrit:C'est pas plutot à toi de mettre à jour tes autorisations en allant la : https://developers.nest.com/products ?

With the Nov 2014 release, we added the humidity field to the thermostats object. In order to access humidity from your product, you should follow these steps to enable the new fields:

Select the Permissions tab on the OAuth Clients page
Open the product category containing the permission you wish to edit
Select [Edit] for one of your existing permissions
Select [Done] without making any changes
Select [Update Permissions] at the bottom of the screen
Check the Overview tab—the client version number has incremented by 1

Hello Havok,

J'y ai pensé mais une fois arrivé sur la page, ça me demande de créer un compte développeur (mais à priori c'est pas possible pour le moment : "Thank you for your interest in the Works with Nest program. We're upgrading our systems and will not accept new client reviews during this time. Please check back in a few weeks. If you have an urgent issue, please message us through the developer console."). Et donc, sans compte développeur, pas de client oauth. Et comme je n'ai pas de compte développeur, je ne peux donc logiquement pas avoir de client oauth et donc je ne peux pas mettre à jour les permissions d'un client oauth que je n'ai pas. La seule explication reste donc que le client oauth utilisé est celui créé par la team eedomus. Sinon, je vois pas...
Auteur:  merguez07 [ 27 Nov 2018 14:11 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Je ne suis pas sure que le problème soit cette histoire de version de client Oauth

Quand on lit la doc on s'aperçoit que pour avoir toute les autorisations il faudrait envoyer dans la requête son client_id et client_secret

ainsi au lieu de
$postdata = 'grant_type='.$grant_type.'&code='.$code.'&redirect_uri='.$redirect_uri;

on devrait avoir
$postdata = 'grant_type='.$grant_type.'&code='.$code.'&redirect_uri='.$redirect_uri.'&client_id='.$client_id.'&client_secret='.$client_secret;

pour obtenir le client_id et secret il faut suivre les instructions du point 1 ci dessous
https://developers.nest.com/guides/api/how-to-auth

A tester
Auteur:  ElYoM [ 27 Nov 2018 14:45 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

J'aurais bien aimé tester ce que tu proposes merguez07 mais comme indiqué précédemment il faut créer un compte développeur et Nest n'accepte pas les nouvelles créations de comptes durant les prochaines semaines : "Thank you for your interest in the Works with Nest program. We're upgrading our systems and will not accept new client reviews during this time. Please check back in a few weeks. If you have an urgent issue, please message us through the developer console."

Je vais attendre un retour du support car si la solution se limite seulement à ce qu'ils mettent à jour les permissions de leur client oauth, ça peut être vite réglé.

En tout cas, merci beaucoup de vous être penchés sur le problème avec moi, c'est vraiment sympa.
Auteur:  Havok [ 27 Nov 2018 15:42 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Exact, tu as raison.
En regardant la doc : https://doc.eedomus.com/view/Eedomus_et_Nest c'est bien eux qui génerent le code.
Auteur:  ElYoM [ 27 Nov 2018 15:54 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Ok merci pour la confirmation Havok. ;)
Auteur:  ElYoM [ 28 Déc 2018 15:45 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Bon ben après 3 relances auprès du support pour qu'ils fassent évoluer la version de leur client Oauth afin de récupérer les variables hvac_state et humidity (pourtant intégrées dans l'API Nest depuis 2015), rien, aucune réponse, le néant.
Auteur:  merguez07 [ 28 Déc 2018 21:10 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

ElYoM a écrit:Bon ben après 3 relances auprès du support pour qu'ils fassent évoluer la version de leur client Oauth afin de récupérer les variables hvac_state et humidity (pourtant intégrées dans l'API Nest depuis 2015), rien, aucune réponse, le néant.


On m'a offert un Nest à Noël. Je le connecte demain et je verrais si j'ai le même pb que toi. On se tient au jus
Auteur:  ElYoM [ 29 Déc 2018 01:34 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Cool, sympa le cadeau. ça fonctionne vraiment bien, tu ne devrais pas être déçu. ;)
Auteur:  ElYoM [ 09 Jan 2019 16:22 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Hello merguez07,

As-tu eu le temps de jeter un œil à l'API Nest de ton côté depuis que tu as reçu ton thermostat ?
Auteur:  ElYoM [ 31 Jan 2019 14:35 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Après de multiples relances auprès du support, j'ai finalement obtenu une réponse (un peu à côté de la plaque puisqu'elle ne va pas plus loin que les tests que nous avons déjà effectués et ne répond donc pas à la question de savoir pourquoi ces valeurs ne remontent pas alors que l'API Nest le permet) :
malheureusement, rien n'est renvoyé pour hvac_state ou humidity, vous pouvez faire un essai vous même en ajoutant les lignes suivantes après la ligne 370 du script de votre box.

$url = 'https://developer-api.nest.com/devices/thermostats/'.$thermostat_id.'/humidity?auth='.$access_token;
$result = httpQuery($url);
var_dump($result);

$url = 'https://developer-api.nest.com/devices/thermostats/'.$thermostat_id.'/hvac_state?auth='.$access_token;
$result = httpQuery($url);
var_dump($result); die();

Bien cordialement.
Bart pour
eedomys L'équipe eedomus
http://www.eedomus.com


Ayant encore mon ancienne box domotique Vera Edge, je confirme que ces valeurs remontent bien au-travers de l'API Nest puisque la Vera Edge me permet de disposer de ces deux informations (hvac_state et humidity), il y a donc bien un problème au niveau du script officiel Nest pour l'eedomus mais à cette allure là on aura jamais de réponse concrète au pourquoi du comment... Dans l'attente, je gruge en faisant remonter ces valeurs de la Vera Edge à l'eedomus mais ça m'embête vraiment de conserver la Vera Edge uniquement pour cela alors que je comptais m'en débarrasser puisque ayant tout migré sur l'eedomus (sauf cela désormais).
Auteur:  merguez07 [ 06 Fév 2019 18:21 ]
Sujet du message:  Re: [HELP] Nest - Récupérer les valeurs hvac_state et humidi

Bon je confirme qu'il y a une restriction avec l'Eedomus dans la mesure ou si je fais mes requêtes directement via Postman, j'obtiens tous les paramètres.
Si j'implante certains des paramètres d'identification dans le code php du script dans l'Eedomus, j'arrive à avoir les bons résultats ce qui prouve que c'est, lors de la création de l'actionneur, les identifiants fournis qui ne permettent qu'un accès retreint aux paramètres (pourquoi, j'en sais rien).

En toute logique cela doit pouvoir se corriger dans le code mais là je suis un peu limité dans ma connaissance du PHP.
Par exemple dans le code ligne 132 je suis infoutu de comprendre comment il est possible de faire fonctionner cette requête sachant que dans le postdata il manque les éléments essentiels et nécessaires à savoir le client_id et le client_secret.

J'informe la team de mes conclusions
Page 2 sur 3 Le fuseau horaire est UTC+1 heure