
«Умные дома» и «умные офисы» сегодня тренд. А как сделать самое обычное бытовое устройство чуть «умнее»? А что если при этом вы не умеете или не хотите ничего паять? Я например отношусь к тем, кто паять не умеет, а пользу от умных устройств получать хочет.
Под катом я расскажу, как легко и без паяльника можно быстро превратить абсолютно любую микроволновку в самую настоящую smart-микроволновку, которая будет оповещать вас о готовности еды и своем текущем статусе самыми разнообразными способами.
Для чего?
Так уж получилось, что в нашем офисе помещений несколько, а микроволновка одна. Собственно нужно как-то оповещать коллег, что еда разогрелась и пора идти на обед (ходим на обед мы все вместе, а еду разогревает только пара человек).
Во всех офисах у нас висит по телевизору, который подключен к самому обычному ПК (Mac Mini). Так что он мог бы выступить в качестве «рупора», оповещающего, когда микроволновка начала, а когда закончила свою работу. Вдобавок, можно было бы подключить какое-то световое оповещение, типа лампочек
Что понадобится?
Как я уже сказал ранее, паяльник НЕ ПОНАДОБИТСЯ. А понадобится нам что-нибудь, что умеет мерять нагрузку на обычной 220 розетке, к которой подключена микроволновка, и сообщать об этом куда надо. А куда надо? Правильно — в онлайн автоматизатор IFTTT, который умеет отправлять что-угодно куда-угодно.
Собственно алгоритм простой — когда микроволновка включится, то нагрузка на розетку возрастает, а когда микроволновка заканчивает греть — то снова становится равной нулю. Этот факт можно отследить и использовать как триггер в IFTTT, который и «дернет» нужный нам сервис, оповещающий нас о готовности.
Розетка
Теперь пойдем в любой интернет магазин умных домов и купим там обычную Z-Wave розетку и контроллер к ней.
Это не единственный способ, можно было бы выбрать и другой вариант, но этот лично для меня проще всего.

Сама розетка — например вот эта (хотя можно купить и гораздо более дешевый вариант, но эта красиво светится :) )
Котроллер нужен, чтобы получать данные от розетки. С его помощью можно также и управлять умными устройствами, но сейчас не об этом.
Будем подключать нашу розетку к контроллеру MiCasa Vera Lite (или можно к Vera 3).

Контроллер подключается в локальную сеть через Ethernet или Wi-Fi (для Vera3). С ним один раз синхронизируется розетка с помощью одной-единственной кнопки, и все — теперь с помощью контроллера можно управлять розеткой и получать от нее данные. Сразу ее включим через веб-консоль контроллера и оставим включенной.
OpenHAB
Чтобы не писать всякие скрипты на самом контроллере, а обойтись «малой кровью», установим на любой ПК под любой ОС бесплатный сервер домашней автоматизации OpenHAB. Он позволяет унифицировать протоколы любых умных устройств в сети и связывать их в единую логику с помощью очень гибких и простых правил.
Зачем он нам? Все просто — он будет отслеживать состояние нашей розетки и в нужный момент отправлять на IFTTT запрос, чтобы тот в свою очередь отсылал данные в нужный нам канал нотификаций.
Можно по-разному написать правило, включить например другое устройство, музыку, сказать что-то синтезатором речи и тд. Но в данном примере я покажу, как связать микроволновку именно с IFTTT, который открывает безграничные возможности по интеграции со сторонними сервисами без лишних заморочек.
Установка
Итак, скачаем OpenHAB и аддоны для него, среди которых отыщем jar файлы со словом «mios» в названии и положим их в папку «addons» нашего OpenHAB-а.
Еще вам понадобится Oracle JDK последней версии, так как OpenHAB написан на Java
Конфигурируем OpenHAB
Тут все просто. Идем в папку «configurations» и переименовываем «openhab_default.cfg» в «openhab.cfg» и открвыаем его в редакторе.
В конец фала пишем строчку
mios:house.host=192.168.1.22
естествнно заменив IP адрес на адрес вашего контроллера Vera. Его кстати можно очень быстро получить, открыв в браузере вот такую ссылку http://cp.mios.com/detect_unit.php
Подробное описание процесса настройки и конфигурации Vera в OpenHAB описана на странице аддона github.
Далее идем в папку «items» и там в файле «test.items» пропишем настройку, чтобы OpenHAB знал, состояние какой розетки нам нужно отслеживать:
Number Microwave {mios="unit:house,device:11/service/urn:micasaverde-com:serviceId:EnergyMetering1/Watts"}Вместо цифры 11 пропишите идентификатор вашей розетки, который можно увидеть в веб-консоли вашего контроллера Vera.
Ну и последнее — пишем небольшое правило, которое будет отслеживать состояние розетки и отправлять запрос на наш IFTTT.
В папке «rules» создаем файл «test.rules» и пишем там:
import org.openhab.core.library.types.* import org.openhab.model.script.actions.* rule "Microwave" when Microwave received update 0 then sendHttpGetRequest("http://maker.ifttt.com/trigger/microwave/with/key/<тут должен быть ваш ключ от IFTTT>") end
Правило реагирует, когда нагрузка от микроволновке становится равной нулю и шлет запрос на IFTTT. Адрес запроса нужно получить в вашей консоли IFTTT, туда сейчас и пойдем.
IFTTT

IFTTT предоставляет возможность слать ему запросы от любых систем и перенаправлять их в нужный вам канал с помощью канала Maker. Там можно получить свой уникальный идентификатор, который и подставить в приведенный выше скрипт OpenHAB.
По сути, это URL, на который нужно отправить GET или POST запрос, заодно можно туда передать параметры (в нашем пр��мере это не нужно). IFTTT получает такой запрос и выполняет «then» — то есть запускает нужный вам канал с нужными параметрами.
Кто-то обязательно скажет, что мол все придумано за нас, и OpenHAB уже давно работает с IFTTT, зачем нам костыль из Maker?
Отвечу сразу — IFTTT слишком редко получает статусы от OpenHAB (раз в 15 минут), что для нас неприемлемо. Поэтому OpenHAB будет сам «дергать» Maker — и тогда никаких задержек не будет, все будет происходить моментально.
Итак, делаем рецепт:

Этот рецепт для примера просто отправит нотификацию на ваш смартфон, когда микроволновка закончит свою работу. Как я уже сказал, можно создать любой другой рецепт, который сделает что-то более интересное, например слать сообщение в корпоративный Slack.
Настройки самого триггера Maker будут вот такими:

Собственно все! В Maker можно проверить как это работает — на самой странице Maker можно нажать кнопку Test и получить результат.
Не забудьте прописать ваш ключ от Maker в правило в OpenHAB!
Запускаем!
Остается только запустить OpenHAB с помощью одного из скриптов «start.sh» или «start.bat», в зависимости от того, на какой ОС у вас он установлен.
Теперь каждый раз, когда микроволновка будет заканчивать греть еду, вы будете получать от IFTTT нотификацию, которую настроили в своем рецепте. Причем моментально.
Так мы сделали из обчной микроволновки «умную», которая умеет немножко больше, чем только греть еду :)
