Repository navigation
Endpoint /devices obselète #564
Description
Helloo
Context
La route /api/Locations/{LocationId}/Devices est obselete. Toute l'information des appareils passe par le DeviceHub, avec un SubscribeToLocation
Information initiales de la liste d'appareil d'une location
DeviceListInitialValuesReceived
Un array des appareils de la location.
L'objet devrait avoir le même format que celui dans le endpoint qui est obselete
[
{
"id": 0,
"assetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hiloId": "string",
"identifier": "string",
"gatewayId": 0,
"gatewayExternalId": "string",
"gatewayAssetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"type": "Hub",
"groupId": 0,
"category": "Heating",
"icon": "string",
"loadConnected": 0,
"modelNumber": "string",
"locationId": 0,
"parameters": "string",
"externalGroup": "string",
"provider": 1,
"providerData": "string",
"isFavorite": true,
"eTag": "string",
"supportedAttributesList": [
"None"
],
"settableAttributesList": [
"None"
],
"supportedParametersList": [
"None"
]
}
]Pour les mises à jour de la liste des appareils (Ajout et supression)
DeviceAdded
Les informations du device qui à été ajouté (même objet que la liste ci-haut)
{
"id": 0,
"assetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hiloId": "string",
"identifier": "string",
"gatewayId": 0,
"gatewayExternalId": "string",
"gatewayAssetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"type": "Hub",
"groupId": 0,
"category": "Heating",
"icon": "string",
"loadConnected": 0,
"modelNumber": "string",
"locationId": 0,
"parameters": "string",
"externalGroup": "string",
"provider": 1,
"providerData": "string",
"isFavorite": true,
"eTag": "string",
"supportedAttributesList": [
"None"
],
"settableAttributesList": [
"None"
],
"supportedParametersList": [
"None"
]
}DeviceDeleted
Les ids (deviceId et HiloId) du device qui a été supprimé.
{
"id": 0,
"hiloId": "string"
}Information initiale et mise à jour des valeurs des appareils
DevicesValuesReceived ET GatewayValuesReceived
Les valeurs des appareils ET du gateway, ils sont séparés dans 2 messages mais le format est le même
[
{
"deviceId": 0,
"hiloId": "string",
"locationId": 0,
"locationHiloId": "string",
"timeStampUTC": "2025-02-03T19:06:34.202Z",
"attribute": "None",
"value": "string",
"valueType": "OnOff",
"operationId": "string"
}
]Donc :
Lors d'un SubscribeToLocation, on devrait recevoir 3 messages avec les informations nécessaires pour afficher les états/valeurs des appareils:
- DeviceListInitialValuesReceived
- DevicesValuesReceived
- GatewayValuesReceived
Ensuite, le DeviceHub met à jour les informations reçus avec ces messages:
- DeviceAdded
- DeviceDeleted
- DevicesValuesReceived
- GatewayValuesReceived
DeviceListInitialValuesReceived, DeviceAdded ET DeviceDeleted servent à bartir la liste d'appareils d'une location
DevicesValuesReceived ET GatewayValuesReceived font juste mettre à jour les états/valeurs des ces appareils.
Activity
ic-dev21 commentedon Feb 3, 2025
Salut, pour info supplémentaire, si quelqu'un avait envie d'y travailler, il y a déjà un callback pour une portion du /devicehub qui est gérée:
hilo/custom_components/hilo/__init__.py
Lines 269 to 341 in f129cd0
Dans la version avec challenge sensor via signalR/websocket j'ai séparé le /devicehub du /challengehub, c'est un work in progress donc prière de pas trop rire de moi:
hilo/custom_components/hilo/__init__.py
Lines 273 to 420 in 20c67e3
AbigailAsselin-Hilo commentedon Feb 20, 2025
Salut @ic-dev21, j'ai une petite question sur la façon que l'intégration Hilo obtient le locationId de l'utilsateur pour faire les appels. Vous utilisez bien le GetLocations pour avoir le locationId? J'ai rechercher dans le code mais j'ai pas trouvé.
Merci
fersingb commentedon Feb 20, 2025
Bonjour @AbigailAsselin-Hilo,
Après un check rapide dans le code, un appel semble être fait vers https://api.hiloenergie.com/Automation/v1/api/Locations
Bonne journée
ic-dev21 commentedon Feb 20, 2025
https://github.com/dvd-dev/python-hilo/blob/cd9f9b0fdf3a41b8713379fd18154e7dca47bf58/pyhilo/api.py#L497-L501
ic-dev21 commentedon Mar 1, 2025
Salut @AbigailAsselin-Hilo, si ça peut t'aider et en aider d'autres, ma compréhension du flow, ce n'est pas mon code mais je suis relativement confiant que je suis dedans.
Pour la connexion actuellement, on passe par la fonction suivante:
https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/api.py#L495-L499
URL utilisé:
https://api.hiloenergie.com/Automation/v1/api/Locations/
Les contantes pour le bâtir sont ici:
https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/const.py#L26-L34
Une fois le LocationId obtenu, on fait un POST pour obtenir le wss URL et notre accesstoken, on save en YAML:
https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/websocket.py#L458-L488
On peut maintenant. bâtir le wss URL complet:
https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/websocket.py#L490-L529
Une fois qu'on l'a, pour le /devicehub, on fait un subscribetolocation:
hilo/custom_components/hilo/__init__.py
Lines 437 to 443 in ffaa7e1
Les reading sont traitées ici quand ils rentrent:
hilo/custom_components/hilo/__init__.py
Lines 354 to 371 in 6ad9afe
Et sont parsées ici:
https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/websocket.py#L224-L240
Ma compréhension est possiblement pas parfaite, mais voilà.
AbigailAsselin-Hilo commentedon Mar 2, 2025
Ouais ça semble faire du sens! Juste pour le parse je crois que c'est lui ici https://github.com/dvd-dev/python-hilo/blob/60e529797369ff402ad0c312a7bf8f65ca5351ad/pyhilo/devices.py#L38 par contre
ic-dev21 commentedon Apr 9, 2025
Closed by v2025.4.1
SimonCoulombe commentedon May 20, 2025
Salut! Merci encore de maintenir hilo, je viens de réaliser que ça faisait 2 semaines que j'avais pas de data d'énergie, maintenant je sais pourquoi.
Question de noob, je fais comment pour faire une à jour?
J'ai fait "redownload" dans HACS:
dans les device and entities ça m'a dit do you want to configure hilo, j'ai dit oui, là il se plaint que je peux juste avoir une configuration..
il y a sûrement un bouton simple qqpart qui m'échappe
mon setup actuel:
ic-dev21 commentedon May 20, 2025
Normalement tu fais simplement redownload et tu restart HA, rien d'autre à faire. Il est possible que tu doives deleter le fichier hilo_state.yaml sous /config, j'ai changé la librairie YAML car l'ancienne causait des problèmes de fichier corrompus.
SimonCoulombe commentedon May 20, 2025
bin oui toi, j'avais pas vu--- mais c'est bien écrit là. Tout est revenu, merci encore.
Merge pull request #897 from dvd-dev/fix564
ic-dev21 commentedon Mar 16, 2026
Fixed by #897 pour de vrai, ce coup-là.