« PHILLIPS HUE » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
m (base)
Ligne 172 : Ligne 172 :
Ligne 32 l'état du bouton "link" : <code>false</code> le bridge n'est pas en mode appariement, <code>true</code> il est en mode appariement.  
Ligne 32 l'état du bouton "link" : <code>false</code> le bridge n'est pas en mode appariement, <code>true</code> il est en mode appariement.  


lignes 33 à 41, je ne sais pas!
Lignes 33 à 41, je ne sais pas!


Lignes 42 à 47 la connectivité internet.
Lignes 42 à 47 la connectivité internet.

Version du 3 décembre 2024 à 14:53

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:

HUE-BRIDGE-MAC.png

Dans mon routeur je vois une entrée :

Mac-hue-routeur.png

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.

Exemple-arp.png

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 :

MAC-phillips-lighting.png

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 :

Hue-debug-console.png

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 !