Привет, Geektimes! Изготовление, например, умной розетки для коммутации устройств с питанием 220В — самая большая проблема при разработке домашней автоматизации, умного дома и схожих систем.

У этой проблемы есть два аспекта — сложность самостоятельного изготовления и обеспечение надежности и безопасности работы таких розеток. Поэтому лишь опытные умельцы могут делать их своими руками.

Чаще всего стимулом к тому, чтобы изготовить умную розетку самостоятельно служит отсутствие вменяемого API у большинства серийных моделей.

В одной статье на Geektimes про умные розетки я увидел такой комментарий:

«Если нет открытого API, чем вы отличаетесь от сотен других поставщиков? Я мечтаю о розетке, которой могу управлять обычным https-запросом. С любой ОС и с любого устройства».

Именно таким способом управлять практически любой умной розеткой и многими IoT- устройствами я и хочу поделиться. Изложенный ниже метод актуален как для простой Wi-Fi-розетки HS100 от TP Link из любого магазина электроники, так и для множества других устройств: умных светодиодных ламп от Philips, хабов умного дома, термостатов Nest, фитнес-браслетов, систем полива и даже автомобилей.

На сайте любого крупного интернет-магазина электроники типа AliExpress или eBay в поиске по запросу «smart home» можно увидеть сотни интересных IoT-устройств для умного дома. У большинства из них привлекательная цена, они круто выглядят, имеют сертификаты безопасности, но у них нет открытого API — того, что по-настоящему важно гикам.

В действительности это не совсем так. В большинстве устройств API, конечно, есть и в большинстве случаев он открыт, но не для всех. Доступ к нему есть чаще всего у Amazon, ибо есть огромное количество устройств, совместимых с управлением при помощи голосового
помощника Alexa Echo. Подробнее можно прочитать здесь.

В свою очередь backend от Amazon для управления Alexa тоже открыт — AWS для поддержки IoT-устройств и всевозможных Alexa Skills, Lambda и так далее. Проблема в том, что со всем этим довольно сложно разобраться.

Сейчас я расскажу, как управлять с помощью запросов JSON всем, чем умеет управлять Alexa Echo. Просто написав команду вида «turn on the living room» можно управлять практически любой умной розеткой откуда хотите — с сайта, устройства Arduino, бота или мессенджера.

В качестве простого примера — многие уже используют популярный выключатель Sonof за 5 долларов. Обычно умельцы его перепрограммируют и используют кастомные прошивки для своего сервера.

На самом деле, им можно управлять текстом или голосом из бесплатного приложения, а также использовать API для передачи команд с помощью простых json запросов с вашего сайта, Ардуино, бота и т.д., причем не нужно ничего паять или прошивать — все работает «из коробки».



Экосистема Alexa постоянно развивается, и появляется все больше новых команд для управления. Подробная инструкция по настройке устройств от Sonof для работы с Alexa здесь.

Итак, что нужно для того чтобы управлять сотнями наименований IoT устройств и систем (поддерживающих Alexa Echo) с ваших сайтов, DIY устроств, ботов и т. д.?

Сначала нужно скачать приложение и зарегистрироваться ( логин и пароль, выбранный при регистрации потребуется при авторизации для API).

Также понадобится логин и пароль вашего аккаунта на Amazon. Вы можете ввести их при первом включении режима Alexa в приложении (иконка «a») или зарегистрироваться и создать новый аккаунт на Amazon.



Теперь создаем с кем-нибудь чат, в который будем отправлять из API команды для управления устройствами.

Нам потребуется ID чата. Получаем его командой getSessions. Пример выполнения команды:

        {
            "new": 0,
            "top": {
                "delivery": 1514009104111,
                "code": 0,
                "orig": "3996189326",
                "lifetime": -1,
                "mid": "1514009104111-b6cbe7fcccd49f9824",
                "time": 1514009104111,
                "event": 3,
                "type": 16,
                "content": "weather in london"
            },
            "created": 1513996519209,
            "missed": 0,
            "count": 40,
            "parties": [
                "3996189326",
                "3929915709"
            ],
            "id": "<b>1513996519209-ab612ee9434113c8d1</b>",
            "time": 1514009104111,
            "dialogid": "1513996519209-4b0cbad7b6e43ed36e",
            "updated": 1513999445871,
            "properties": {
                "keyGeoEnable": true,
                "push": false,
                "nodisturb": true
            },

Находим нужный чат (здесь он отображается как «id»: «1513996519209-ab612ee9434113c8d1») и копируем его ID — 1513996519209-ab612ee9434113c8d1. Теперь мы можем подавать команду
для управления со следующими параметрами:

method sendMessage
sessionid 1513996519209-ab612ee9434113c8d1
type 16
content weather in London

Если все сделано правильно, то ваш смартфон сообщит текущую погоду в Лондоне. Подробнее про команды API можно прочитать здесь.

Теперь нужно привязать устройство к учетной записи Alexa. Подробная инструкция есть в этой статье на Geektimes. После привязки вы можете менять фразу в контенте.

Например, если устройство привязано к группе Living Room, то json запрос будет выглядет так:

method sendMessage
sessionid 1513996519209-ab612ee9434113c8d1
type 16
content turn on the living room

Будет будет включаться соответствующее устройство, привязанное к living Room — умная розетка, умный выключатель и прочее.

Важно! В настройках приложения должна стоять галочка Always On:



Теперь вы можете не только управлять системами с сайта, бота, устройств типа Arduino и другими методами, но и делать покупки на Amazon — в общем, пользоваться всем тем, что умеет делать умная колонка Alexa Echo.

Спасибо за внимание! Надеюсь, пригодится.

Комментарии (5)


  1. martiniman
    23.12.2017 11:35

    Алекса же только по-английски умеет говорить. Тогда какой смысл ее использовать если не все в семье ею смогут пользоваться?


    1. Mobile1 Автор
      23.12.2017 11:39

      В статье упор на другое — на то, что можно включать и управлять устройствами, команды которых будут написаны, да, по английски, но внутри вашего кода на сайте, в боте и т.д.
      Т.е. речь не идет об общении, а только об управлении девайсами, но не голосом…


  1. fukkit
    23.12.2017 12:46

    Почему-то мне кажется, что большинство разумных людей не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий», скажем лаборатории ксаперского.
    А амазон по умолчанию представляется пушистыми зайчиками? Это потому, что в детстве диснеевских мультфильмы были на порядок лучше местных или боевички сообщили, что добрый и справедливый американский парень всех спасет, никого не обманет?
    А потом удивляются, что IoT задидосил очередную жертву… /ворчит


    1. Mobile1 Автор
      23.12.2017 14:35

      что большинство разумных людей не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий»


      Уже понатыкано миллионами и тенденция продолжается.
      Миллионы мух не могут ошибаться :)


    1. avost
      23.12.2017 23:31

      не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий», скажем лаборатории ксаперского.

      Ну, тут начать надо с того, что лаборатория и не делает алексиев :). Тем не менее, до недавних пор продуктами лаборатории в забугорье пользовались довольно широко, втч в госсекторе (а алекса — это, всё же, бытовой продукт), раз потребовалось аж закон выпускать.


      амазон по умолчанию представляется пушистыми зайчиками? Это потому, что в детстве диснеевских мультфильмы были на порядок лучше местных или боевички сообщили, что добрый и справедливый американский парень всех спасет, никого не обманет?

      Нет, во-первых, у вас перекос в восприятии, а во-вторых, чьи же ещё устройства ставить американцам, как не американское? В России-то алексу три калеки поди поставили, причём двое из них исключительно для обзора, а потом выключили, тк она их вариант английского всё-равно не понимает.


      потом удивляются, что IoT задидосил очередную жертву

      IoT задидосил, а виновата алекса? Казалось бы, при чём здесь мэр Москвы лужков?