Привет, 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)
fukkit
23.12.2017 12:46Почему-то мне кажется, что большинство разумных людей не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий», скажем лаборатории ксаперского.
А амазон по умолчанию представляется пушистыми зайчиками? Это потому, что в детстве диснеевских мультфильмы были на порядок лучше местных или боевички сообщили, что добрый и справедливый американский парень всех спасет, никого не обманет?
А потом удивляются, что IoT задидосил очередную жертву… /ворчитMobile1 Автор
23.12.2017 14:35что большинство разумных людей не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий»
Уже понатыкано миллионами и тенденция продолжается.
Миллионы мух не могут ошибаться :)
avost
23.12.2017 23:31не понатыкало бы себе девайсов, которыми можно управлять через какой-нибудь «Алексий», скажем лаборатории ксаперского.
Ну, тут начать надо с того, что лаборатория и не делает алексиев :). Тем не менее, до недавних пор продуктами лаборатории в забугорье пользовались довольно широко, втч в госсекторе (а алекса — это, всё же, бытовой продукт), раз потребовалось аж закон выпускать.
амазон по умолчанию представляется пушистыми зайчиками? Это потому, что в детстве диснеевских мультфильмы были на порядок лучше местных или боевички сообщили, что добрый и справедливый американский парень всех спасет, никого не обманет?
Нет, во-первых, у вас перекос в восприятии, а во-вторых, чьи же ещё устройства ставить американцам, как не американское? В России-то алексу три калеки поди поставили, причём двое из них исключительно для обзора, а потом выключили, тк она их вариант английского всё-равно не понимает.
потом удивляются, что IoT задидосил очередную жертву
IoT задидосил, а виновата алекса? Казалось бы, при чём здесь мэр Москвы лужков?
martiniman
Алекса же только по-английски умеет говорить. Тогда какой смысл ее использовать если не все в семье ею смогут пользоваться?
Mobile1 Автор
В статье упор на другое — на то, что можно включать и управлять устройствами, команды которых будут написаны, да, по английски, но внутри вашего кода на сайте, в боте и т.д.
Т.е. речь не идет об общении, а только об управлении девайсами, но не голосом…