PHILLIPS HUE
Trouver l'IP du bridge.
Il y a une chose à savoir avant: l'adresse IP du bridge HUE.
Au dos du bridge on a un étiquette avec une tera floppée de de logos et de chiffres. Il faut trouver une étiquette qui ressemble à ça:
Dans mon routeur je vois une entrée :
Le chiffre d'en haut (a gauche en haut de la petite maison) sur l'étiquette du bridge HUE est la fin de l'adresse MAC que l'on peut voir côté routeur. L'IP est donnée dessous. Ici c'est 192.168.0.18. (Oui j'ai un routeur TP-link derrière une Freebox configurée en bridge)
Un autre solution est d'utiliser la commande arp.
On retrouve que mon adresse mac qui se termine par 3b19 est bien 192.168.0.18
On peut aussi utiliser un decodeur d'adresses mac. Par exemple : https://macaddress.io/
On lui donne la MAC et il réponds :
Pas de doute c'est la bonne adresse!
Par la suite cette IP sera désignée par hue-bridge
.
Dans un navigateur si on teste http://hue-bridge on a une page qui s'affiche et donne toutes les licences utilisée par le soft du bridge.
On constate que le Bridge Philips Hue est une petite linux-box avec nginx, openssl ... il y a même un client MQTT ssl Mosquitto !
Connexion
Test
Pour une utilisation plus subtile on utilisera curl
, un librairie python ou même des sockets en C mais pour les tests on a une jolie console de debug sur le serveur web:
http://hue-bridge/debug/clip.html
On a une jolie page :
Si on teste avec l'URL :
GET /api/config
On récupère la configuration du bridge:
{
"name": "Hue Bridge",
"datastoreversion": "172",
"swversion": "1967054020",
"apiversion": "1.67.0",
"mac": "--:--:--:--:3b:09",
"bridgeid": "------------3B09",
"factorynew": false,
"replacesbridgeid": null,
"modelid": "BSB002",
"starterkitid": ""
}
L'adresse MAC est confirmée là aussi!
Récupérer un token
Par défaut tout le monde ne peut pas se connecter à un bridge HUE, Normal!
Le mécanisme est un classique "push button to pair".
On doit donner un nom à l'appareil client. On choisit ici TEST_CLIENT
.
Pour obtenir le token on doit faire :
POST /api
Avec les données :
{"devicetype":"my_hue_app#davtest"}
On récupère la réponse :
[
{
"error": {
"type": 101,
"address": "",
"description": "link button not pressed"
}
}
]
Logique il faut appuyer sur le bouton et on a quelques secondes pour lancer la commande de nouveau.
Et on relance le même POST
[
{
"success": {
"username": "Z3L********6OQtHo-fcUE9O******jWQNwffHgg"
}
}
]
On récupère un "username"
.
On le note bien précieusement! C'est lui qui nous permettra l'accès.
Dans la suite on désignera ce token user par username
.
Récupérer la configuration
On peut récupérer la configuration du pont HUE avec l'URL :
GET /api/username/config
Attention la réponse est longue.
{
"name": "Hue Bridge",
"zigbeechannel": 15,
"bridgeid": "------------3B09",
"mac": "--:--:--:--:3b:09",
"dhcp": true,
"ipaddress": "192.168.0.18",
"netmask": "255.255.255.0",
"gateway": "192.168.0.1",
"proxyaddress": "none",
"proxyport": 0,
"UTC": "2024-12-02T19:24:10",
"localtime": "2024-12-02T20:24:10",
"timezone": "Europe/Paris",
"modelid": "BSB002",
"datastoreversion": "172",
"swversion": "1967054020",
"apiversion": "1.67.0",
"swupdate2": {
"checkforupdate": false,
"lastchange": "2024-11-21T06:58:12",
"bridge": {
"state": "noupdates",
"lastinstall": "2024-10-25T12:05:18"
},
"state": "transferring",
"autoinstall": {
"updatetime": "T14:00:00",
"on": true
}
},
"linkbutton": false,
"portalservices": true,
"analyticsconsent": true,
"portalconnection": "disconnected",
"portalstate": {
"signedon": false,
"incoming": false,
"outgoing": false,
"communication": "disconnected"
},
"internetservices": {
"internet": "connected",
"remoteaccess": "connected",
"time": "connected",
"swupdate": "connected"
},
"factorynew": false,
"replacesbridgeid": null,
"starterkitid": "",
"backup": {
"status": "idle",
"errorcode": 0
},
"whitelist": {
"498********72-49f0-8faa-cad6******fae1gr": {
"last use date": "2024-12-01T21:39:24",
"create date": "2024-02-15T21:17:54",
"name": "Hue#SM-S918B"
},
"Z3L********6OQtHo-fcUE9O******jWQNwffHgg": {
"last use date": "2024-12-02T19:24:10",
"create date": "2024-12-02T19:18:50",
"name": "my_hue_app#davtest"
}
}
}
Lignes 2 à 31 le statut du bridge.
Ligne 32 l'état du bouton "link" : false
le bridge n'est pas en mode appariement, true
il est en mode appariement.
lignes 33 à 41, je ne sais pas!
Lignes 42 à 47 la connectivité internet.
Lignes 48 à 54... je ne sais pas non plus.
Lignes 55 à 67 la liste blanche des tokens autorisés. La sécurité est donc assez limité. On a un accès une fois on a acces a TOUS les tokens. On est tous root !