Как подключить бэкэнд-сервис с удаленным мостом philips?

Я ищу, чтобы написать сервис оттенков philips, который должен позволить пользователям регистрировать свой модный мост с моей службой. Эта услуга изменит цвет ламп на основе события. Я знаю, что я могу использовать IFTTT, но в этом случае я бы не хотел использовать IFTTT, и я хотел бы зарегистрировать свой сайт с помощью приложений philips hue.

Любая идея, как я могу это сделать? Ваша помощь очень ценится. Благодарю!

EDIT: Не знаю, почему я был проголосован, но я определенно сделал свое исследование. Я посмотрел на веб-сайт разработчика philips hue и не смог найти ничего, что было бы явным в их API. Я также просмотрел SDK iOS и не видел никаких методов, которые могли бы вызвать процедуру сопряжения для удаленных устройств. До сих пор единственным примером, с которым я работаю (кроме продуктов Philips, является служба IFTTT, которая позволяет добавлять запись в раздел "Мои приложения").

Ответ 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 прошли этап аутентификации для удаленного управления.

  1. Найдите свой BRIDGEID с https://www.meethue.com/api/nupnp. (или на странице Моего моста на веб-сайте meethue и нажав "Показать больше")

  2. Получить ACCESSTOKEN

    www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
    
  3. Щелкните правой кнопкой мыши на "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

Ответ 2

Я провел некоторое расследование, выполнив шаги @paul-jianer-shi, однако маркер доступа не отображается в сгенерированном HTML. Я думаю, что Hue Portal обновлен и удален, так как он потенциально отображает токен доступа.

Я написал сообщение в блоге о выполнении операций удаленного Hue, повторно используя токен доступа другого приложения, например IFTTT. Главное изменение заключается в том, как получить доступ к токену доступа. Токен, показанный в разделе "Мои приложения" портала Hue. Проверьте ссылку (Деактивировать). Он содержит токен доступа.

Следующим шагом будет позволить Hue Portal доверять моему собственному приложению.

Ответ 3

Philips планирует сделать удаленный API доступным для третьих сторон (он уже используется IFTTT и meethue.com).

На веб-сайте разработчика есть форма для запроса раннего доступа (необходимо войти в систему): http://www.developers.meethue.com/content/remote-api