Tämä opas esittelee Futurehomen kehittäjäsääntömoottorin perusteet.
Jotta voit käyttää TP Flow -sääntömoottoria, sinun on asennettava Thingsplex ja TP Flow Futurehome-sovelluskaupasta. Asenna se tämän ohjeen mukaisesti.
Varoitus: Sääntömoottori on erittäin tehokas työkalu. Käytä sitä varoen, koska se voi jumittaa järjestelmän, jos sitä käytetään väärin silmukoiden tai vastaavien toimintojen kanssa.
Alla olevassa esimerkissä luomme esimerkkivirtauksen, joka käyttää Z-Wave-tilanteita pikanäppäimen käynnistämiseen.
Luo uusi virtaus
Anna sopiva nimi ja kuvaus. Jos haluat virtauksen olevan osa tiettyä virtausryhmää, lisää kategorialle sopiva nimi tai käytä olemassa olevaa ryhmän nimeä.
Yllä olevassa kuvassa näet uuden virtauksen alkuvaiheen. Tyhjää käynnistysvirtauskorttia voi muokata napsauttamalla.
Valitse huone, johon laite on asetettu, valitse laite ja sitten scene_ctrl -toiminto ja evt.scene.report.
Esimerkissä käyttämämme laite on Heatit-painike 2. Siinä on kaksi tilannetta, Tilanne 1 painikkeelle 1 ja Tilanne 2 painikkeelle 2. Haluamme luoda virtauksen, joka tekee jotain molempien painikkeiden perusteella.
Seuraavaksi luodaan IF-lause.
Muokkaa IF-lausetta napsauttamalla sitä.
Anna sopiva nimi, valitse tietotyypiksi merkkijono (string) ja syötä "1.0" tilanteelle 1.
Jos et ole varma laitteesta ja tilannenumeron muodosta, voit käynnistää tilanteen painamalla fyysistä painiketta. Tarkista sitten viestin muoto Thingsplexin viestivirrasta.
Ensimmäisen tilanteen IF-lause kloonattiin, koska haluamme määrittää myös toisen painikkeen toiminnan. Toiseen painikkeeseen muutamme nimen ja tulon tilanteelle 2.0, joka koskee painiketta 2.
Liitä sitten virtaukset yhteen yhdistämällä vihreä piste, joka on lähtö, siniseen pisteeseen, joka on IF-lausevirtauksen tulo. Yhdistä myös viiva IF-lauseen keltaisesta pisteestä. Tämä on virtausreitti, jos IF-lause ei täyty. Yhdistä se seuraavan IF-lauseen tuloon, joka on Tilanne 2.0.
Seuraavassa vaiheessa luomme toiminnon, eli mitä tapahtuu lähetetyn tilannetyypin perusteella. Esimerkissä Tilanne 1 käynnistää pikanäppäimen ja Tilanne 2 asettaa tilan.
Ensin lisätään ensimmäinen toiminto, joka on Tilat ja pikanäppäimet -toiminto.
Valitsemme toiminnon, syötämme nimen, valitsemme pikanäppäimen ja valitsemme sitten sen pikanäppäimen, jonka haluamme käynnistää, kun Tilanne 1.0 lähetetään. Lopuksi kopioimme toiminnon määrittääksemme toiminnon Tilanteelle 2.0.
Tilanteen 2.0 toiminnoksi haluamme asettaa Uni-tilan. Valitse toiminto käynnistystilaan, anna nimi ja sulje ikkuna.
Lopuksi yhdistetään virtaukset IF-lauseesta toimintoihin.
Nyt meillä on virtaus, joka joko käynnistää pikanäppäimen tai asettaa tilan riippuen siitä, mikä tilanne langattomalla Heatit-painikkeella käynnistetään.
Virtauksen yleiskuvassa näkyy nyt luotu virtaus ja sen tietoja.
Tietojen mukaan se on suoritettu 0 kertaa. Painetaan nyt painiketta.
Painikkeen painamisen jälkeen tiedoissa näkyy, että virtaus on suoritettu yhden kerran.
Tässä on luomamme virtaus, jonka voit tuoda Thingsplex Flow -editorin tuontitoiminnolla.
{
"Id": "NuCRKTdH7y4aX6x",
"ClassId": "NuCRKTdH7y4aX6x",
"Author": "",
"Version": 0,
"CreatedAt": "2019-10-08T10:15:52.465761518+02:00",
"UpdatedAt": "2019-10-08T10:15:52.465761518+02:00",
"Name": "Shortcut button",
"Group": "",
"Description": "Shortcut - scene trigger",
"Nodes": [
{
"Id": "1",
"Type": "trigger",
"Label": "Heatit push button scene",
"SuccessTransition": "2",
"TimeoutTransition": "",
"ErrorTransition": "",
"Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:scene_ctrl/ad:155_0",
"Service": "scene_ctrl",
"ServiceInterface": "evt.scene.report",
"Config": {
"InputVariableType": "",
"IsValueFilterEnabled": false,
"LookupServiceNameAndLocation": false,
"RegisterAsVirtualService": false,
"Timeout": 0,
"ValueFilter": {
"Value": null,
"ValueType": "string"
},
"ValueJPath": "",
"ValueJPathResultType": "",
"VirtualServiceGroup": "",
"VirtualServiceProps": null
},
"Ui": {
"nodeType": "",
"x": 70,
"y": 170
}
},
{
"Id": "2",
"Type": "if",
"Label": "Scene 1.0",
"SuccessTransition": "",
"TimeoutTransition": "",
"ErrorTransition": "",
"Address": "",
"Service": "",
"ServiceInterface": "",
"Config": {
"Expression": [
{
"BooleanOperator": "",
"LeftVariableIsGlobal": false,
"LeftVariableName": "",
"Operand": "eq",
"RightVariable": {
"Value": "1.0",
"ValueType": "string"
}
}
],
"FalseTransition": "3",
"TrueTransition": "4"
},
"Ui": {
"nodeType": "",
"x": 48,
"y": 343
}
},
{
"Id": "3",
"Type": "if",
"Label": "Scene 2.0",
"SuccessTransition": "",
"TimeoutTransition": "",
"ErrorTransition": "",
"Address": "",
"Service": "",
"ServiceInterface": "",
"Config": {
"Expression": [
{
"BooleanOperator": "",
"LeftVariableIsGlobal": false,
"LeftVariableName": "",
"Operand": "eq",
"RightVariable": {
"Value": "2.0",
"ValueType": "string"
}
}
],
"FalseTransition": "",
"TrueTransition": "5"
},
"Ui": {
"nodeType": "",
"x": 259,
"y": 341
}
},
{
"Id": "4",
"Type": "action",
"Label": "Trigger kveldskos",
"SuccessTransition": "",
"TimeoutTransition": "",
"ErrorTransition": "",
"Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad: 1",
"Service": "vinculum",
"ServiceInterface": "cmd.pd7.request",
"Config": {
"DefaultValue": {
"Value": {
"cmd": "set",
"component": "shortcut",
"id": 5,
"param": {},
"requestId": 1
},
"ValueType": "object"
},
"IsVariableGlobal": false,
"Props": {},
"RegisterAsVirtualService": false,
"ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
"VariableName": "",
"VirtualServiceGroup": "",
"VirtualServiceProps": {}
},
"Ui": {
"nodeType": "vinc_action",
"x": 99,
"y": 533
}
},
{
"Id": "5",
"Type": "action",
"Label": "Set sleep mode",
"SuccessTransition": "",
"TimeoutTransition": "",
"ErrorTransition": "",
"Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
"Service": "vinculum",
"ServiceInterface": "cmd.pd7.request",
"Config": {
"DefaultValue": {
"Value": {
"cmd": "set",
"component": "mode",
"id": "sleep",
"param": {},
"requestId": 1
},
"ValueType": "object"
},
"IsVariableGlobal": false,
"Props": {},
"RegisterAsVirtualService": false,
"ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
"VariableName": "",
"VirtualServiceGroup": "",
"VirtualServiceProps": {}
},
"Ui": {
"nodeType": "vinc_action",
"x": 329,
"y": 533
}
}
]
}
Tuo se seuraavasti:
Thingsplex-virtausmoottori on tehokas sääntömoottori, joka tarjoaa monia mahdollisuuksia. Dokumentaatio kehittyy edelleen ajan myötä – sillä välin rohkaisemme kaikkia kehittäjiä ja kekseliäitä tyyppejä aloittamaan kokeilemisen ja tutustumaan virtausmoottoriin tarkemmin.
Kommentit
0 kommenttia
Kirjaudu sisään jättääksesi kommentin.