О Z-Wave
Умный дом Z-Wave позволяет легко организовать «черный ящик» или, иначе говоря, «бортовой самописец» вашего дома, который будет записывать абсолютно все действия, которые вы ему укажете фиксировать. Причем вы сами можете решить, что записывать, а что нет. Функция «черного ящика» не зависит от наличия выхода в сеть интернет и если система умного дома смонтирована на даче, то это не проблема для получения данных. Результатом применения данной статьи станет текстовый файл следующего вида:
2015.02.07, 21:45:18, Выключение света в 21:45:16, 17.7 минут не было движения, 2й этаж
2015.02.07, 21:49:22, Движение на 1м этаже
2015.02.07, 21:49:48, Управление Kodi 2015.02.07, 21:49:48, Кухня включена
2015.02.07, 21:51:23, HTPC socket выключен в 21:51:21
2015.02.07, 21:56:40, Движение на 2м этаже
2015.02.07, 21:57:31, Домашний компьютер включен 2015.02.07, 22:02:41, Движение на 1м этаже
Что такое «бортовой самописец»? Этот термин пришел из авиации, «бортовой самописец» — это устройство, используемое для записи основных параметров полёта, внутренних показателей систем летательного аппарата, переговоров экипажа и т. д. В применении к VeraLite с интерфейсом UI5 – это несколько строк программного кода, которые вставляются во вновь созданную сцену. Функция кода – писать строки уведомлений в общий текстовый файл. Поскольку VeraLite имеет по сегодняшним меркам смешной встроенной объем памяти менее 100 Мб, то писать файл лога лучше на внешний USB-флеш-накопитель.
Небольшая ремарка – контроллер и сам пишет лог всех действий, но это технический лог, как он выглядит вы, можете оценить, перейдя по адресу (рис. 1):
http://192.167.0.101/cgi-bin/cmh/log.sh?Device=LuaUPnP
где 192.167.0.101 – ip адрес вашего контроллера.
Рис. 1. Технический лог LuaUPnP
После этого вернитесь к примеру лога, который приведен в начале статьи – какой вы выбираете?
1. Подготовительная часть. USB-флеш-накопитель и доступ по SSH
Мы будем исходить из предположения, что USB-флеш-накопитель уже подключен к файловой системе VeraLite, и если на текущий момент такого подключения нет, то вам необходимо воспользоваться рекомендациями из статьи *1. Самим плагином «dataMine graphing and logging» пользоваться необязательно, но вот иметь подключенный USB-флеш-накопитель (путь /dataMine/) необходимо.
Также понадобится SSH (Secure Shell - «безопасная оболочка») доступ к VeraLite. Если вы не знаете пароль для доступа, то в интерфейсе UI5 VeraLite или Vera3 перейдите VeraLite в пункт меню Установка / Резервное копирование, рис. 2.
Рис. 2. Добываем пароль для доступа по SSH к VeraLite, Vera3
Кликните по кнопке «Создать бэкап», полученному файлу присвойте расширение .tar (формат файла архива, а также название традиционной для Unix программы для работы с такими архивами) и открыв любым архиватором (например, WinRAR) пройдите в папку cmh. Общий вид пути выглядит следующим образом:
backup.mios2-Vera3Lite-XXXXXXXX-2015-02-10\etc\cmh
В этой папке найдите файл «cmh.conf». Открыв его любым текстовым редактором найдите строчку, начинающуюся c Password=. Значение этого атрибута и есть ваш пароль для доступа к VeraLite или Vera3 по SSH.
2. Место хранение данных «черного ящика» VeraLite или Vera3
Теперь давайте посмотрим на файловую структуру контроллера и определим место хранения лога.
Самый наглядный способ воспользоваться графическим интерфейсом программы WinSCP *2, протокол SCP (Secure Copy Protocol), рис. 3. Паролем является выясненное выше значение доступа по SSH.
Рис. 3. Настройки программы WinSCP
Используя WinSCP вы получаете привычный интерфейс, при помощи которого можно легко просмотреть интересующие файлы, рис. 4.
Рис. 4. Файловая структура VeraLite при подключении через WinSCP
Предлагаю использовать путь «/dataMine/BlackBoxLog/Vera.log» (в кодах ниже прописан именно этот путь). Вы можете использовать любой другой путь, но имейте ввиду что папка /dataMine/ это и есть ваш подключенный USB-флеш-накопитель. Рекомендую записывать лог «черного ящика» на отдельный USB-флеш-накопитель (VeraLite позволяет использовать USB-концентратор с внешним источником питания).
Если вы хотите использовать единственный USB-флеш-накопитель, то обязательно сделайте резервную копию действующего dataMine, чтобы ваши данные не пострадали в случае ошибок, как сделать резервную копию описано в статье (*1).
3. Настройки записи уведомлений
3.1. Настройка уведомлений с датчика открытия двери или окна
Для фиксирования информации с датчика открытия двери или окна (*3) создаем новую сцену на вкладке «Автоматизация», в разделе «Триггеры» отмечаем «переключатель», включающий сцену, когда необходимый датчик срабатывает, рис. 5.
Рис. 5. Создание триггера для сцены оповещения
Дальше самое важное – во вкладке «LUUP» данной сцены необходимо вставить код, который будет записывать нужную строчку в файл лога.
function FileLog(Logtext)local filelog = "/dataMine/BlackBoxLog/Vera.log"
local outf = io.open(filelog, "a")
outf:write(os.date('%Y.%m.%d, %H:%M:%S, ' .. Logtext ))
outf:write("\n")
outf:close()
end
FileLog("Сработал датчик входной двери")
После этого всё необходимо сохранить: «Сохранить Lua», «Подтвердить изменения», «СОХРАНИТЬ».
3.2. Настройка уведомлений с датчика движения или мультисенсора
Все действия аналогичны предыдущему случаю, меняется только текст уведомления (рис. 6) и триггер.
function FileLog(Logtext)local filelog = "/dataMine/BlackBoxLog/Vera.log"
local outf = io.open(filelog, "a")
outf:write(os.date('%Y.%m.%d, %H:%M:%S, ' .. Logtext ))
outf:write("\n")
outf:close()
end
FileLog("Движение на 1м этаже")
Рис. 6. Создание сцены оповещения с мультисенсора
3.3. Настройка уведомлений с выключателей и розеток
Аналогично предыдущему, можно записывать действия с выключателями и розетками (*4). Создается две сцены: одна на включение, другая на выключение розетки.
Рис. 7. Создание триггера для сцены оповещения о включении розетки
Уведомление о включении розетки, триггер на рис. 7.
function FileLog(Logtext)local filelog = "/dataMine/BlackBoxLog/Vera.log"
local outf = io.open(filelog, "a")
outf:write(os.date('%Y.%m.%d, %H:%M:%S, ' .. Logtext ))
outf:write("\n")
outf:close()
end
FileLog("HTPC socket включен")
Рис. 8. Триггер сцены оповещения о выключении розетки
Уведомление о выключении розетки, триггер на рис. 8.
function FileLog(Logtext)local filelog = "/dataMine/BlackBoxLog/Vera.log"
local outf = io.open(filelog, "a")
outf:write(os.date('%Y.%m.%d, %H:%M:%S, ' .. Logtext ))
outf:write("\n")
outf:close()
end
FileLog("HTPC socket выключен")
3.4. Создание тревожных оповещений с датчиков задымления или протечки воды
Аналогично предыдущему.
function FileLog(Logtext)local filelog = "/dataMine/BlackBoxLog/Vera.log"
local outf = io.open(filelog, "a")
outf:write(os.date('%Y.%m.%d, %H:%M:%S, ' .. Logtext ))
outf:write("\n")
outf:close()
end
FileLog("Сработал датчик протечки в кухне!")
Скачать приведенные в статье скрипты на компьютер одним файлом black box.zip
4. Важные замечания по работе с файлом «бортового самописеца»
Для того, чтобы избежать ошибок записи не открывайте и не редактируйте получившийся файл через интерфейс программы WinSCP, сначала загрузите его себе на компьютер. Для корректного просмотра файла можно использовать, например, бесплатную программу Notepad++ (*5).
5. Итоги
Маленькая бело-зеленая коробочка VeraLite умеет удивлять все новыми и новыми возможностями своего применения. VeraLite – очень гибкий контроллер, позволяющий реализовать совершенно неожиданные, но полезные вещи. В данном случае это создание «бортового самописца» вашего дома, который будет актуален, если VeraLite используется без выхода в сеть Интернет только в локальной сети. С другими способами применения контроллера можно познакомится в разделе обзоры (*6).
Ссылки, упоминаемые в статье:
*1. http://z-wave.ru/obzory/264-priumnozhenie-dannykh-v-ui5-vera.html
*2. http://winscp.net/eng/docs/lang:ru
*3. http://www.z-wave.ru/shop/category/datchiki/otkr-dveri-okna.html
*4. http://www.z-wave.ru/shop/category/ispolniteli/vyklyuchateli.html
*5. http://notepad-plus-plus.org/
*6. http://www.z-wave.ru/obzory.html
Информация актуальна на дату написания статьи: февраль 2015 года.
Автор: Михаил Шардин