О Z-Wave
Новый год уже скоро, а это значит можно заняться подарками, составлением планов и другими приятными вещами. Поскольку система умного дома уже смонтирована и управляет домашним кинотеатром (*1) и кондиционерами (*2), то самое время подключить к ней … ёлку!
Рис. 1. Новогодняя гирлянда
Саму ель подключить, конечно, не удастся, но вот гирляндой (рис. 1) на ёлке управлять вполне под силу. Правда, хочется чего-нибудь более интересного, чем включение подсветки елки и гирлянды в определенное время, почему бы не начать радостно мигать? Включать и отключать одновременно гирлянду и свет или подсветку.
Рис. 2. Розеточный выключатель Everspring AN158
Рис. 3. Розеточный выключатель в интерфейсе UI5 Vera
Для управления гирляндой подойдет любой розеточный модуль Z-Wave: встраиваемый или отдельный, как, например, Everspring AN158 (*3), изображенный на рис. 2. В интерфейсе UI5 Vera любое устройство имеет свой порядковый номер, в данном случае это номер 4.
Рис. 4. Универсальный диммер FIBARO FGD-211
Рис. 5. Универсальный диммер в интерфейсе UI5 Vera
Для того чтобы задействовать управление светом подойдет распространённый универсальный диммер FIBARO FGD-211 (*4), устанавливаемый в монтажную коробку, рис. 4. Номер устройства в конкретном случае равен 10.
Рис. 6. Fibaro RGBW модуль FGRGB-101
Рис. 7. RGBW модуль в интерфейсе UI5 Vera
Если есть желание менять цвета (и вообще задействовать цвет), то стоит воспользоваться встраиваемым RGBW модулем компании Fibaro (*5), изображенном на рис. 6. Если в доме установлены светодиодные лампы на 12 вольт, то ими также управляет RGBW модуль. Номер устройства конкретного мастер-выключателя равен 75. Vera создает отдельное устройство для RGBW модуля на каждый из каналов: R, G, B, W, а также мастер-выключатель и общий уровень света.
После этого переходим к программной части интерфейса UI5 Vera. Для того, чтобы мигать всеми этими исполнительными устройствами, можно через встроенный визуальный редактор сцен указать, что именно включать и выключать, установить задержки исполнения и создать сцену. Но если есть желание мигнуть 15 раз с интервалом в 10 секунд, а задействовано более трех устройств? Придется совершить изрядное количество действий в редакторе сцен, можно просто запутаться в задержках и включениях/выключениях. Предлагается использовать другой способ – LUUP код, в котором надо указать только номера устройств, желаемое кол-во раз повторений включения/выключений и задержку между миганиями.
-- новогодняя ёлкаlocal array_dimmer = {10,75} --номера диммеров, можно перечислять через запятую {38,53,3}
local array_switch = {4} --номера выключателей, можно перечислять через запятую {4,12}
local original_status_dimmer={}
local original_status_switch={}
local counter = 15 --счетчик кол-ва значений включено/выключено, сколько раз мигнуть
local delay = 10 --задержка между включением/выключением, в секундахfunction set_dimmer(device,value)
luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget",{ newTargetValue=value },device)
endfunction set_switch(device,value)
luup.call_action("urn:upnp-org:serviceId:SwitchPower1", "SetTarget",{ newTargetValue=value },device)
endfunction blink_on()
for i, device in ipairs(array_dimmer) do
set_dimmer(device,"100")
end
for i, device in ipairs(array_switch) do
set_switch(device,"1")
end
luup.call_delay( 'blink_off', delay )
endfunction blink_off()
counter = counter-1
if counter > 0 then
for i, device in ipairs(array_dimmer) do
set_dimmer(device,"0")
end
for i, device in ipairs(array_switch) do
set_switch(device,"0")
end
luup.call_delay( 'blink_on', delay )
else
for i, device in ipairs(array_dimmer) do
set_dimmer(device,original_status_dimmer[i])
end
for i, device in ipairs(array_switch) do
set_switch(device,original_status_switch[i])
end
end
endfor i, device in ipairs(array_dimmer) do
original_status_dimmer[i] = luup.variable_get("urn:upnp-org:serviceId:Dimming1","LoadLevelStatus", device)
end
for i, device in ipairs(array_switch) do
original_status_switch[i] = luup.variable_get("urn:upnp-org:serviceId:SwitchPower1","Status", device)
endblink_off()
--z-wave.ru, Михаил Шардин
Для того чтобы избежать ошибок при копировании кода с сайта, его рекомендуется скачать в виде отдельного файла christmas tree.zip Чтобы код не отображался сплошным массивом текста, рекомендуется открывать его в текстовых редакторах с подсветкой синтаксиса языка, например, AkelPad (*6) или Notepad++ (*7), рис. 8.
Рис. 8. Код на интерпретируемом языке программирования Lua с подсвеченным синтаксисом
Для того чтобы автоматизация состоялась, необходимо создать новую сцену на контроллере Vera: вкладка «Автоматизация» / «Новая сцена», далее перейти на вкладку «LUUP» и вставить туда код, как на рис. 9. Перед вставкой кода измените номера диммеров и выключателей на ваши собственные, номера можно перечислять через запятую {4,12}. Диммеры и выключатели разнесены, поскольку управляются разными командами в коде. Обязательно нажмите «Сохранить lua» после вставки кода.
После создания сцены и подтверждения изменений, нажмите «Cохранить» в правом верхнем углу под часами. После этого можно вызывать созданную сцену с любого мобильного устройства или брелока Z-Wave. Например, в мобильном приложении AutHomationHD (*8), список сцен выглядит следующим образом, рис. 10.
Рис. 10. Список сцен в мобильном приложении AutHomationHD
Результатом применения статьи может стать еще один шаг в превращении устройств Z-Wave из простого набора микросхем в умных домашних помощников.
Ссылки, упоминаемые в статье:
*2. http://www.z-wave.ru/obzory/256-besplatnaya-pogoda-v-dome-upravlyaemom-veralite.html
*4. http://www.z-wave.ru/shop/category/ispolniteli/dimmery/universalnyj-dimmer-500-vt.html
*5. http://www.z-wave.ru/shop/category/ispolniteli/dimmery/rgbw-modul.html
*6. http://akelpad.sourceforge.net/ru/
*7. http://notepad-plus-plus.org/
*8. https://play.google.com/store/apps/details?id=com.garrettpower.authomationhd
Информация актуальна на дату написания статьи: декабрь 2014 года.
Автор: Михаил Шардин