Flow med flere kriterier

Hei. Jeg prøvde meg på å lage en litt mer avansert flow i Thingsplex med kriterie #2 for å aktivere lys i gang. Den ser ikke ut til å fungere, mulig det er en liten feil i hvordan jeg har satt dette sammen. Prøvde å sette opp dette ved bevegelse i rommet etter klokken 15:00. Har også en flow hvor dørsensor aktiverer lyset da inngangsdør er i blindsone for bevegelse. Kan legge ut source fila her om det

{
  "Id": "KQIG0Z1v5s8lGzK",
  "ClassId": "KQIG0Z1v5s8lGzK",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2021-01-07T19:48:16.715801409+01:00",
  "UpdatedAt": "2021-01-07T22:16:50.794483382+01:00",
  "Name": "dør åpnet  i gang etter klokken 15:00",
  "Group": "sensor_contact",
  "Description": "Spotter slås 45 og etter 15 min spotter slås av",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "dør åpnet  i gang",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_contact/ad:28_0",
      "Service": "sensor_contact",
      "ServiceInterface": "evt.open.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 206,
        "y": 184
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "if",
      "Label": "og modusen er home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "3"
      },
      "Ui": {
        "nodeType": "",
        "x": 158,
        "y": 360
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "3",
      "Type": "iftime",
      "Label": "klokkeslett",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "1"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "2"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "3"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "4"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "5"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "6"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "0"
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 156,
        "y": 540
      },
      "TypeAlias": "Time filter"
    },
    {
      "Id": "4",
      "Type": "action",
      "Label": "",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 45,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 601,
        "y": 367
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "5",
      "Type": "wait",
      "Label": "og etter 15 minutter",
      "SuccessTransition": "6",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 900000,
      "Ui": {
        "nodeType": "",
        "x": 564,
        "y": 562
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "spotter slås av",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": false,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 897,
        "y": 572
      },
      "TypeAlias": "Action"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}
{
  "Id": "mznu3t3848WOZuz",
  "ClassId": "mznu3t3848WOZuz",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2021-01-07T20:06:56.91817644+01:00",
  "UpdatedAt": "2021-01-07T21:33:50.941483495+01:00",
  "Name": "når bevegelse er oppdaget  i gang etter klokken 15:00",
  "Group": "sensor_motion",
  "Description": "spotter slås 45 og etter 15 minutter spotter slås av ",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "når bevegelse er oppdaget  i gang",
      "SuccessTransition": "7",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_presence/ad:41_0",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 186,
        "y": 218
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "5",
      "Type": "wait",
      "Label": "og etter 15 minutter",
      "SuccessTransition": "6",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 900000,
      "Ui": {
        "nodeType": "",
        "x": 706,
        "y": 389
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "spotter slås av",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": false,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 701,
        "y": 566
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "7",
      "Type": "if",
      "Label": "og modusen er home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "8"
      },
      "Ui": {
        "nodeType": "",
        "x": 203,
        "y": 392
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "8",
      "Type": "iftime",
      "Label": "Klokken 15:00",
      "SuccessTransition": "10",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "1"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "2"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "3"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "4"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "5"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "6"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "0"
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 228,
        "y": 582
      },
      "TypeAlias": "Time filter"
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "spotter slås 45",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 45,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 712,
        "y": 219
      },
      "TypeAlias": "Action"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Kan det være tredje siste linje som er problemet? IsDisabled": True? Burde vel være False?

Du kan for øvrig ha to triggere i en flow, både bevegelsessensoren og dørsensoren. Begge disse kan så linkes videre til din IF-statement om home mode er aktiv.

Du bør også på egenskapene dine sette opp at kun siste instans av flow skal kjøre, dvs de tidligere skal termineres. Da vil den telle ned 45 minutter fra siste bevegelse og du får ikke en mengde flower som kjører samtidig og teller ned… Dette kan du konfigurere inne på Edit flow der du angi navn etc (øverst i FLOW UI)

Lykke til

1 Like

Flott!

Takk for bra input, skal teste ut dine forslag.

Tommel opp!

1 Like

Grunnet tredje nederste linje er satt til “IsDisabled” = true er for den virket ikke slik jeg ønsket og derfor deaktiverte jeg den. Har prøvd å aktivere igjen og lagt til en ny trigger i parallell som er for dør sensor.
Endret hele flowen til å utføre: Keep new instance and abort already running inst.

Ser ikke ut til at denne flowen virker. Legger ved source under i ny kommentar.

{
  "Id": "mznu3t3848WOZuz",
  "ClassId": "mznu3t3848WOZuz",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2021-01-07T20:06:56.91817644+01:00",
  "UpdatedAt": "2021-02-02T15:13:27.380706547+01:00",
  "Name": "Lys i gang etter kl: 15:00",
  "Group": "sensor_motion",
  "Description": "spotter slås 45 og etter 15 minutter spotter slås av ",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "når bevegelse er oppdaget  i gang",
      "SuccessTransition": "7",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_presence/ad:41_0",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 429,
        "y": 209
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "5",
      "Type": "wait",
      "Label": "og etter 15 minutter",
      "SuccessTransition": "6",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 900000,
      "Ui": {
        "nodeType": "",
        "x": 706,
        "y": 389
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "spotter slås av",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": false,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 701,
        "y": 566
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "7",
      "Type": "if",
      "Label": "og modusen er home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "8"
      },
      "Ui": {
        "nodeType": "",
        "x": 203,
        "y": 392
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "8",
      "Type": "iftime",
      "Label": "Klokken 15:00",
      "SuccessTransition": "10",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "1"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "2"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "3"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "4"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "5"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "6"
          },
          {
            "Action": "a",
            "From": "15:00",
            "To": "23:00",
            "Weekday": "0"
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 228,
        "y": 582
      },
      "TypeAlias": "Time filter"
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "spotter slås 45",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:24_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 45,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 712,
        "y": 219
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "11",
      "Type": "trigger",
      "Label": "Dør sensor",
      "SuccessTransition": "7",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_contact/ad:28_0",
      "Service": "sensor_contact",
      "ServiceInterface": "evt.open.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": "bool"
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 159,
        "y": 208
      },
      "TypeAlias": "Trigger",
      "LastValue": true
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}

Når du står i Tingsplex UI og ser på flowen skal du se at det kommer opp true i triggeren når du enten åpner døra eller har en bevegelse.

Kommer det opp i noen av triggerne?

Du kan vel også se på statistikken til flowen om den blir trigget?

Ser for øvrig at du har «ValueFilter=True» på triggerne men i value står det null - kjenner ikke til om dette har noe å si, men jeg har ikke på ValueFilter på triggerne som er motion-sensorene

1 Like

Bra observert! Ved å fjerne «ValueFilter=True» på triggerne som forøvrig er Message filter, så virker automasjonen. Blir nå spennende å se om den virker uten å skru på lyset før klokken er etter 15:00.
Takk for veldig god hjelp @TorNeset . Nå fikk jeg litt mot igjen til å rydde i alle doble automasjoner som ligger å tar unødig plass.

2 Likes

Kult :+1: Veldig bra :clap:

@espen - Hvordan fungerer egentlig Message Filter på bevegelsessnsorene? Jeg har forsøkt å leke litt med å sette på det og sette true, for når jeg ikke har på det så skjer det en trigger når bevegelse oppdages og en når sensoren går tilbake til bevegelse ikke oppdaget. Har ikke så mye å si i praksis for mine flyter, men skulle gjerne visst hvordan man fikk kun trigger på hendelsen bevegelse oppdaget :+1:

Man kan filtrere på meldingene, men må velge riktig valueType og Value.

For en oversikt over hvilke valueTypes og values de ulike servicene bruker finner du her:

Du kan også gjøre filtreringen i en if node :slight_smile: Her er et eksempel:

Legg merke til at “if home” og “if sleep” sjekker globale variabler, og sender derfor samme input om den oppfyller kravene i første if node :slight_smile:

1 Like

Det funke som bare det her nå.

Da fikk jeg slettet 8 flyt som ble laget basert på home/sleep, utført i app.
Nå har jeg kombinert begge modus i en flow og endt opp med fire flyt. Satte opp trigger og deretter sjekket globalt om mode: home, ellers antas det til å være sleep. Bruker ikke de andre modusene, enda.

Igjen, takk!

1 Like

Takk for raskt svar. Her var det mye nyttig info :+1::smiley: Ser jo at man kan redusere antall flows hvis man ikke filtrerer trigger for bevegelse.

Er det mest effektivt å ha få flows med flere if’s eller flere flows og filtrere triggere?

Blir kanskje hipp som happ, men ser jo mye mer ryddig å samle ting i en flow

Bare hyggelig :slight_smile:
Jeg liker å samle en type action i en og samme flow, men det komme jo ann på personlige preferanser :slight_smile:
Noen samler alle variabel noder i en flow også har jeg sett (men dette er ikke jeg så fan av - liker å holde ting litt adskilt)

Personleg foretrekk eg if heller enn filter. Synes det er meir oversiktlig. Men ta gjerne denne diskusjonen her: