«Умные дома» и «умные офисы» сегодня тренд. А как сделать самое обычное бытовое устройство чуть «умнее»? А что если при этом вы не умеете или не хотите ничего паять? Я например отношусь к тем, кто паять не умеет, а пользу от умных устройств получать хочет.
Под катом я расскажу, как легко и без паяльника можно быстро превратить абсолютно любую микроволновку в самую настоящую smart-микроволновку, которая будет оповещать вас о готовности еды и своем текущем статусе самыми разнообразными способами.
Для чего?
Так уж получилось, что в нашем офисе помещений несколько, а микроволновка одна. Собственно нужно как-то оповещать коллег, что еда разогрелась и пора идти на обед (ходим на обед мы все вместе, а еду разогревает только пара человек).
Во всех офисах у нас висит по телевизору, который подключен к самому обычному ПК (Mac Mini). Так что он мог бы выступить в качестве «рупора», оповещающего, когда микроволновка начала, а когда закончила свою работу. Вдобавок, можно было бы подключить какое-то световое оповещение, типа лампочек ильича Phillips Hue. Ну или посылать уведомление в мессенджер.
Что понадобится?
Как я уже сказал ранее, паяльник НЕ ПОНАДОБИТСЯ. А понадобится нам что-нибудь, что умеет мерять нагрузку на обычной 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 нотификацию, которую настроили в своем рецепте. Причем моментально.
Так мы сделали из обчной микроволновки «умную», которая умеет немножко больше, чем только греть еду :)
Если статья оказалась для вас полезной, и вы хотите как-то отблагодарить автора, то помогите мне пристроить очень замечательного, но бездомного котёнка в Санкт-Петербурге. Моя почта — morfeusys@gmail.com Спасибо!
Автор: morfeusys