Kategorie
4. díl - Konfigurace - Rules
4. díl - Konfigurace - Rules
V tomto článku se podívame na pravidla v OpenHAB 3. Pravidla nám řídí celý ekosystém akcí reagujících na různé stavy. V OpenHAB 3 lze pravidla vytvářet manuálně přes uživatelské rozhraní nebo přes soubory .rules. Pro náš modelový dům si ukážeme jak zadávat pravidlá v grafickém rohzraní Main UI. Pravidla lze i kopírovat pomocí copy-paste z jednoho do druhého nebo používat .rules soubory s větším počtem pravidel najednou.
Co budeme potřebovat:
2. díl - OpenHAB na Raspberry Pi
Rules
Pravidla - Rules naleznete v menu Settings.
Nové pravidlo založíte kliknutím na modrou ikonu + vpravo dole. Příklad pravidla si demonstrujeme na následujícím přikladu. Při odchodu z domu chceme zhasnout všechna světla, vypnout zásuvkové okruhy (např. rychlovarná konvice, různé nabíječky atd.) ale samozřejmě ponechat lednici, rekuperaci nebo topení.
V našem případě založíme pravidlo Alarm Full - All off
When
Nastavíme kdy se má pravidlo provést. V našem případě v okamžiku, kdy se změní stav Alarmu na číslo 1. Tento stav je v zobrazení položky Alarm přeložen (Add metadata -> State description) jako Full.
Then
Co se má stát. V našem případě se mají povypínat světla, zásuvky, topení atd. Přidejte tedy jednotlivé záznamy, které položky chcete povypínat.
But only if
Zde můžete ještě přidat další podmínku, že dané akce se mají provést jenom pokud je daná podmínka splněna.
Tip: V Then části Rules si samozřejmě můžete vložit vlastní skript. Buď použít blokové grafické rozhraní nebo použít kód skriptu. Za mě je nejlepší osvojit si kód. V následujícím případě si ukážeme, jak bychom řešili, kdybychom chtěli vypnout světla až po 30 vteřinách od odchodu.
V Then zvolte Add action -> Run script -> Rule DSL a přidejte něco takového:
var timer_Delay = createTimer(now.plusSeconds(30), [ |
sendCommand(L011, OFF)
sendCommand(L012, OFF)
sendCommand(L013, OFF)
] )
V našem modelovém domě Pi-Home se nachází přes 50 předpřipravených pravidel. Níže uvádíme přiklady použitých Rules. Uvedené příklady jsou vykopírováný ze záložky Code
u daného providla. Můžete přímo vzít celý kód a pomocí copy-paste vložit do vašeho Rules a pupravit dle potřeb:
Příklad pravidla tlačítka -> světla
configuration: {}
triggers:
- id: "2"
configuration:
itemName: B111
state: ON
previousState: OFF
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "1"
configuration:
type: application/vnd.openhab.dsl.rule
script: |2
if(L111.state == ON){
sendCommand(L111, OFF)
}else{
sendCommand(L111, ON)
}
type: script.ScriptAction
Příklad pravidla PIR -> světla (SP111)
configuration: {}
triggers:
- id: "1"
configuration:
itemName: SP111
type: core.ItemStateChangeTrigger
- id: "5"
configuration:
itemName: SP111
type: core.ItemStateUpdateTrigger
conditions:
- inputs: {}
id: "2"
configuration:
itemName: SP111_trigger
state: ON
operator: =
type: core.ItemStateCondition
- inputs: {}
id: "4"
configuration:
itemName: SunPhase
state: DAYLIGHT
operator: "!="
type: core.ItemStateCondition
actions:
- inputs: {}
id: "3"
configuration:
type: application/vnd.openhab.dsl.rule
script: |2
if(SP111.state == ON){
sendCommand(L111, ON)
}else{
sendCommand(L111, OFF)
}
type: script.ScriptAction
Příklad pravidla PIR -> Alarm (SP111ALARM)
configuration: {}
triggers:
- id: "1"
configuration:
itemName: SP111
state: ON
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "3"
configuration:
type: application/vnd.openhab.dsl.rule
script: |-2
if(Alarm.state == 1 || Alarm.state == 2){
sendCommand(Panic, 2)
}
type: script.ScriptAction
Přidat komentář