Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Едно от менютата на Tasmota предлага таймери. Шестнадесет на брой, което считам за плюс спрямо конкурентни firmware за ESP микро-контролери.

Селекторът на падащия лист предлага: включване, изключване, превключване (тригер) по зададено време и изпълнение на правило. Ако добавите GPS модул към вашия ESP, Tasmota ще синхронизира времето от спътник и гарантирано ще изпълнява вашите заявки според изгрева и залеза на точното ви местоположение.

Спазвате ли шабат без съмнение това е в 10-ката, като маркирате само Fri и Sunset в отделен таймер.

Първи таймер на осветлението в всяка стая съм задал всеки ден в 23:00ч, да изключва. Заспивам вечер и много е дразнещо, да се събудиш от забравено осветление. Tasmota ме освободи от това бреме.

Tasmota таймер меню

XYD558 е името на малък светодиоден абажур, когото доработих. Плавно светва и плавно изгасва, а после направих умен. Досещате се, че втора позиция на настроен таймер е часът сутрин, когато абажура "изгрява".

С подобни благини бързо се свиква и след време преставате, да им обръщате внимание. Те вече са част от вашия живот. Минава време и става ясно, че това не е достатъчно. 16 твърдо зададени възможности е повече от нищо, но в живота случаи всякакви. Липсата на седемнадесети и до неограничен брой е първата липса, която се забелязва. Липсата на контрол извън локалната ви мрежа, да ако се пренасочи порт 80 в рутера ви решава проблема, но не е елегантно. Големият минус лъсва, ако обстоятелствата променят рутината на ежедневието ви и вместо да се излежите, както сте решили, Tasmota робски изпълни волята ви, включвайки отново сутрин абажура. Но не, всичко това може да се прежали. Генералният минус е липсата на варианти.

Развръзката на този казус ви отвежда пред портите на open Home Automation Bus. Чрез него ръцете ви се развързват, като наплодите n-количество правила (rules). И екзотиката на тези правила са по силата на Quartz Cron таймер, където лимит е само вашата фантазия. Например, абажура да се включи всеки трети петък от месеца след 17:30 за 20 секунди.

Нека разгледаме по-лек пример. Включване всяка сутрин в 6:30 за определен период от време и по изтичането му да изключи консуматор. Освен с абажура сутрин така съм постъпил и с бойлера. 10мин преди събуждане се включва, нагрява 15мин, след което изключва. Абажурът изгрява, отправя ме в банята, къпя се и с напускане на стаята абажурът се гаси сам. По немски, тик-так тик-так, 30мин тоалет до катапулта към поредния ден на живота.

Tasmota общува с openHAB, чрез брокер Mosquitto на MQTT сървъра и това води до съответната й настройка.

Tasmota MQTT меню

Не е нужно да си гений и за себе си реших, че името на контролера ще съвпада с името на клиента (Client), а още и на темаta (Topic).

Topic: XYD558

В такъв случай брокерът ще приема/изпраща следните публикации в тема XYD558.

stat/XYD558/POWER = ON
stat/XYD558/POWER = OFF

Публикация ON в тема XYD558 говори сама за себе си - включи, съответно се досещате - изключи. За да не става "кръстосан огън" с други контролери от мрежата името на темата е уникално.

Пренасяме се в openHAB. Там създаваме два елемента (items).
// items
Switch xydPower "Вкл" {channel="mqtt:topic:lustra:switch"}
Switch ledXYD_auto  "Кварц таймер"

И визуализацията им в картата изглежда така.

items

На елемент Бюро не обръщайте внимание. Това е настолна лампа на бюрото ми.

Елемент XYD558 абажур е виртуален ключ на абажура. Той тъпо включва или изключва осветителното тяло. Елемент XYD558 авто е логически ключ, чиято роля се изяснява по-надолу.

Създаваме съответните вещи (things).
// things
Thing mqtt:topic:lustra "LED абажур" (mqtt:broker:644a0a87)
  {Channels: // Вкл XYD558
    Type switch : switch "Power"
     [ stateTopic="stat/XYD558/POWER", commandTopic="cmnd/XYD558/POWER" ]}
И тук започват големите мазоли с малките хемороиди. Парадигмата на openHAB е такава, че за да заработи брокера, елементите се свързват с вещите, чрез канали. Често за начинаещи това е китайска стена и абдикират към по-лесни системи за умен дом. Само от вас зависи.

Продължаваме по реда.
Извеждаме елементите в картата. Картата е снимката горе с визуализацията. Финалът на вашия труд. Тук кичим иконки, задаваме крайни имена, стил и все такива, което ще "изплюе" сървърът при обръщение към адреса на openHAB.
// sitemap
Text label="Спалня" icon="bedroom"{
 Switch item=xydPower label="XYD558 абажур" icon="poweroutlet" 
 Switch item=ledXYD_auto label="XYD558 авто" }

За финал остана, да разгледаме логическата част. Правилото (Rule).

// rule
rule "Вкл всеки ден в 06:30"
when
   Time cron "0 30 6 1/1 * ? *"  
then
  if(xydPower.state == OFF && ledXYD_auto.state == ON){
 xydPower.sendCommand(ON)
 createTimer(now.plusSeconds(45))[|xydPower.sendCommand(OFF)]}
end
Правилото започва с ключова дума rule и продължава с джокер в кавички. Това е осведомителна част един вид. Следва when. Тази част слухти за конкретно събитие в системата. На трета позиция идва then, съдържащо самата логика и на финала застава end.

0 30 6 1/1 * ? * e регулярен израз на Quartz Cron. Когато настъпи това събитие логиката влиза в ход. Ако в 06:30 абажурът е изключен и логическият ключ включен ( true AND true ) openHAB ще включи абажура по каналите на брокера, като публикува ON в съответната тема. Ако условието в if е false - остатъка до края се игнорира.

Абажурът светва и едновременно стартира таймер с зададени 45сек. Просто пример. Сменете на функция plusMinites(45) и имате в минути. Съответно предаденото число е вашето време в секунди/минути. След изтичане на зададеното време, openHAB изстрелва последна команда sendCommand(OFF) към елемент xydPower. Той на свой ред гасне.

Положението на елемент ledXYD_auto.state определя изпълнението на правилото. openHAB 2 е глобално достъпен, а това ви дава възможност, да включвате или да изключвате правилото само с един клик. Да, правилото може да се опрости, като се генерира нов Quartz Cron, който да не включва в неделя, но случай всякакви.

Това е всичко в тази интересна среща за първо правило в умния дом.

И разбира се може да надстроите логиката, като напишете друго ново правило до първото, а това Tasmota няма как да догони.





до нови срещи   ^.^
25 юни 2020 profruit 

0 Response to "Quartz Cron таймер в openHAB 2"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога