Hjelp til å lage flow, hva gjør jeg feil?

Prøver å sette opp en flow for å få pushvarsel om modusbryter blir satt til “borte” og det står en terrassedør åpen en plass i huset som noen har glemt å lukke. altså at man får et push varsel like etter at man har trykket på “away” slik at man kan gå inn og lukke døren før man reiser. hva gjør jeg feil her?

Dette er metoden jeg bruker:

For å kunne sjekke dørene må du først ha et system som lagrer statusen på alle dør-sensorene dine.

Dette er veldig enkelt å lage:
Sett opp en Trigger->Generic og send den videre inn i en Set Variable. Dette gjør du for hver dør du ønsker å sjekke.
Her er mitt eksempel med to terrassedører:

1

Anbefaler å lage global variables hvis du ønsker å sjekke dørene dine gjennom andre flows i fremtiden (Thingsplex → Flow → Context). Da trenger du bare å ha dette i én flow.

 
Nå som du kan sjekke statusen på dørene kan du lage resten av flowen. Her er et eksempel som sjekker dørstatus hver gang modus settes til “away”:

 
Her er eksempel-flowen jeg har laget, men vær obs på at flowen ikke vil fungere for deg med mindre du endrer alle triggere, lager dine egne variabler, og lager en ny notification-node så det blir riktig i forhold til ditt eget hus.

{
  "Id": "325461roH9owC7T",
  "ClassId": "325461roH9owC7T",
  "Author": "martinskre",
  "Version": 0,
  "CreatedAt": "2021-01-27T14:13:15.378611776+01:00",
  "UpdatedAt": "2021-01-27T16:09:56.082919503+01:00",
  "Name": "terrassedør-sjekk",
  "Group": "testing",
  "Description": "",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Door sensor 1 (Terrassedør foran)",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_contact/ad:12_0",
      "Service": "sensor_contact",
      "ServiceInterface": "evt.open.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": "",
          "ValueType": "bool"
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 60,
        "y": 220
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "set_variable",
      "Label": "[door_1_status]",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "Name": "door_1_status",
        "UpdateGlobal": false,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 60,
        "y": 400
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "3",
      "Type": "trigger",
      "Label": "Door sensor 2 (Terrassedør bak)",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_contact/ad:11_0",
      "Service": "sensor_contact",
      "ServiceInterface": "evt.open.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": "",
          "ValueType": "bool"
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 300,
        "y": 220
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "4",
      "Type": "set_variable",
      "Label": "[door_2_status]",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "Name": "door_2_status",
        "UpdateGlobal": false,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 300,
        "y": 400
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "5",
      "Type": "vinc_trigger",
      "Label": "Når home mode endres",
      "SuccessTransition": "6",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "EventType": "mode",
        "IsValueFilterEnabled": false,
        "Timeout": 0,
        "ValueFilter": "away"
      },
      "Ui": {
        "nodeType": "",
        "x": 430,
        "y": 600
      },
      "TypeAlias": "Home event"
    },
    {
      "Id": "6",
      "Type": "if",
      "Label": "Hvis home mode = \"away\"",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableName": "",
            "Operand": "eq",
            "RightVariable": {
              "Value": "away",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "7"
      },
      "Ui": {
        "nodeType": "",
        "x": 426,
        "y": 762
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "7",
      "Type": "if",
      "Label": "Sjekk status på alle dører",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "or",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "door_1_status",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "door_2_status",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "8"
      },
      "Ui": {
        "nodeType": "",
        "x": 300,
        "y": 930
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "8",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "ADVARSEL: En terrassedør er åpen!",
            "SiteId": "209cb7c8-6fff-451a-9f2e-c37757ba9d40"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 300,
        "y": 1100
      },
      "TypeAlias": "Notification"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}
1 Like

Det eneste min flow gjorde som jeg viste bilde av over var å rapportere dør åpen på pushvarsel uansett hvilken modus jeg brukte og uansett om døren sto oppe eller ikke. Tusen takk! Skal prøve forklaringen din. Litt grønn i TP.

Har du alt i en flow? Fra det øverste bildet ditt til det siste som er push?

Jepp! Begge bildene er fra samme flow og viser til sammen hele flowen.

Du kan også velge å splitte det opp i flere flower. Da må du passe på at variablene er “globale” (Thingsplex → Flow → Context, “Add” nedi venstre hjørne.)

Hvis du lager en ‘vanlig’ ikke-global variabel så gjelder den bare for flowen den eksisterer i. Da må i så fall alt være i samme flowen.

Takk for det. Problemet er nok at jeg ikke forstår det “basic” i dette her. Static variable / input variable etc. Hva skal jeg velge hvor… Jeg får heller ikke opp de bakenforliggende tekstene du har her eks: door_1_status(bool) Grrr… Irriterende at det ikke bare sier pling i hodet og at jeg forstår det grunnleggende…

På Set Variale noden må du legge til en variabel, gi den et navn, og hvilken type det er. Som eksempelet viser over så brukes bool på dør kontakt sensor

Mitt tips i så måte er å sjå gjennom nokon flowar som andre har laga, så ser du korleis dei er bygde opp. Det var slik eg lærte meg å kome i gong med tpflow. :blush::+1:

1 Like

Forsøkte å lese igjennom flowen som martinskre la ved over men jeg forstår input i bare deler av den. Klarer ikke få hans flow over i min flow da jeg ikke helt forstår hva som skal hvor.

Hvordan gir jeg den et navn eller gir beskjed om hvilken type det er?