Ответ 1
TL;DR: я написал API: https://github.com/jarvisinc/PhilipsHueRemoteAPI
Я ответил на этот вопрос в своем техническом блоге (http://blog.paulshi.me/technical/2013/11/27/Philips-Hue-Remote-API-Explained.html), который я опубликую здесь:
Вопрос на самом деле приходит как две части:
- Аутентификация
- Дистанционное управление
Аутентификация
Я не могу найти надежный способ автоматической проверки подлинности. Следующие процедуры должны быть автоматизированы: идея заключается в подделке в качестве официального iOS APP, который имеет возможность удаленного управления при включении. Нам нужно, чтобы BRIDGEID
и ACCESSTOKEN
прошли этап аутентификации для удаленного управления.
-
Найдите свой
BRIDGEID
с https://www.meethue.com/api/nupnp. (или на странице Моего моста на веб-сайте meethue и нажав "Показать больше") -
Получить
ACCESSTOKEN
www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
-
Щелкните правой кнопкой мыши на "BACK TO APP" и запишите
ACCESSTOKEN
внутри ссылки, которую он перенаправляет наphhueapp://sdk/login/**ACCESSTOKEN**
В основном это взломать ваш токен доступа. Вы подделываете свое приложение как официальное приложение iOS Hue и просите токен доступа таким образом. Я не уверен, что есть более простой способ, если вы знаете его, пожалуйста, сделайте комментарий ниже.
Вы можете автоматизировать его, выполнив симулированный сеанс входа в систему и ACCESSTOKEN
содержимое страницы. Но я считаю это крайне ненадежным, потому что любое изменение официальной страницы, скорее всего, нарушит его.
Я написал этот сценарий, который позволяет автоматизировать получение ACCESSTOKEN
на сегодняшний день, но я не гарантирую, что он будет работать завтра по той причине, что я объяснил выше: P
В настоящее время этот процесс OAUTH работает только с официальными приложениями. Может быть, есть небольшая вероятность, что они откроют его для других сторонних приложений.
Дистанционное управление
После проверки подлинности эта часть может быть выполнена автоматически. Есть 2 известных частных конечных точки для отправки команды управления и получения всего статуса, связанного с мостом оттенка.
-
Конечная точка команды отправки:
POST https://www.meethue.com/api/sendmessage
-
Получение статуса Конечная точка:
GET https://www.meethue.com/api/getbridge
Конечная точка команды отправки
-
URL:
https://www.meethue.com/api/sendmessage
-
Метод:
POST
-
Параметры URL:
token=**ACCESSTOKEN** (which you obtained earlier)
-
Заголовок запроса
content-type=application/x-www-form-urlencoded
-
тело
clipmessage={ bridgeId: "**BRIDGEID**", clipCommand: { url: "/api/0/**APIENDPOINT**", method: "**METHOD**", body: **JSONCOMMAND** } }
-
BRIDGEID
- это тот, который вы получили ранее -
APIENDPOINT
же, как и официальный API/api/<username>/***
, удалив/api/<usename>/
part -
METHOD
PUT/GET/POST/DELETE тот же метод 4, что и официальный API. Несмотря на то, что GET действительно не работает, поскольку весь ответ от конечной точки отправки команды 200 объясняется в следующей части, в то время как DELETE не тестируется -
JSONCOMMAND
Фактическое тело команды, например{"on":true}
-
Получение статуса Конечная точка
-
URL:
https://www.meethue.com/api/getbridge
-
Метод:
GET
-
Параметры URL:
token=**ACCESSTOKEN** bridgeid=**BRIDGEID**
-
Заголовок запроса
content-type=application/x-www-form-urlencoded
Ограничения
Текущее ограничение - вы не можете сразу узнать из ответа, была ли ваша управляющая команда успешной, как официальный API. Весь ответ, который вы получаете от вызова конечной точки отправки, почти всегда <200>
если вы делаете это правильно. Но вы всегда можете вывести весь статус, связанный с мостом Hue, с конечной точки получения статуса.
API удаленного управления
Я написал Philips HUE Remote API специально для решения проблемы удаленного управления.
Наслаждаться :)
Бумага
Для полной документации обратитесь к этой замечательной статье:
Взломанные лампочки : оценка безопасности персональной беспроводной системы Philips Hue от Nitesh Dhanjani