Custom motion flow

Untitled.png

In this guide we will go through how to setup a custom flow for motion as displayed above.

The source code will be available at the bottom of this document.

Start with importing the flow. If you dont know how to import a flow you can check out this guide: [Guide will come]


This flow have a trigger for motion, conditions for which mode the household is in, and then filters if the trigger node sent a message that there is detected motion or not, and different action based on the filtering.

The timer for turning off the lights is not started before the sensor sends
a message that there is not detected any motion anymore. This varies from
product to product: A Fibaro motion sensor sends after 30 seconds of no
motion, and a Aeotec MS6 (battery) will send after 4 minutes.

The setup necessary to get this flow working in your household is changing the sensor's and lights' addresses.

Start off with clicking into the trigger node. Under Advanced service binding you can change to the address of your motion sensor.

Untitled__1_.png

Untitled__2_.png

If you have multiple motion sensors in a room you can use the clone button on the popup window, then move the cloned node, connect wires from the new node's green dot to the blue dot of the if home node. This newly cloned node will have the same address as before the node was cloned, and needs to be changed for the other motion sensor.


The same goes for the action nodes. In this scenario there is 4 action nodes, and all of them needs to be changed to the right address of the light.

Untitled__3_.png

Untitled__4_.png

If you have multiple lights in a room you can use the clone button on the popup window, then move the cloned node, connect wires from last node's green dot to the new node's blue dot. This newly cloned node will have the same address as before the node was cloned, and needs to be changed for the other light zone.


This flow is setup to turn on the light at last known value in home mode. But is of course customizable if you want other settings. In sleep mode there is an option to set a specific dimmer level. Click on the action node after "If presence = true" in Sleep mode. Under the section Payload configuration you can type the dimmer level.

Untitled__5_.png

Untitled__6_.png


Tips; change the name of the flow so it's easier to find the flow if you want to customize it later.

Untitled__7_.png


When everything is setup remember to click the Save button in the lower left corner.

Untitled__8_.png

If saved successfully this message Flow is saved message will appear on the bottom.

Untitled__9_.png


  • Source code

    {
      "Id": "Nqo6aLFaaFoKgW7",
      "ClassId": "B4sjTgAvS5zhq6C",
      "Author": "espenh.no",
      "Version": 0,
      "CreatedAt": "2020-08-01T11:08:13.558902118+02:00",
      "UpdatedAt": "2020-08-01T11:34:07.119965608+02:00",
      "Name": "sensor_presence automations",
      "Group": "sensor_presence",
      "Description": "",
      "Nodes": [
        {
          "Id": "1",
          "Type": "trigger",
          "Label": "sensor_presence",
          "SuccessTransition": "8",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_presence/ad:49_0",
          "Service": "sensor_presence",
          "ServiceInterface": "evt.presence.report",
          "Config": {
            "InputVariableType": "",
            "IsValueFilterEnabled": false,
            "LookupServiceNameAndLocation": false,
            "PropFilterName": "",
            "PropFilterValue": "",
            "RegisterAsVirtualService": false,
            "Timeout": 0,
            "ValueFilter": {
              "Value": true,
              "ValueType": ""
            },
            "ValueJPath": "",
            "ValueJPathResultType": "",
            "VirtualServiceGroup": "",
            "VirtualServiceProps": null
          },
          "Ui": {
            "nodeType": "",
            "x": 454,
            "y": 112
          }
        },
        {
          "Id": "2",
          "Type": "action",
          "Label": "out_lvl_switch ON (Last known value)",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:32_1",
          "Service": "out_lvl_switch",
          "ServiceInterface": "cmd.binary.set",
          "Config": {
            "DefaultValue": {
              "Value": true,
              "ValueType": "bool"
            },
            "IsVariableGlobal": false,
            "Props": {},
            "RegisterAsVirtualService": false,
            "ResponseToTopic": "",
            "VariableName": "",
            "VirtualServiceGroup": "",
            "VirtualServiceProps": {}
          },
          "Ui": {
            "nodeType": "",
            "x": 58,
            "y": 731
          }
        },
        {
          "Id": "4",
          "Type": "wait",
          "Label": "wait 10 min",
          "SuccessTransition": "5",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": 600000,
          "Ui": {
            "nodeType": "",
            "x": 343,
            "y": 716
          }
        },
        {
          "Id": "5",
          "Type": "action",
          "Label": "out_lvl_switch OFF",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:32_1",
          "Service": "out_lvl_switch",
          "ServiceInterface": "cmd.binary.set",
          "Config": {
            "DefaultValue": {
              "Value": false,
              "ValueType": "bool"
            },
            "IsVariableGlobal": false,
            "Props": {},
            "RegisterAsVirtualService": false,
            "ResponseToTopic": "",
            "VariableName": "",
            "VirtualServiceGroup": "",
            "VirtualServiceProps": {}
          },
          "Ui": {
            "nodeType": "",
            "x": 340,
            "y": 871
          }
        },
        {
          "Id": "6",
          "Type": "if",
          "Label": "if presence = true",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": false,
                "LeftVariableName": "",
                "Operand": "eq",
                "RightVariable": {
                  "Value": true,
                  "ValueType": "bool"
                }
              }
            ],
            "FalseTransition": "7",
            "TrueTransition": "2"
          },
          "Ui": {
            "nodeType": "",
            "x": 73,
            "y": 554
          }
        },
        {
          "Id": "7",
          "Type": "if",
          "Label": "if presence = false",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": false,
                "LeftVariableName": "",
                "Operand": "eq",
                "RightVariable": {
                  "Value": false,
                  "ValueType": "bool"
                }
              }
            ],
            "FalseTransition": "",
            "TrueTransition": "4"
          },
          "Ui": {
            "nodeType": "",
            "x": 342,
            "y": 552
          }
        },
        {
          "Id": "8",
          "Type": "if",
          "Label": "if home",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": true,
                "LeftVariableName": "fh.home.mode",
                "Operand": "eq",
                "RightVariable": {
                  "Value": "home",
                  "ValueType": "string"
                }
              }
            ],
            "FalseTransition": "9",
            "TrueTransition": "6"
          },
          "Ui": {
            "nodeType": "",
            "x": 220,
            "y": 316
          }
        },
        {
          "Id": "9",
          "Type": "if",
          "Label": "if sleep",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": true,
                "LeftVariableName": "fh.home.mode",
                "Operand": "eq",
                "RightVariable": {
                  "Value": "sleep",
                  "ValueType": "string"
                }
              }
            ],
            "FalseTransition": "",
            "TrueTransition": "10"
          },
          "Ui": {
            "nodeType": "",
            "x": 697,
            "y": 329
          }
        },
        {
          "Id": "10",
          "Type": "if",
          "Label": "if presence = true",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": false,
                "LeftVariableName": "",
                "Operand": "eq",
                "RightVariable": {
                  "Value": true,
                  "ValueType": "bool"
                }
              }
            ],
            "FalseTransition": "13",
            "TrueTransition": "12"
          },
          "Ui": {
            "nodeType": "",
            "x": 616,
            "y": 551
          }
        },
        {
          "Id": "12",
          "Type": "action",
          "Label": "out_lvl_switch cmd.lvl.set 10%",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:32_1",
          "Service": "out_lvl_switch",
          "ServiceInterface": "cmd.lvl.set",
          "Config": {
            "DefaultValue": {
              "Value": 10,
              "ValueType": "int"
            },
            "IsVariableGlobal": false,
            "Props": {},
            "RegisterAsVirtualService": false,
            "ResponseToTopic": "",
            "VariableName": "",
            "VirtualServiceGroup": "",
            "VirtualServiceProps": {}
          },
          "Ui": {
            "nodeType": "",
            "x": 613,
            "y": 719
          }
        },
        {
          "Id": "13",
          "Type": "if",
          "Label": "if presence = false",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": {
            "Expression": [
              {
                "BooleanOperator": "",
                "LeftVariableIsGlobal": false,
                "LeftVariableName": "",
                "Operand": "eq",
                "RightVariable": {
                  "Value": false,
                  "ValueType": "bool"
                }
              }
            ],
            "FalseTransition": "",
            "TrueTransition": "14"
          },
          "Ui": {
            "nodeType": "",
            "x": 860,
            "y": 556
          }
        },
        {
          "Id": "14",
          "Type": "wait",
          "Label": "wait 2 min",
          "SuccessTransition": "15",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "",
          "Service": "",
          "ServiceInterface": "",
          "Config": 120000,
          "Ui": {
            "nodeType": "",
            "x": 857,
            "y": 721
          }
        },
        {
          "Id": "15",
          "Type": "action",
          "Label": "out_lvl_switch OFF",
          "SuccessTransition": "",
          "TimeoutTransition": "",
          "ErrorTransition": "",
          "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:32_1",
          "Service": "out_lvl_switch",
          "ServiceInterface": "cmd.binary.set",
          "Config": {
            "DefaultValue": {
              "Value": false,
              "ValueType": "bool"
            },
            "IsVariableGlobal": false,
            "Props": {},
            "RegisterAsVirtualService": false,
            "ResponseToTopic": "",
            "VariableName": "",
            "VirtualServiceGroup": "",
            "VirtualServiceProps": {}
          },
          "Ui": {
            "nodeType": "",
            "x": 862,
            "y": 890
          }
        }
      ],
      "Settings": null,
      "IsDisabled": false,
      "IsDefault": false,
      "ParallelExecution": "keep_last"
    }
    

Var denne artikkelen nyttig?

0 av 0 syntes dette var nyttig

Har du flere spørsmål? Send oss en henvendelse

Kommentarer

1 kommentar

  • Comment author
    Mahunstad

    Jeg får ikke denne, eller noen andre flows til å virke. Hva er det jeg gjør feil? I dette tilfellet så kopierte jeg source code og endret adresser trigger (bev.det) og action (lampen). Men det skjer ingenting. 

    Har også prøvd å lage en identisk flow som en som jeg har laget i appen, men den jeg lager i flows funger ikke - den/de som lages i app fungerer... 

    Noen som kan hjelpe meg?

    0

Logg på hvis du vil legge inn en kommentar.