OBSAH

Úvod

Akce mohou být spouštěny automaticky (poté, co dojde ke splnění podmínky spouštění a jsou splněny další podmínky scény) nebo ručně. Poté, co v systému dojde k události (např. zapnutí zařízení), scéna zkontroluje spouštěče. Dále jsou zkontrolovány všechny podmínky s logickými operátory, které se k nim připojují. Jedna podmínka může vypadat takto: 

{
    type = "device",
    id = 25,
    property = "value",
    operator = "==",
    value = true,
    duration = 20,
    isTrigger = true
}


Popis jednotlivých polí:

  • type - Typ události v systému, na který scéna čeká.
  • id - Volitelné pole závislé na typu podmínky a může být interpretováno i jinak.
  • property - Vlastnost, na kterou scéna čeká na změnu.
  • operator - Možnost porovnání současné žádané hodnoty dané vlastnosti a skutečné.
  • value - Hodnota vlastnosti, kterou scéna očekává.
  • duration - V sekundách jak dlouho se musí hodnota dané vlastnosti shodovat pro spuštění akce. Výchozí hodnota duration je 0.
  • isTrigger - Definuje, zda je daná podmínka i spouštěčem scény. Může nabývat pouze hodnot True a False.

Scény s více podmínkami

Spouštěče scén a podmínky mohou být uloženy v řetězci za sebou.

{
    operator = "any",
    conditions = {
        {
            type = "device",
            id = 25,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            type = "device",
            id = 26,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = false
        }
    }
}

První podmínka se zařízením s ID 25 je spouštěč scény. Druhá podmínka se zařízením s ID 26 je pouze podmínka.


Pro řetězení podmínek je nutné použít pole operator. Toto polo může nabývat pouze dvou hodnot.

  • Hodnota all - Všechny podmínky scény musí být splněny
  • Hodnota any - Alespoň jedna z podmínek musí být splněna

Podmínky se mohou propojovat dohromady

{
    operator = "all",
    conditions = {
        {
            type = "device",
            id = 25,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            operator = "any",
            conditions = {
                {
                    type = "device",
                    id = 26,
                    property = "value",
                    operator = "==",
                    value = true,
                    isTrigger = true
                },
                {
                    type = "device",
                    id = 27,
                    property = "value",
                    operator = "==",
                    value = true,
                    isTrigger = true
                }
            }
        }
    }
}

Výše uvedený příklad spustí scénu, pokud se vlastnost "value" změní na true pro zařízení s ID 25 a pro alespoň jedno ze zařízení s ID 26 nebo 27.


Spouštěče vs podmínky

Rozlišení mezi spouštěči a podmínkami se provádí vhodným nastavením pole isTrigger, pokud pole není nastaveno, má ve výchozím nastavení hodnotu false.

  • Spoštěč (isTrigger nastaven na true) - událost v systému, přesně specifikovaná ve scéně, která kontroluje zbývající podmínky scény.     
  • Podmínka (isTrigger nastaven na hodnotu false nebo není nastaven) – faktor, na kterém závisí provedení akce. 
{
    operator = "any",
    conditions = {
        {
            type = "device",
            id = 25,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            type = "device",
            id = 26,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = false
        }
    }
}

První podmínka se zařízením s ID 25 je spouštěč scény, zatímco druhá podmínka pro zařízením s ID 26 je pouze podmínkou. To znamená, že pokud dojde k události, která změní vlastnost "value" zařízení 25 na true, stejná událost spustí kontrolu všech spouštěčů použitých ve scénách. Teprve když je splněn spouštěč (jako ve výše uvedené scéně), jsou kontrolovány další podmínky (isTrigger = false). Kontrola podmínky znamená kontrolu, že pro zařízení 26 je vlastnost "value" nastavena na hodnotu true. Pokud ano, pak byly splněny všechny podmínky výše uvedené scény (spouštěč + podmínka) a akce může být provedena.

Může také nastat situace, kdy se vlastnost "value" změní na true pro zařízení 26. Tato situace také vygeneruje událost změny hodnoty hodnoty pro dané zařízení. Protože však podmínka pro zařízení 26 není spouštěcí událost, podmínky scény nebudou kontrolovány (i když vlastnost "value" v zařízení 25 byla dříve nastavena na hodnotu true).


Typy spouštěčů a podmínek

Následující kapitola se zaměřuje na téměř všechny typy spouštěčů a podmínek.

Zařízení

Pro podmínky typu zařízení je interpretace polí následující:

  • type: device -- Chceme zařízení.
  • id: x -- x = ID zařízení.
  • property: y --  y = vlastnost, kterou chceme porovnávat. Nejčastěji se používá value nebo dead.
  • operator: z -- operátor závisí na typu, viz tabulka níže.
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti zařízení spouštěčem. scény nebo ne.
  • duration: a -- a = hodnota doby v sekundách, po kterou musí podmínka platit

Tabulka operátorů

Textová hodnota"==" -- Porovnávaný text je stejný jako skutečný
"!=" -- Porovnávaný text není stejný jako skutečný
"anyValue" -- Text je jakýkoliv
Číselná hodnota"==" -- Hodnoty jsou stejné
"!=" -- Hodnoty nejsou stejné
">" -- Hodnota je větší než
">=" -- Hodnota je větší nebo stejná jako
"<" -- Hodnota je menší jako
"<=" -- Hodnota je menší nebo stejná jako
"anyValue" -- Hodnota je jakákoliv
Logická hodnota"==" -- Hodnoty jsou stejné
"!=" -- Hodnoty nejsou stejné

Příklady

Spuštění zařízení, pokud je hodnota vlastnosti value v zařízení s ID 30 větší než 25.

{ 
    type = "device",
    id = 30,
    property = "value", 
    operator = ">", 
    value = 25,
    isTrigger = true
}

Spuštění scény pokud je hodnota zařízení s ID 30 true po dobu 20 sekund.

{
    type = "device",
    id = 30,
    property = "state", 
    operator = "==", 
    value = true,
    duration = 20,
    isTrigger = true
}

Spouštění scény, pokud na zařízení s ID 30 přijde jakákoliv hodnota.

{ 
    type = "device",
    id = 30,
    property = "value", 
    operator = "anyValue",
    isTrigger = true
}


Datum a čas

Pro datum a čas je interpretace polí následující

  • type: "date" -- datum a čas
  • property: "cron" -- Jediná vlastnost, kterou lze použít pro datum a čas
  • value: -- časové hodnoty se zadávají v řetězci v tomto pořadí:
    • Minuta -- lze nabýt hodnoty 0 - 59
    • Hodina -- lze nabýt hodnoty 0 - 23
    • Den v měsíci -- lze nabýt hodnoty 1 - 12
    • Měsíc -- lze nabýt hodnoty 1 - 12
    • rok -- jako textová hodnota (např. "2022")
  • Operátor: -- Různé typy
    • "match" -- reálné datum je shodné s tím v podmínce. V tomto případě se dá použít "*" ve value, což je v jakýkoliv čas
    • "match==" -- porovnávaný a reálný čas musí být stejný
    • "match!=" -- porovnávaný a reálný čas nesmí být stejný
    • "match>" -- reálné datum musí být později než porovnávané
    • "match>=" -- reálné datum musí být později nebo stejné než porovnávané
    • "match<" -- reálné datum musí být dříve než porovnávané
    • "match<=" -- reálné datum musí být dříve nebo stejné než porovnávané
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti zařízení spouštěčem. scény nebo ne. Pozor u spouštěče scény, jelikož se podmínka porovnává každou minutu.

Příklady

Každý den v 15:30.

{
    type = "date",
    property = "cron",
    operator = "match",
    value = {"30", "15", "*", "*", "*", "*"},
    isTrigger = true
}


13. 6. 2018 v 15:30.

{
    type = "date",
    property = "cron",
    operator = "match",
    value = {"30", "12", "13", "6", "1", "2018"},
    isTrigger = true
}


Každé Pondělí a Středu v 15:30.

{
    type = "date",
    property = "cron",
    operator = "match",
    value = {"30", "15", "*", "*", "1,3", "*"},
    isTrigger = true
}


každé Pondělí, Středu a Pátek.

{
    type = "date",
    property = "cron",
    operator = "match",
    value = {"*", "*", "*", "*", "1,3,5", "*"},
    isTrigger = true
}


Každý 25. den v měsíci.

{
    type = "date",
    property = "cron",
    operator = "match",
    value = {"*", "*", "25", "*", "*","*"}
    isTrigger = true
}


Interval

Pro intervaly je interpretace polí následující:

  • type: "date" -- datum a čas
  • property: "cron" -- Jediná vlastnost, kterou lze použít pro datum a čas
  • value: -- skládá se ze dvou polí:
    • date: -- Datum
    • Minuta -- lze nabýt hodnoty 0 - 59
    • Hodina -- lze nabýt hodnoty 0 - 23
    • Den v měsíci -- lze nabýt hodnoty 1 - 12
    • Měsíc -- lze nabýt hodnoty 1 - 12
    • rok -- jako textová hodnota (např. "2022")
    • Interval: -- V sekundách interval po jakém se spuštění scény bude opakovat
  • Operátor: "matchInterval"
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti zařízení spouštěčem. scény nebo ne. Pozor u spouštěče scény, jelikož se podmínka porovnává každou minutu.

Příklady

Každých 5 minut a začátek je 5. 4. 2019 ve 12:00

{
    type = "date",
    property = "cron",
    operator = "matchInterval",
    value = {
        date = { "0", "12", "5", "4", "*", "2019" },
        interval = 300
    },
    isTrigger = true
}

Počasí

Pro počasí je interpretace polí následující:

  • type: "weather" -- počasí
  • property: -- jedna z následujících hodnot
    • "temperature" -- teplota
    • "humidity" -- vlhkost
    • "wind" -- rychlost větru
    • "weatherConditions" -- povětrnostní podmínky
  • value: -- Záleží na property v bodě výše
    • U "humidity" jde o číselnou hodnotu od 0-100
    • U "temperature" a "wind" jde o číselnou proměnnou
      ⚠️ UPOZORNĚNÍ: Pozor na jendotky nastavené v řídicí jednotce. Pokud po vytvoření scény budou jednotky změněny, tak je nutné je změnit i ve scéně. Číselné hodnoty nejsou automaticky přepočítávány.
    • U "weatherConditions" jde o text a hodnoty mohou nabývat následujících hodnot:
      • "cloudy" (zataženo), "rain" (déšť), "snow" (sníh), "storm" (bouře), "clear" (jasno), "fog" (mlha) nebo "unavailable" (nedostpuné)
  • Operator: -- Záleží na "propery" a "value" v bodech výše. Viz tabulka níže
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti spouštěčem scény nebo ne.

Tabulka operátorů

Textová hodnota"==" -- Porovnávaný text je stejný jako skutečný
"!=" -- Porovnávaný text není stejný jako skutečný
"anyValue" -- Text je jakýkoliv
Číselná hodnota"==" -- Hodnoty jsou stejné
"!=" -- Hodnoty nejsou stejné
">" -- Hodnota je větší než
">=" -- Hodnota je větší nebo stejná jako
"<" -- Hodnota je menší jako
"<=" -- Hodnota je menší nebo stejná jako
"anyValue" -- Hodnota je jakákoliv

Příklady

Pravda, pokud je teplota menší než 20 °C nebo 20 °F.

{
    type = "weather",
    property = "Temperature",
    operator = "<",
    value = 20,
    isTrigger = true
}


Pravda, pokud je vítr větší než 15 km/h nebo 15 mph.

{
    type = "weather",
    property = "Wind",
    operator = ">",
    value = 15,
    isTrigger = true
}


Pravda, pokud zataženo.

{
    type = "weather",
    property = "WeatherCondition",
    operator = "==",
    value = "cloudy",
    isTrigger = true
}


Pravda, pokud vlhkost stoupne nad 80%

{
    type = "weather",
    property = "Humidity",
    operator = ">",
    value = 80,
    isTrigger = true
}

Události

Pro události je interpretace polí následující:

  • type: "custom-event" -- událost/makro
  • property: -- textový název události
  • isTrigger: true

Příklad

Pravda, pokud nastane událost Horizon.

{
    type = "custom-event",
    property = "Horizon",
    operator = "==",
    isTrigger = true
}

Alarmy

Pro alarm je interpretace polí následující:

  • type: "alarm"-- Alarm/EZS
  • id: x -- x = ID zóny Alarmu/EZS. Je nutné pouze pokud hodnota property (bod níže) je armed nebo breached.
  • property: jedna z následujících hodnot:
    • "Breached" -- Zda je zóna narušena.
    • "Armed" -- Zda je zóna zastřežena.
    • "homeArmed" -- Zda je celý dům zastřežen.
    • "homeBreached" -- Zda je celý dům narušen.
  • operator: Závisí na typu. Možné hodnoty:
    • "==" -- Hodnoty jsou stejné.
    • "!=" -- Hodnoty jsou rozdílné.
    • "anyValue" -- Hodnoty jsou jakékoliv.
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti spouštěčem scény nebo ne.

Příklady

Pravda, pokud je zóna jedna zastřežena:

{
    type = "alarm",
    property = "armed",
    id = 1,
    operator = "==",
    value = true,
    isTrigger = true
}


Pravda, pokud je zóna 1 odstřežena

{
    type = "alarm",
    property = "armed",
    id = 1,
    operator = "==",
    value = false,
    isTrigger = true
}


Pravda, pokud je zóna 1 narušena

{

    type = "alarm",
    property = "breached",
    id = 1,
    operator = "==",
    value = true,
    isTrigger = true
}


Pravda, pokud je celý dům odstřežen

{
    type = "alarm",
    property = "homeBreached",
    operator = "==",
    value = false,
    isTrigger = true
}


Profily

Pro profily je interpretace polí následující:

  • type: "profile"-- Profil
  • id: x -- x = ID profilu
  • property: "active-profile" -- aktivní profil
  • operator: Závisí na typu. Možné hodnoty:
    • "==" -- Hodnoty jsou stejné.
    • "!=" -- Hodnoty jsou rozdílné.
    • "anyValue" -- Hodnoty jsou jakékoliv.
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti spouštěčem scény nebo ne.

Příklad

Pravda, pokud profil 1 je aktivní

{
    type = "profile",
    property = "activeProfile",
    operator = "==",
    value = 1,
    isTrigger = true
}

Start jednotky

Pro start jednotky je interpretace polí následující:

  • type: "se-start"-- Profil
  • property: "start" -- aktivní profil
  • value: True
  • operator: Závisí na typu. Možné hodnoty:
    • "==" -- Hodnoty jsou stejné.
    • "!=" -- Hodnoty jsou rozdílné.
  • isTrigger: w -- w = hodnota true nebo false. Závisí, zda má být porovnávaná hodnota vlastnosti spouštěčem scény nebo ne.

Příklad

Spuštění scény po startu jednotky

{
    type = "se-start",
    property = "start",
    operator = "==",
    value = true,
    isTrigger = true
}