-
-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Event detail endpoint is obsolete #486
Comments
@fhewitt un gars s'essaye, y a-t-il un espoir de pull request de ta part? |
Non, je ne connais pas le projet du tout, ni Python d'ailleurs. Je ne peux pas m'avancer concernant mes collègues, mais là tout de suite, ça ne sera pas priorisé. Par contre, je m'engage à repasser ici si on s'apprête à l'arracher et que le ticket est toujours ouvert, pour te dire que tu n'a plus le choix. Et ça ne sera certainement pas avant Q1 2025. D'ici là, l'espoir reste permis. |
@fhewitt je suis pas une brute (c'est pas mon code, je l'apprends sur le tas), je vois que l'on utilise cet endpoint dans cette fonction-là: hilo/custom_components/hilo/sensor.py Line 780 in 63fe855
Qui par la suite appelle celle-ci: Je comprends vite quand on m'explique longtemps. Est-ce que l'on souhaite obtenir que l'URL passe de:
À
Ou bien j'ai mal saisi l'information? Si j'ai bien saisi, ça me retourne une erreur 404 ici dans mon test en local. J'ai pas nécessairement besoin d'aide côté Python en tant que tel, plus ma compréhension de ce qui doit changer. |
Ce code ne marchera plus. Il va falloir passer par le websocket et subscribe à ce nouvel url. Je suis aussi un noob avec tout ce qui est async et websocket. Je crois qu'on va avoir besoin de deux instances de WebsocketClient. Faut faire de quoi avec ce hack la qui hardcode le DeviceHub dans la methode de connexion. À moins qu'on puisse subscribe à plusieurs endpoints avec la même instance? Donc cette instance est créée dans le _post_init, je crois qu'on pourrait en créé une deuxième à cet endroit à moins qu'on puisse utilisé la même pour les deux endpoint, je ne suis pas assez familier avec tout ça. Ensuite, tout dépendemment si on utilise une ou deux instances de websocket client, on va devoir adapter tout le code ici pour supporter ces deux connexions. Tant qu'à le faire pour deux, on s'arrange pour que ça soit dynamique et pouvoir subscribe à une liste de websocket. Faudrait aussi ajuster le callback pour qui soit dynamique tant qu'à ça. C'est une pas pire job tout ça, surtout pour des noobs comme nous qui ont codé ça instinctivement en snoopant le traffic de l'app. Q1 2025 arrive très vite. C'est vraiment sympathique d'Hilo d'avoir supporté le REST API pour les events pour nous aussi longtemps mais ça serait aussi bien que Hilo puisse engagé un consultant afin de migrer vers la nouvelle infra. Un professionnel python devrait pouvoir comprendre et coder ça en pas trop long à mon avis. |
@fhewitt , en essayant d’implémenter je me frotte à une erreur 401 sur la négociation avec https://api.hiloenergie.com/ChallengeHub, est-ce que le bearer token ne serrait pas un token général ? En utilisant le token obtenu par Oauth ça veut vraiment pas, alors je me demandais si ce n'était pas un token générique ou à obtenir via une autre méthode. |
Salut gang, @Leicas @valleedelisle @elafontaine Au final, le token qui doit être utilisé pour la connexion initiale au websocket du ChallengeHub est ici: Pour fins de connexion avec POSTMAN j'ai modifié le code ainsi pour obtenir mon token et confirmer que j'avais la bonne affaire:
Donc il est possible d'obtenir notre WSS URL à partir de là! Je suis pas allé plus loin encore car je suis pas mal moins à l'aise avec cette portion là du code mais je voulais informer n'importe qui qui veut s'essayer de son côté comment obtenir le bon chemin! |
Un peu de progrès, j’ai partagé ça sur dvd-dev/python-hilo#223 pour aider les autres qui travaille dessus, c’est pas très loin encore, mais la partie négo du WS avec les tokens fonctionne chez moi maintenant. La partie qui voulait vraiment pas et qui m’a tourné le crane c’est https://github.com/dvd-dev/python-hilo/pull/223/files#diff-9ee2958872aa7ec04a975bc72c01bd591c0babd6cdabed3344be35f80fff180dR234 . |
Nice job! Merci pour ta contribution. Idéalement, il faudrait que ça soit dynamique au lieu de faire un websocket2. Peut-être un autre classe pour englober le tout? Je manque énormément de temps ces temps-ci, si Hilo pouvait faire des journées de 32h ça m'aiderait. Mais bon, si ça fonctionne comme ça, j'ai pas de problème à merger ce code et j'essaierai d'optimiser éventuellement. |
…ndling challenge events.
Manager class est faite dans pyhilo, voir dvd-dev/python-hilo#224, c'est pas mergé encore d'un coup que j'me sois planté mais ici en test c'est fonctionnel. #505 est un bon premier pas, merci beaucoup à @Leicas, je vais continuer à jouer avec pendant le temps des fêtes. Toute contribution ou essai de contribution sera apprécié |
@fhewitt: Les structures de données JSON Schema, c'est copié d'une source de données publiquement accessible ou est-ce que c'est juste un cadeau? C'est généralement assez commode d'avoir les définitions d'API pour pouvoir mock ce que l'API renverrait ou même juste pour être certain que les modèles de données sont bons. |
@sm-Fifteen passes nous voir sur discord quand tu auras un moment, je peux au moins te faire un topo d’où c’est rendu |
J'ai commencé à me réessayer en cuvant ma dinde d'hier, j'arrive à poster au challengehub via postman sans problèmes mais on dirait que je n'arrive pas à me servir de Postman pour subscribe au URL. Du côté HA, avec dvd-dev/python-hilo#224 et #505 qui virent en parallèle, j'ai les messages suivants dans le log... pas super aidant. |
Info supplémentaire:
retourne la liste des défi en cours/prévu
|
Ajouts dans #505, si on le roule avec dvd-dev/python-hilo#224 on a quelque chose de fonctionnel |
Plus d'info: Il va falloir remodeler Pour digérer l'info des défis je pense... Je ne sais pas si on va pas avoir besoin d'une méthode ou autre pour envoyer l'info aux bonnes places... |
Ce qui revient par le /Challengehub:
|
Le reste des messages arrivent d'ici: |
@sm-Fifteen @Leicas @valleedelisle #505 est à jour avec tous les messages qui sont rentrés à date dans le websocket du /ChallengeHub. Nécessite dvd-dev/python-hilo#224 pour rouler. |
@sm-Fifteen @Leicas @valleedelisle Voici un debug log file épuré des premières phrases du défi de ce matin. |
@sm-Fifteen @Leicas @valleedelisle Log épuré de sur un autre host, mais j'ai tous les messages websocket du 4 janvier au 6 au soir dedans |
Hi dear community,
Context
Today, we (the Hilo team) added the
deprecation
header on the event details endpoints :/GDService/v1/api/locations/{locationId}/events/{eventId}
.This endpoint is not used anymore inside the Hilo application, but we kept it up and functional for Home Assistant.
That being said, it's not tested so much anymore and it will, at some point, be removed or just stop working properly.
New Approach
You should be able to achieve the same result through websocket/signalR :
https://api.hiloenergie.com/ChallengeHub
Request Message: SubscribeToChallenge with a { eventId: long, locationId: long } payload
Which will trigger these 2 events in response
ChallengeDetailsInitialValuesReceived
ChallengeConsumptionUpdatedValuesReceived
Obviously, these format could change in the future (probably not for this season).
Sorry that I can't be a lot more helpful, especially in this time of the year.
The text was updated successfully, but these errors were encountered: