О Z-Wave
При начале эксплуатации умного дома на базе контроллера VeraLite с интерфейсом UI5 неприятной неожиданностью стал вид стандартных оповещений. Из получаемых уведомлений невозможно было сразу понять, какая именно информация представлена: сработала определенная сцена или это просто уведомление о включении от какого-то устройства. К тому же тема всех сообщений была абсолютно одинакова, что тоже вносило некоторую путаницу. Сейчас уведомления в ящике Gmail выглядят следующим образом, рис. 1.
Рис. 1. Уведомления контроллера VeraLite в ящике электронной почты от компании Google
Согласитесь, более удобно, когда названия можно менять на более понятные для человека и вписывать туда необходимые переменные, как время, параметры датчиков, текущие настройки. Есть хороший плагин VeraAlerts (*1), но он платный, и поэтому в статье обойдемся подручными средствами, благо результат один и тот же. Поскольку почта Gmail довольно таки распространена при описании буду ориентироваться на нее, к тому же для любой другой почты почтовые настройки будут аналогичны.
Для того, чтобы не замусорить собственный почтовый ящик, получая уведомления до ста штук в день, создается отдельная папка (в Gmail это называется «ярлык») для их получения, куда они сразу попадают сразу с пометками о прочтении – не надо нажимать на каждое из них и отмечать его «прочитанным». Если хотите посмотреть, о чем оповещает умный дом – достаточно зайти в эту папку с компьютера или мобильного устройства. Если нет времени смотреть – организуется своеобразный «лог» из уведомлений. Все уведомления текстовые и занимаю мало места, но, если есть желание, можно настроить автоматическое стирание писем, например, старше 6 месяцев в этой папке.
Самые важные уведомления, содержащие информацию о срабатывании датчика протечки или дыма, имеют специальную пометку в теме письма и автоматически переадресуются на шлюз e-mail -> sms, который можно настроить практически у любого оператора связи.
1. Настройки контроллера Vera
В интерфейсе UI5 VeraLite понадобится всего один плагин «eMail Notification» (*2). После его установки автоматически создастся новое виртуальное устройство, которое изображено на рис. 2. В его настройки надо вписать адрес почты, откуда будут оправляться уведомления – нельзя отправлять и получать уведомления на один и тот же основной ящик. Необходимо завести дополнительный аккаунт, или воспользоваться уже существующим. Подойдет любой почтовый ящик с любым именем, можно, например, воспользоваться генератором случайных имен (*3).
Рис. 2. Окно настройки плагина «eMail Notification»
После этого настраиваем уведомления – создавать их надо не в окне уведомлений, связанном с устройством, а с помощью новой сцены на вкладке «Автоматизация». Самый простой способ создание отдельной сцены для каждого уведомления, в таком случае можно будет не залезать в дебри программирования.
Рис. 3. Дополнительное окно настройки «eMail Notification», откуда надо взять номер устройства, в данном случае это номер 30
1.1. Настройка уведомлений с датчика открытия двери или окна
Для отслеживания информации с датчика открытия двери или окна (*5) создаем новую сцену на вкладке «Автоматизация», в разделе «Триггеры» отмечаем «переключатель», включающий сцену, когда необходимый датчик срабатывает, рис. 4.
Рис. 4. Создание триггера для сцены оповещения
Дальше самое важное – во вкладке «LUUP» данной сцены необходимо вставить код, который будет отправлять уведомления через плагин. В коде необходимо изменить номер устройства «30» (в моем случае) на ваш номер устройства, который можно посмотреть в дополнительном окне настройки «eMail Notification», рис. 3.
local currentTimeSMS=os.date('%H:%M:%S') --настройка отображения времениluup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", { Recipient_Name="Mikhail", Recipient_eMail="your_email", Subject="VeraLog - Сработал датчик входной двери в " .. currentTimeSMS, Message=" " }, 30) --оповещение
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "ResetCount",{}, 30) --сброс счетчика оповещения
После этого всё необходимо сохранить: «Сохранить Lua», «Подтвердить изменения», «СОХРАНИТЬ».
Потом откройте/закройте окно или дверь и, если все проделано правильно, на почту получите уведомление такого вида: «VeraLog - Сработал датчик входной двери в 20:47:52»
Текст уведомления можно менять прямо в коде: Subject – тема письма, Message – тело письма.
1.2. Настройка уведомлений с датчика движения или мультисенсора
Все действия аналогичны предыдущему случаю, меняется только текст уведомления и триггер, рис. 5. Не забудьте поменять номер устройства с «30» на ваш в коде.
local currentTimeSMS=os.date('%H:%M:%S') --настройка отображения времениluup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", { Recipient_Name="Mikhail", Recipient_eMail="yoer_email";, Subject= "VeraLog - Движение на кухне в " .. currentTimeSMS, Message=" " }, 30) --оповещение
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "ResetCount",{}, 30) --сброс счетчика оповещения
Рис. 5. Создание триггера для сцены оповещения с мультисенсора
1.3. Настройка уведомлений с выключателей
Аналогично предыдущему, можно получать уведомления с выключателей (*5). Не забудьте поменять номер устройства с «30» на ваш в коде. Создается две сцены: одна на включение, другая на выключение розетки.
Рис. 6. Создание триггера для сцены оповещения о включении розетки
Уведомление о включении розетки, триггер на рис. 6.
local currentTimeSMS=os.date('%H:%M:%S')luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", { Recipient_Name="Mikhail", Recipient_eMail="your_email";, Subject= "VeraLog - HTPC socket включен в " .. currentTimeSMS, Message=" " }, 30) --оповещение
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "ResetCount",{}, 30) --сброс счетчика оповещения
Рис. 7. Триггер сцены оповещения о выключении розетки
Уведомление о выключении розетки, триггер на рис. 7.
local currentTimeSMS=os.date('%H:%M:%S')luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", { Recipient_Name="Mikhail", Recipient_eMail="your_email";, Subject= "VeraLog - HTPC socket выключен в " .. currentTimeSMS, Message=" " }, 30) --оповещение
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "ResetCount",{}, 30) --сброс счетчика оповещения
1.4. Создание тревожных оповещений с датчиков задымления или протечки воды
Аналогично предыдущему, меняется только название темы, не VeraLog, а VeraAlert – для того чтобы в дальнейшем отфильтровать сразу на пересылку в смс. Не забудьте поменять номер устройства с 30 на ваш в коде.
local currentTimeSMS=os.date('%H:%M:%S, %d/%m/%Y')luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", { Recipient_Name="Mikhail", Recipient_eMail="your_email";, Subject= "VeraAlert - сработал датчик протечки на кухне в " .. currentTimeSMS .. "!", Message=" " }, 30) --оповещение
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "ResetCount",{}, 30) --сброс счетчика оповещения
2. Настройки почтового ящика Gmail
Поскольку уведомления приходят часто, до нескольких раз в час, необходима отдельная папка в Gmail, куда бы они попадали и не отвлекали от основной почты. Создайте ярлык «SmartHome» или аналогичный в Gmail, рис. 8.
Рис. 8. Создание ярлыка для умного дома в Gmail
Настройте правила фильтрации (по теме письма VeraLog или VeraAlert) для того чтобы письма с уведомлениями прикреплялись к этому ярлыку, рис. 9, не попадая во входящие. Настройте поиск по критерию:
subject:("VeraLog") OR subject:("VeraAlert")
Рис. 9. Правила фильтрации в Gmail
И создайте правило, сняв галочку о том, чтобы письма не отвлекали от основной почты (пропустить входящее), а прикреплялись только к выбранному ярлыку, рис. 10.
Рис. 10. Создание ярлыка для умного дома в Gmail
Для темы письма срочных оповещений «VeraAlert» дополнительно надо создать переадресацию на адрес смс шлюза, в моем случае это Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. .
Если вы опасаетесь за замусоривание почтового ящика оповещениями, то можете применять правило, которое выберет все письма с ярлыком умного дома старше 60 дней и не помеченные звездочкой:
label:INBOX-SmartHome AND older_than:60d -label:starred
После получения выборки их можно удалить, не опасаясь за текущие и помеченные сообщения.
Скачать весь приведенный в статье код одним файлом можно здесь.
Выводы
После выполнения всех действий получается работающая система понятных оповещений, только взглянув на которые можно сразу понять, что происходит или что происходило в интересующий отрезок времени. Кроме того, опираясь на эту систему, можно создать и посылать информационное письмо о текущем состоянии всех параметров дома один раз в несколько часов.
Ссылки, упоминаемые в статье:
*1. http://rts-services.com/Vera/Plugin/VeraAlerts/
*2. https://apps.mios.com/plugin.php?id=2498
*3. http://ru.fakenamegenerator.com/
*4. http://www.z-wave.ru/shop/category/datchiki/otkr-dveri-okna.html
*5. http://www.z-wave.ru/shop/category/ispolniteli/vyklyuchateli.html
Информация актуальна на дату написания статьи: декабрь 2014 года.
Автор: Михаил Шардин