TP Flow – Futurehomen sääntömoottori

  • Päivitetty

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.

mceclip0.png

 

Alla olevassa esimerkissä luomme esimerkkivirtauksen, joka käyttää Z-Wave-tilanteita pikanäppäimen käynnistämiseen.

Luo uusi virtaus

mceclip1.png

Anna sopiva nimi ja kuvaus. Jos haluat virtauksen olevan osa tiettyä virtausryhmää, lisää kategorialle sopiva nimi tai käytä olemassa olevaa ryhmän nimeä.

mceclip2.png

Yllä olevassa kuvassa näet uuden virtauksen alkuvaiheen. Tyhjää käynnistysvirtauskorttia voi muokata napsauttamalla.

mceclip3.png

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.
Ideaboard_-_2019-10-08T104351.415.jpg

Muokkaa IF-lausetta napsauttamalla sitä.

mceclip4.png

Anna sopiva nimi, valitse tietotyypiksi merkkijono (string) ja syötä "1.0" tilanteelle 1.

Ideaboard_-_2019-10-08T104813.805.jpg

Jos et ole varma laitteesta ja tilannenumeron muodosta, voit käynnistää tilanteen painamalla fyysistä painiketta. Tarkista sitten viestin muoto Thingsplexin viestivirrasta.Ideaboard_-_2019-10-08T105158.754.jpg

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.

mceclip6.png

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.

mceclip7.png

 

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.

Ideaboard_-_2019-10-08T110223.309.jpg

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.

Ideaboard_-_2019-10-08T110626.645.jpg

Tilanteen 2.0 toiminnoksi haluamme asettaa Uni-tilan. Valitse toiminto käynnistystilaan, anna nimi ja sulje ikkuna.

Ideaboard_-_2019-10-08T111154.343.jpg

Lopuksi yhdistetään virtaukset IF-lauseesta toimintoihin.

Ideaboard_-_2019-10-08T111612.325.jpg

Nyt meillä on virtaus, joka joko käynnistää pikanäppäimen tai asettaa tilan riippuen siitä, mikä tilanne langattomalla Heatit-painikkeella käynnistetään.

Ideaboard_-_2019-10-08T111804.303.jpg

Virtauksen yleiskuvassa näkyy nyt luotu virtaus ja sen tietoja.

mceclip8.png

Tietojen mukaan se on suoritettu 0 kertaa. Painetaan nyt painiketta.

mceclip9.png

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:

Ideaboard_-_2019-10-08T112906.921.jpg

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.

 

Oliko tämä artikkeli hyödyllinen?

5/6 koki tästä olevan apua

Lisäkysymyksiä? Lähetä pyyntö

Kommentit

0 kommenttia

Kirjaudu sisään jättääksesi kommentin.