{
 "flows": [
  {
   "id": "01M8DMNFD16XPH4CMCAT9WR2K0",
   "name": "Getting started",
   "checksum": "",
   "edges": [
    {
     "source": "01M84X4TZ69SKY6ZX781R00SNQ",
     "sourceHandle": "out-value",
     "target": "01M8Y2AQY4D1NEZ25Z5C0XZKDB",
     "targetHandle": "in-in",
     "id": "xy-edge__01M84X4TZ69SKY6ZX781R00SNQout-value-01M8Y2AQY4D1NEZ25Z5C0XZKDBin-in"
    },
    {
     "source": "01M8Y2AQY4D1NEZ25Z5C0XZKDB",
     "sourceHandle": "out-out",
     "target": "01M8426NE7NPH9D972FG2SWPQM",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8Y2AQY4D1NEZ25Z5C0XZKDBout-out-01M8426NE7NPH9D972FG2SWPQMin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M84X4TZ69SKY6ZX781R00SNQ",
     "data": {
      "subType": "Boolean",
      "name": "Button",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8Y2AQY4D1NEZ25Z5C0XZKDB",
     "data": {
      "subType": "Not",
      "name": "Invert",
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 20
     }
    },
    {
     "id": "01M8426NE7NPH9D972FG2SWPQM",
     "data": {
      "subType": "Boolean",
      "name": "Lamp",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 40
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "A button drives a lamp through a NOT gate.",
   "flowId": "01M8DMNFD16XPH4CMCAT9WR2K0"
  },
  {
   "id": "01M8PXX9610THM1BM3A4XKY2VM",
   "name": "AND - OR",
   "checksum": "",
   "edges": [
    {
     "source": "01M8M2FJ7HRFZK5NXCVWAYK8WD",
     "sourceHandle": "out-value",
     "target": "01M85TZTJX3Z2WQ9115CHJ384X",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8M2FJ7HRFZK5NXCVWAYK8WDout-value-01M85TZTJX3Z2WQ9115CHJ384Xin-in-0"
    },
    {
     "source": "01M8N5XZFPZWEYPY1YHKB17CX2",
     "sourceHandle": "out-value",
     "target": "01M85TZTJX3Z2WQ9115CHJ384X",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M8N5XZFPZWEYPY1YHKB17CX2out-value-01M85TZTJX3Z2WQ9115CHJ384Xin-in-1"
    },
    {
     "source": "01M8M2FJ7HRFZK5NXCVWAYK8WD",
     "sourceHandle": "out-value",
     "target": "01M8P09BTDNGVTHKS3AMT8TR2S",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8M2FJ7HRFZK5NXCVWAYK8WDout-value-01M8P09BTDNGVTHKS3AMT8TR2Sin-in-0"
    },
    {
     "source": "01M8N5XZFPZWEYPY1YHKB17CX2",
     "sourceHandle": "out-value",
     "target": "01M8P09BTDNGVTHKS3AMT8TR2S",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M8N5XZFPZWEYPY1YHKB17CX2out-value-01M8P09BTDNGVTHKS3AMT8TR2Sin-in-1"
    },
    {
     "source": "01M85TZTJX3Z2WQ9115CHJ384X",
     "sourceHandle": "out-out",
     "target": "01M850C6ZPD3KQBWK97J3XPX0C",
     "targetHandle": "in-value",
     "id": "xy-edge__01M85TZTJX3Z2WQ9115CHJ384Xout-out-01M850C6ZPD3KQBWK97J3XPX0Cin-value"
    },
    {
     "source": "01M8P09BTDNGVTHKS3AMT8TR2S",
     "sourceHandle": "out-out",
     "target": "01M8YDJQ0BAT9P03RGC67T83Y0",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8P09BTDNGVTHKS3AMT8TR2Sout-out-01M8YDJQ0BAT9P03RGC67T83Y0in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8M2FJ7HRFZK5NXCVWAYK8WD",
     "data": {
      "subType": "Boolean",
      "name": "Input A",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8N5XZFPZWEYPY1YHKB17CX2",
     "data": {
      "subType": "Boolean",
      "name": "Input B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 260
     }
    },
    {
     "id": "01M85TZTJX3Z2WQ9115CHJ384X",
     "data": {
      "subType": "And",
      "name": "AND",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8P09BTDNGVTHKS3AMT8TR2S",
     "data": {
      "subType": "Or",
      "name": "OR",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 240
     }
    },
    {
     "id": "01M850C6ZPD3KQBWK97J3XPX0C",
     "data": {
      "subType": "Boolean",
      "name": "A AND B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 40
     }
    },
    {
     "id": "01M8YDJQ0BAT9P03RGC67T83Y0",
     "data": {
      "subType": "Boolean",
      "name": "A OR B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 280
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "AND and OR gates on two inputs.",
   "flowId": "01M8PXX9610THM1BM3A4XKY2VM"
  },
  {
   "id": "01M84T0J5B0H7S6KVB7N2QWVC1",
   "name": "XOR - NOT",
   "checksum": "",
   "edges": [
    {
     "source": "01M8BM9E5PVG4WZAWSKN0PWN5B",
     "sourceHandle": "out-value",
     "target": "01M8ACEBW8Z4TFEC7XJS4Q1YX6",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8BM9E5PVG4WZAWSKN0PWN5Bout-value-01M8ACEBW8Z4TFEC7XJS4Q1YX6in-in-0"
    },
    {
     "source": "01M8QVV0QJFS7AZ24A2WKHR9XT",
     "sourceHandle": "out-value",
     "target": "01M8ACEBW8Z4TFEC7XJS4Q1YX6",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M8QVV0QJFS7AZ24A2WKHR9XTout-value-01M8ACEBW8Z4TFEC7XJS4Q1YX6in-in-1"
    },
    {
     "source": "01M8BM9E5PVG4WZAWSKN0PWN5B",
     "sourceHandle": "out-value",
     "target": "01M82R971XJTC483DME5GYMP6Z",
     "targetHandle": "in-in",
     "id": "xy-edge__01M8BM9E5PVG4WZAWSKN0PWN5Bout-value-01M82R971XJTC483DME5GYMP6Zin-in"
    },
    {
     "source": "01M8ACEBW8Z4TFEC7XJS4Q1YX6",
     "sourceHandle": "out-out",
     "target": "01M8FV09N1H20ZSD1065RT54QZ",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8ACEBW8Z4TFEC7XJS4Q1YX6out-out-01M8FV09N1H20ZSD1065RT54QZin-value"
    },
    {
     "source": "01M82R971XJTC483DME5GYMP6Z",
     "sourceHandle": "out-out",
     "target": "01M83K74RRD4DYWPFE0QBJ5XA3",
     "targetHandle": "in-value",
     "id": "xy-edge__01M82R971XJTC483DME5GYMP6Zout-out-01M83K74RRD4DYWPFE0QBJ5XA3in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8BM9E5PVG4WZAWSKN0PWN5B",
     "data": {
      "subType": "Boolean",
      "name": "Input A",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8QVV0QJFS7AZ24A2WKHR9XT",
     "data": {
      "subType": "Boolean",
      "name": "Input B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 260
     }
    },
    {
     "id": "01M8ACEBW8Z4TFEC7XJS4Q1YX6",
     "data": {
      "subType": "Xor",
      "name": "XOR",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M82R971XJTC483DME5GYMP6Z",
     "data": {
      "subType": "Not",
      "name": "NOT",
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 260
     }
    },
    {
     "id": "01M8FV09N1H20ZSD1065RT54QZ",
     "data": {
      "subType": "Boolean",
      "name": "A XOR B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 40
     }
    },
    {
     "id": "01M83K74RRD4DYWPFE0QBJ5XA3",
     "data": {
      "subType": "Boolean",
      "name": "NOT A",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 280
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "XOR on two inputs, NOT on one.",
   "flowId": "01M84T0J5B0H7S6KVB7N2QWVC1"
  },
  {
   "id": "01M8HXD996NP6QYJAPHQ8M3798",
   "name": "AND with trigger",
   "checksum": "",
   "edges": [
    {
     "source": "01M892GDYHPNFPXTAJ6F8ZJP9Z",
     "sourceHandle": "out-value",
     "target": "01M8GEDN1MA2XCC79EFJJ0EG2N",
     "targetHandle": "in-trg",
     "id": "xy-edge__01M892GDYHPNFPXTAJ6F8ZJP9Zout-value-01M8GEDN1MA2XCC79EFJJ0EG2Nin-trg"
    },
    {
     "source": "01M8W1A0A2G97GA9GHGNZ4CTMJ",
     "sourceHandle": "out-value",
     "target": "01M8GEDN1MA2XCC79EFJJ0EG2N",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8W1A0A2G97GA9GHGNZ4CTMJout-value-01M8GEDN1MA2XCC79EFJJ0EG2Nin-in-0"
    },
    {
     "source": "01M8HA4TDVDAB222EED7CKFDAZ",
     "sourceHandle": "out-value",
     "target": "01M8GEDN1MA2XCC79EFJJ0EG2N",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M8HA4TDVDAB222EED7CKFDAZout-value-01M8GEDN1MA2XCC79EFJJ0EG2Nin-in-1"
    },
    {
     "source": "01M8GEDN1MA2XCC79EFJJ0EG2N",
     "sourceHandle": "out-out",
     "target": "01M8FJJ94KQNGAJ22HW6RDE516",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8GEDN1MA2XCC79EFJJ0EG2Nout-out-01M8FJJ94KQNGAJ22HW6RDE516in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8W1A0A2G97GA9GHGNZ4CTMJ",
     "data": {
      "subType": "Boolean",
      "name": "Window closed",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8HA4TDVDAB222EED7CKFDAZ",
     "data": {
      "subType": "Boolean",
      "name": "Door closed",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 170
     }
    },
    {
     "id": "01M892GDYHPNFPXTAJ6F8ZJP9Z",
     "data": {
      "subType": "Boolean",
      "name": "Check now",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 340
     }
    },
    {
     "id": "01M8GEDN1MA2XCC79EFJJ0EG2N",
     "data": {
      "subType": "And",
      "name": "All closed?",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 60
     }
    },
    {
     "id": "01M8FJJ94KQNGAJ22HW6RDE516",
     "data": {
      "subType": "Boolean",
      "name": "Ready to arm",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 100
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "The AND gate is evaluated only when TRG receives a pulse.",
   "flowId": "01M8HXD996NP6QYJAPHQ8M3798"
  },
  {
   "id": "01M84MHS5KTBXNF6BBPMEB0PCK",
   "name": "IF",
   "checksum": "",
   "edges": [
    {
     "source": "01M8ZCG16FFHEKAHH7WC5PS67Z",
     "sourceHandle": "out-value",
     "target": "01M84DE6HJDFSPXTBKSRF52214",
     "targetHandle": "in-A",
     "id": "xy-edge__01M8ZCG16FFHEKAHH7WC5PS67Zout-value-01M84DE6HJDFSPXTBKSRF52214in-A"
    },
    {
     "source": "01M8EAX5XDWSP3GV6CTK313ZP9",
     "sourceHandle": "out-value",
     "target": "01M84DE6HJDFSPXTBKSRF52214",
     "targetHandle": "in-B",
     "id": "xy-edge__01M8EAX5XDWSP3GV6CTK313ZP9out-value-01M84DE6HJDFSPXTBKSRF52214in-B"
    },
    {
     "source": "01M84DE6HJDFSPXTBKSRF52214",
     "sourceHandle": "out-out",
     "target": "01M84GBBEBJV4BCSKRRY42DNSD",
     "targetHandle": "in-value",
     "id": "xy-edge__01M84DE6HJDFSPXTBKSRF52214out-out-01M84GBBEBJV4BCSKRRY42DNSDin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8ZCG16FFHEKAHH7WC5PS67Z",
     "data": {
      "subType": "Number",
      "name": "Temperature",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 22,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8EAX5XDWSP3GV6CTK313ZP9",
     "data": {
      "subType": "Number",
      "name": "Setpoint",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 20,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 200
     }
    },
    {
     "id": "01M84DE6HJDFSPXTBKSRF52214",
     "data": {
      "subType": "If",
      "name": "Too hot?",
      "notes": "",
      "properties": [
       {
        "key": "condition",
        "isInput": false,
        "isOutput": false,
        "type": "select",
        "value": "gt",
        "options": [
         {
          "value": "gt",
          "label": "Greater"
         },
         {
          "value": "lt",
          "label": "Less"
         },
         {
          "value": "gte",
          "label": "Greater or equal"
         },
         {
          "value": "lte",
          "label": "Less or equal"
         },
         {
          "value": "eq",
          "label": "Equal"
         },
         {
          "value": "neq",
          "label": "Not equal"
         }
        ]
       },
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "A",
        "label": "IN A",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "B",
        "label": "IN B",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 40
     }
    },
    {
     "id": "01M84GBBEBJV4BCSKRRY42DNSD",
     "data": {
      "subType": "Boolean",
      "name": "Cooling request",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 80
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Compares IN A with IN B.",
   "flowId": "01M84MHS5KTBXNF6BBPMEB0PCK"
  },
  {
   "id": "01M8X721KGPNWMCA418YC34M54",
   "name": "Math",
   "checksum": "",
   "edges": [
    {
     "source": "01M8ZJ20TC1VEDB9N6JSANEXH2",
     "sourceHandle": "out-value",
     "target": "01M8KNEP1K1HCRQNPNFSKY2XE7",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8ZJ20TC1VEDB9N6JSANEXH2out-value-01M8KNEP1K1HCRQNPNFSKY2XE7in-in-0"
    },
    {
     "source": "01M825ZZ3BHEJ8Y5MSMMACJ5F2",
     "sourceHandle": "out-value",
     "target": "01M8KNEP1K1HCRQNPNFSKY2XE7",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M825ZZ3BHEJ8Y5MSMMACJ5F2out-value-01M8KNEP1K1HCRQNPNFSKY2XE7in-in-1"
    },
    {
     "source": "01M82E55VH63EM446EW07Y0AZS",
     "sourceHandle": "out-value",
     "target": "01M8KNEP1K1HCRQNPNFSKY2XE7",
     "targetHandle": "in-in-2",
     "id": "xy-edge__01M82E55VH63EM446EW07Y0AZSout-value-01M8KNEP1K1HCRQNPNFSKY2XE7in-in-2"
    },
    {
     "source": "01M8KNEP1K1HCRQNPNFSKY2XE7",
     "sourceHandle": "out-out",
     "target": "01M8X2CH06NAWYR5C6XFBNQ26K",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8KNEP1K1HCRQNPNFSKY2XE7out-out-01M8X2CH06NAWYR5C6XFBNQ26Kin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8ZJ20TC1VEDB9N6JSANEXH2",
     "data": {
      "subType": "Number",
      "name": "Sensor 1",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 21,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M825ZZ3BHEJ8Y5MSMMACJ5F2",
     "data": {
      "subType": "Number",
      "name": "Sensor 2",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 23,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 170
     }
    },
    {
     "id": "01M82E55VH63EM446EW07Y0AZS",
     "data": {
      "subType": "Number",
      "name": "Sensor 3",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 22,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 340
     }
    },
    {
     "id": "01M8KNEP1K1HCRQNPNFSKY2XE7",
     "data": {
      "subType": "Math",
      "name": "Average",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "number",
        "isInput": true,
        "isOutput": false,
        "showValue": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "condition",
        "isInput": false,
        "isOutput": false,
        "type": "select",
        "value": "avg",
        "options": [
         {
          "value": "max",
          "label": "Max"
         },
         {
          "value": "min",
          "label": "Min"
         },
         {
          "value": "avg",
          "label": "Average"
         },
         {
          "value": "sum",
          "label": "Sum"
         },
         {
          "value": "sub",
          "label": "Subtraction"
         },
         {
          "value": "mul",
          "label": "Multiplication"
         },
         {
          "value": "div",
          "label": "Division"
         },
         {
          "value": "abs",
          "label": "Absolute"
         },
         {
          "value": "log10",
          "label": "Log10"
         }
        ]
       },
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "number",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "number",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-2",
        "label": "IN",
        "type": "number",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 2,
        "generated": "input"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 60
     }
    },
    {
     "id": "01M8X2CH06NAWYR5C6XFBNQ26K",
     "data": {
      "subType": "Number",
      "name": "Average temperature",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 120
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Operation on all connected inputs.",
   "flowId": "01M8X721KGPNWMCA418YC34M54"
  },
  {
   "id": "01M8ZJBDV9HAGGGNABWGQ3T4EH",
   "name": "Range",
   "checksum": "",
   "edges": [
    {
     "source": "01M8GHF0HQR5S0JXX375JE5KHB",
     "sourceHandle": "out-value",
     "target": "01M804PPQE3QT09AZH94R8VVAD",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8GHF0HQR5S0JXX375JE5KHBout-value-01M804PPQE3QT09AZH94R8VVADin-input"
    },
    {
     "source": "01M8WXCEX61F8D3E10VG3RFSSG",
     "sourceHandle": "out-value",
     "target": "01M804PPQE3QT09AZH94R8VVAD",
     "targetHandle": "in-priority-enabled",
     "id": "xy-edge__01M8WXCEX61F8D3E10VG3RFSSGout-value-01M804PPQE3QT09AZH94R8VVADin-priority-enabled"
    },
    {
     "source": "01M804PPQE3QT09AZH94R8VVAD",
     "sourceHandle": "out-out",
     "target": "01M8BXKTYJ11YAQWZ9PH7SWNQD",
     "targetHandle": "in-value",
     "id": "xy-edge__01M804PPQE3QT09AZH94R8VVADout-out-01M8BXKTYJ11YAQWZ9PH7SWNQDin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8GHF0HQR5S0JXX375JE5KHB",
     "data": {
      "subType": "Number",
      "name": "Brightness %",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 50,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 80
     }
    },
    {
     "id": "01M8WXCEX61F8D3E10VG3RFSSG",
     "data": {
      "subType": "Boolean",
      "name": "Force value",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 260
     }
    },
    {
     "id": "01M804PPQE3QT09AZH94R8VVAD",
     "data": {
      "subType": "Range",
      "name": "0-100 to 0-255",
      "notes": "",
      "properties": [
       {
        "key": "X0",
        "label": "X0",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 0
       },
       {
        "key": "X1",
        "label": "X1",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 100
       },
       {
        "key": "Y0",
        "label": "Y0",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 0
       },
       {
        "key": "Y1",
        "label": "Y1",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 255
       },
       {
        "key": "priority-value",
        "label": "Priority Value",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 0,
        "connectionCount": 1
       },
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "priority-enabled",
        "label": "Priority Enabled",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "direct-inverse",
        "label": "Direct/Inverse",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8BXKTYJ11YAQWZ9PH7SWNQD",
     "data": {
      "subType": "Number",
      "name": "DMX level",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 100
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Linear scaling from X0..X1 to Y0..Y1.",
   "flowId": "01M8ZJBDV9HAGGGNABWGQ3T4EH"
  },
  {
   "id": "01M8B46WRXRDP82TTN7ZY8NWAK",
   "name": "Filter",
   "checksum": "",
   "edges": [
    {
     "source": "01M8WCCFF5X8S4ASX66SV2RRPY",
     "sourceHandle": "out-value",
     "target": "01M8A6G4D3Y49X590BT4G1F6QR",
     "targetHandle": "in-in",
     "id": "xy-edge__01M8WCCFF5X8S4ASX66SV2RRPYout-value-01M8A6G4D3Y49X590BT4G1F6QRin-in"
    },
    {
     "source": "01M8A6G4D3Y49X590BT4G1F6QR",
     "sourceHandle": "out-out",
     "target": "01M80HMGMXZ4YJGRN3H7JG7DJ8",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8A6G4D3Y49X590BT4G1F6QRout-out-01M80HMGMXZ4YJGRN3H7JG7DJ8in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8WCCFF5X8S4ASX66SV2RRPY",
     "data": {
      "subType": "Boolean",
      "name": "Motion",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8A6G4D3Y49X590BT4G1F6QR",
     "data": {
      "subType": "Filter",
      "name": "Only ON",
      "notes": "",
      "properties": [
       {
        "key": "condition",
        "label": "Condition",
        "isInput": false,
        "isOutput": false,
        "type": "select",
        "value": "1",
        "options": [
         {
          "value": "0",
          "label": "0"
         },
         {
          "value": "1",
          "label": "1"
         }
        ]
       },
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M80HMGMXZ4YJGRN3H7JG7DJ8",
     "data": {
      "subType": "Boolean",
      "name": "Turn on",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Lets through only one of the two values.",
   "flowId": "01M8B46WRXRDP82TTN7ZY8NWAK"
  },
  {
   "id": "01M82E86FX825NRV8GACTC3Y25",
   "name": "Javascript",
   "checksum": "",
   "edges": [
    {
     "source": "01M8WEEXAECPARZT82QM4PRQF2",
     "sourceHandle": "out-value",
     "target": "01M85G720SE0W7QK85F4PSJ6J3",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8WEEXAECPARZT82QM4PRQF2out-value-01M85G720SE0W7QK85F4PSJ6J3in-in-0"
    },
    {
     "source": "01M85G720SE0W7QK85F4PSJ6J3",
     "sourceHandle": "out-out-0",
     "target": "01M8DKW6BASZDR8J9GQE2NNS51",
     "targetHandle": "in-value",
     "id": "xy-edge__01M85G720SE0W7QK85F4PSJ6J3out-out-0-01M8DKW6BASZDR8J9GQE2NNS51in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8WEEXAECPARZT82QM4PRQF2",
     "data": {
      "subType": "Number",
      "name": "Power W",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 1500,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M85G720SE0W7QK85F4PSJ6J3",
     "data": {
      "subType": "Javascript",
      "name": "Format kW",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "string",
        "isInput": true,
        "isOutput": false,
        "showValue": false
       },
       "output": {
        "key": "out",
        "label": "OUT",
        "type": "string",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "script",
        "label": "Script",
        "type": "string",
        "isInput": false,
        "isOutput": false,
        "remote": false,
        "value": "var w = Number(inputs[0]);\nsetOutput(0, (w / 1000).toFixed(2) + ' kW');"
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "string",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "out-0",
        "label": "OUT",
        "type": "string",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "count": 0,
        "generated": "output"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8DKW6BASZDR8J9GQE2NNS51",
     "data": {
      "subType": "String",
      "name": "Power text",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "string",
        "value": "",
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Custom code on the inputs.",
   "flowId": "01M82E86FX825NRV8GACTC3Y25"
  },
  {
   "id": "01M8AX708JG83FSRSRWWXM307C",
   "name": "Sequencer",
   "checksum": "",
   "edges": [
    {
     "source": "01M84VJ2H24NGT0Q2WM0T48WN8",
     "sourceHandle": "out-value",
     "target": "01M8E17RC696PW6R535F449DB3",
     "targetHandle": "in-in",
     "id": "xy-edge__01M84VJ2H24NGT0Q2WM0T48WN8out-value-01M8E17RC696PW6R535F449DB3in-in"
    },
    {
     "source": "01M8H4F81BHT5WZRMGDX38VXNY",
     "sourceHandle": "out-value",
     "target": "01M8E17RC696PW6R535F449DB3",
     "targetHandle": "in-reset",
     "id": "xy-edge__01M8H4F81BHT5WZRMGDX38VXNYout-value-01M8E17RC696PW6R535F449DB3in-reset"
    },
    {
     "source": "01M8E17RC696PW6R535F449DB3",
     "sourceHandle": "out-out-0",
     "target": "01M85R6B5MV62XB3J7TQDPCGMW",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8E17RC696PW6R535F449DB3out-out-0-01M85R6B5MV62XB3J7TQDPCGMWin-value"
    },
    {
     "source": "01M8E17RC696PW6R535F449DB3",
     "sourceHandle": "out-out-1",
     "target": "01M8QC1CX13NX8R6EXQNC9NYP5",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8E17RC696PW6R535F449DB3out-out-1-01M8QC1CX13NX8R6EXQNC9NYP5in-value"
    },
    {
     "source": "01M8E17RC696PW6R535F449DB3",
     "sourceHandle": "out-out-2",
     "target": "01M82146C24E1QKSMQ73STF9MD",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8E17RC696PW6R535F449DB3out-out-2-01M82146C24E1QKSMQ73STF9MDin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M84VJ2H24NGT0Q2WM0T48WN8",
     "data": {
      "subType": "Boolean",
      "name": "Start",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8H4F81BHT5WZRMGDX38VXNY",
     "data": {
      "subType": "Boolean",
      "name": "Reset",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8E17RC696PW6R535F449DB3",
     "data": {
      "subType": "Sequencer",
      "name": "Garden irrigation",
      "generator": {
       "output": [
        {
         "key": "out",
         "label": "OUT",
         "type": "boolean",
         "isInput": false,
         "isOutput": true,
         "showValue": false,
         "value": false
        },
        {
         "key": "delay",
         "label": "DELAY",
         "type": "number",
         "isInput": false,
         "isOutput": false,
         "value": 1,
         "min": 1,
         "max": 43200,
         "step": 1,
         "unit": "s",
         "showValue": true,
         "hideOnNode": true
        }
       ]
      },
      "notes": "",
      "properties": [
       {
        "key": "cyclic",
        "label": "Cyclic",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "value": false
       },
       {
        "key": "in",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out-0",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "delay-0",
        "label": "DELAY",
        "type": "number",
        "isInput": false,
        "isOutput": false,
        "value": 600,
        "min": 1,
        "max": 43200,
        "step": 1,
        "unit": "s",
        "showValue": true,
        "hideOnNode": true,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "out-1",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "output"
       },
       {
        "key": "delay-1",
        "label": "DELAY",
        "type": "number",
        "isInput": false,
        "isOutput": false,
        "value": 900,
        "min": 1,
        "max": 43200,
        "step": 1,
        "unit": "s",
        "showValue": true,
        "hideOnNode": true,
        "count": 1,
        "generated": "output"
       },
       {
        "key": "out-2",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "value": false,
        "count": 2,
        "generated": "output"
       },
       {
        "key": "delay-2",
        "label": "DELAY",
        "type": "number",
        "isInput": false,
        "isOutput": false,
        "value": 600,
        "min": 1,
        "max": 43200,
        "step": 1,
        "unit": "s",
        "showValue": true,
        "hideOnNode": true,
        "count": 2,
        "generated": "output"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M85R6B5MV62XB3J7TQDPCGMW",
     "data": {
      "subType": "Boolean",
      "name": "Zone 1",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 0
     }
    },
    {
     "id": "01M8QC1CX13NX8R6EXQNC9NYP5",
     "data": {
      "subType": "Boolean",
      "name": "Zone 2",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 170
     }
    },
    {
     "id": "01M82146C24E1QKSMQ73STF9MD",
     "data": {
      "subType": "Boolean",
      "name": "Zone 3",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 340
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Turns on one output at a time, each for its own delay.",
   "flowId": "01M8AX708JG83FSRSRWWXM307C"
  },
  {
   "id": "01M80CKQD144CAR4EAVNFBMA5J",
   "name": "Scenario sequence",
   "checksum": "",
   "edges": [
    {
     "source": "01M86VB5W5ED4M0PQW2ZVQJZQG",
     "sourceHandle": "out-value",
     "target": "01M8X8CB2YW8EQ4BC6Y31RWMD3",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M86VB5W5ED4M0PQW2ZVQJZQGout-value-01M8X8CB2YW8EQ4BC6Y31RWMD3in-trigger"
    },
    {
     "source": "01M8X8CB2YW8EQ4BC6Y31RWMD3",
     "sourceHandle": "out-out-0",
     "target": "01M8G6P8JCMF42XMKKSYEQM4FX",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8X8CB2YW8EQ4BC6Y31RWMD3out-out-0-01M8G6P8JCMF42XMKKSYEQM4FXin-value"
    },
    {
     "source": "01M8X8CB2YW8EQ4BC6Y31RWMD3",
     "sourceHandle": "out-out-1",
     "target": "01M89M2W4FRDFV0W179SNN733D",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8X8CB2YW8EQ4BC6Y31RWMD3out-out-1-01M89M2W4FRDFV0W179SNN733Din-value"
    },
    {
     "source": "01M8X8CB2YW8EQ4BC6Y31RWMD3",
     "sourceHandle": "out-out-2",
     "target": "01M8A46TK5YG9NS66H7K14QFS4",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8X8CB2YW8EQ4BC6Y31RWMD3out-out-2-01M8A46TK5YG9NS66H7K14QFS4in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M86VB5W5ED4M0PQW2ZVQJZQG",
     "data": {
      "subType": "Boolean",
      "name": "Good night",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 60
     }
    },
    {
     "id": "01M8X8CB2YW8EQ4BC6Y31RWMD3",
     "data": {
      "subType": "ScenarioSequence",
      "name": "Good night",
      "generator": {
       "output": [
        {
         "key": "out",
         "label": "OUT",
         "isInput": false,
         "isOutput": true,
         "type": "boolean",
         "value": false
        },
        {
         "key": "trigger",
         "label": "TRG",
         "isInput": false,
         "isOutput": true,
         "type": "boolean",
         "showValue": false,
         "value": false
        }
       ]
      },
      "notes": "",
      "properties": [
       {
        "key": "interval",
        "label": "Interval",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "value": 2,
        "min": 1,
        "max": 60,
        "step": 1,
        "unit": "s"
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "value": false
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "stop",
        "label": "Stop",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out-0",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "trigger-0",
        "label": "TRG",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "out-1",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "value": true,
        "count": 1,
        "generated": "output"
       },
       {
        "key": "trigger-1",
        "label": "TRG",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "output"
       },
       {
        "key": "out-2",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "count": 2,
        "generated": "output"
       },
       {
        "key": "trigger-2",
        "label": "TRG",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false,
        "value": false,
        "count": 2,
        "generated": "output"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8G6P8JCMF42XMKKSYEQM4FX",
     "data": {
      "subType": "Boolean",
      "name": "Living room light",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 0
     }
    },
    {
     "id": "01M89M2W4FRDFV0W179SNN733D",
     "data": {
      "subType": "Boolean",
      "name": "Alarm armed",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 170
     }
    },
    {
     "id": "01M8A46TK5YG9NS66H7K14QFS4",
     "data": {
      "subType": "Boolean",
      "name": "Hall light",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 340
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Sends a list of values one after the other.",
   "flowId": "01M80CKQD144CAR4EAVNFBMA5J"
  },
  {
   "id": "01M812FHT5VGBTJZJTYP5GEGE6",
   "name": "Selector",
   "checksum": "",
   "edges": [
    {
     "source": "01M8GAKGZ001GJQC3S3FX82B4Y",
     "sourceHandle": "out-value",
     "target": "01M8P8B6F4DG1XGP9YNE5NRH5N",
     "targetHandle": "in-selector",
     "id": "xy-edge__01M8GAKGZ001GJQC3S3FX82B4Yout-value-01M8P8B6F4DG1XGP9YNE5NRH5Nin-selector"
    },
    {
     "source": "01M8FXE9QVFG8P4W4GPEADAHR1",
     "sourceHandle": "out-value",
     "target": "01M8P8B6F4DG1XGP9YNE5NRH5N",
     "targetHandle": "in-0",
     "id": "xy-edge__01M8FXE9QVFG8P4W4GPEADAHR1out-value-01M8P8B6F4DG1XGP9YNE5NRH5Nin-0"
    },
    {
     "source": "01M8N6Z83RR59CF7WR8H23X2RC",
     "sourceHandle": "out-value",
     "target": "01M8P8B6F4DG1XGP9YNE5NRH5N",
     "targetHandle": "in-1",
     "id": "xy-edge__01M8N6Z83RR59CF7WR8H23X2RCout-value-01M8P8B6F4DG1XGP9YNE5NRH5Nin-1"
    },
    {
     "source": "01M8P8B6F4DG1XGP9YNE5NRH5N",
     "sourceHandle": "out-out",
     "target": "01M8DXVHH1VDWBRZBHSKZ59B92",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8P8B6F4DG1XGP9YNE5NRH5Nout-out-01M8DXVHH1VDWBRZBHSKZ59B92in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8GAKGZ001GJQC3S3FX82B4Y",
     "data": {
      "subType": "Boolean",
      "name": "Summer mode",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8FXE9QVFG8P4W4GPEADAHR1",
     "data": {
      "subType": "Boolean",
      "name": "Winter command",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 170
     }
    },
    {
     "id": "01M8N6Z83RR59CF7WR8H23X2RC",
     "data": {
      "subType": "Boolean",
      "name": "Summer command",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 340
     }
    },
    {
     "id": "01M8P8B6F4DG1XGP9YNE5NRH5N",
     "data": {
      "subType": "Selector",
      "name": "Season",
      "notes": "",
      "properties": [
       {
        "key": "selector",
        "label": "Selector",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "0",
        "label": "IN 0",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "1",
        "label": "IN 1",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 100
     }
    },
    {
     "id": "01M8DXVHH1VDWBRZBHSKZ59B92",
     "data": {
      "subType": "Boolean",
      "name": "Pump",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 140
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Chooses which input goes to the output.",
   "flowId": "01M812FHT5VGBTJZJTYP5GEGE6"
  },
  {
   "id": "01M856ENFV6RFFPJ5FS0YWC04X",
   "name": "Binary encoder",
   "checksum": "",
   "edges": [
    {
     "source": "01M8ZTD2289PPDT363535KCJ8M",
     "sourceHandle": "out-value",
     "target": "01M8XKX2SSBS9Z9MQ6ZHNGRYM8",
     "targetHandle": "in-in",
     "id": "xy-edge__01M8ZTD2289PPDT363535KCJ8Mout-value-01M8XKX2SSBS9Z9MQ6ZHNGRYM8in-in"
    },
    {
     "source": "01M8VWM8B1569TFXFAY47XZ9Y5",
     "sourceHandle": "out-value",
     "target": "01M8XKX2SSBS9Z9MQ6ZHNGRYM8",
     "targetHandle": "in-selector",
     "id": "xy-edge__01M8VWM8B1569TFXFAY47XZ9Y5out-value-01M8XKX2SSBS9Z9MQ6ZHNGRYM8in-selector"
    },
    {
     "source": "01M8XKX2SSBS9Z9MQ6ZHNGRYM8",
     "sourceHandle": "out-0",
     "target": "01M8D737H1ZJJS2JRP3Y7GNEAH",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8XKX2SSBS9Z9MQ6ZHNGRYM8out-0-01M8D737H1ZJJS2JRP3Y7GNEAHin-value"
    },
    {
     "source": "01M8XKX2SSBS9Z9MQ6ZHNGRYM8",
     "sourceHandle": "out-1",
     "target": "01M8N7HJCF5XHRZ4K88ZNJ7JVY",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8XKX2SSBS9Z9MQ6ZHNGRYM8out-1-01M8N7HJCF5XHRZ4K88ZNJ7JVYin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8ZTD2289PPDT363535KCJ8M",
     "data": {
      "subType": "Boolean",
      "name": "Command",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8VWM8B1569TFXFAY47XZ9Y5",
     "data": {
      "subType": "Boolean",
      "name": "Route to OUT 1",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8XKX2SSBS9Z9MQ6ZHNGRYM8",
     "data": {
      "subType": "EncoderBinary",
      "name": "Binary encoder",
      "notes": "",
      "properties": [
       {
        "key": "in",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "selector",
        "label": "Selector",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "0",
        "label": "OUT 0",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "1",
        "label": "OUT 1",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 60
     }
    },
    {
     "id": "01M8D737H1ZJJS2JRP3Y7GNEAH",
     "data": {
      "subType": "Boolean",
      "name": "Light A",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 40
     }
    },
    {
     "id": "01M8N7HJCF5XHRZ4K88ZNJ7JVY",
     "data": {
      "subType": "Boolean",
      "name": "Light B",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 240
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Sends the input to OUT 0 or OUT 1.",
   "flowId": "01M856ENFV6RFFPJ5FS0YWC04X"
  },
  {
   "id": "01M8EMKW9GJP9KQ767Y3WY7VKH",
   "name": "Numeric encoder",
   "checksum": "",
   "edges": [
    {
     "source": "01M8FXQDECA774XQE5E7NBNM5A",
     "sourceHandle": "out-value",
     "target": "01M849X9E297V4ZHSKZNDP9T19",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8FXQDECA774XQE5E7NBNM5Aout-value-01M849X9E297V4ZHSKZNDP9T19in-input"
    },
    {
     "source": "01M8XNGPF1BA1Z60EJCEE40FE1",
     "sourceHandle": "out-value",
     "target": "01M849X9E297V4ZHSKZNDP9T19",
     "targetHandle": "in-selector",
     "id": "xy-edge__01M8XNGPF1BA1Z60EJCEE40FE1out-value-01M849X9E297V4ZHSKZNDP9T19in-selector"
    },
    {
     "source": "01M849X9E297V4ZHSKZNDP9T19",
     "sourceHandle": "out-out-0",
     "target": "01M8DTVSD132SZBME9V7GEA796",
     "targetHandle": "in-value",
     "id": "xy-edge__01M849X9E297V4ZHSKZNDP9T19out-out-0-01M8DTVSD132SZBME9V7GEA796in-value"
    },
    {
     "source": "01M849X9E297V4ZHSKZNDP9T19",
     "sourceHandle": "out-out-1",
     "target": "01M8A32X5TP13MHX6F8BQZQ46M",
     "targetHandle": "in-value",
     "id": "xy-edge__01M849X9E297V4ZHSKZNDP9T19out-out-1-01M8A32X5TP13MHX6F8BQZQ46Min-value"
    },
    {
     "source": "01M849X9E297V4ZHSKZNDP9T19",
     "sourceHandle": "out-out-2",
     "target": "01M8Y9SWZEGR3ZEP207SSMSMPA",
     "targetHandle": "in-value",
     "id": "xy-edge__01M849X9E297V4ZHSKZNDP9T19out-out-2-01M8Y9SWZEGR3ZEP207SSMSMPAin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8FXQDECA774XQE5E7NBNM5A",
     "data": {
      "subType": "Number",
      "name": "Value",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 1,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8XNGPF1BA1Z60EJCEE40FE1",
     "data": {
      "subType": "Number",
      "name": "Output number",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 2,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M849X9E297V4ZHSKZNDP9T19",
     "data": {
      "subType": "EncoderNumeric",
      "name": "Numeric encoder",
      "generator": {
       "output": {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "selector",
        "label": "Selector",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out-0",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "out-1",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "count": 1,
        "generated": "output"
       },
       {
        "key": "out-2",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "count": 2,
        "generated": "output"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 40
     }
    },
    {
     "id": "01M8DTVSD132SZBME9V7GEA796",
     "data": {
      "subType": "Number",
      "name": "Output 1",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 0
     }
    },
    {
     "id": "01M8A32X5TP13MHX6F8BQZQ46M",
     "data": {
      "subType": "Number",
      "name": "Output 2",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 170
     }
    },
    {
     "id": "01M8Y9SWZEGR3ZEP207SSMSMPA",
     "data": {
      "subType": "Number",
      "name": "Output 3",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 340
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Sends the value to the output chosen by a number.",
   "flowId": "01M8EMKW9GJP9KQ767Y3WY7VKH"
  },
  {
   "id": "01M8P47B9HZJE4ZJ41QB4R2V91",
   "name": "Decoder",
   "checksum": "",
   "edges": [
    {
     "source": "01M821F75PEYDAKJ8GGQZM26HM",
     "sourceHandle": "out-value",
     "target": "01M8SFXTR0VJBFRNYB9ZWTXQVQ",
     "targetHandle": "in-selector",
     "id": "xy-edge__01M821F75PEYDAKJ8GGQZM26HMout-value-01M8SFXTR0VJBFRNYB9ZWTXQVQin-selector"
    },
    {
     "source": "01M8FRXEDTNY8TW9N69MQ7AV3Y",
     "sourceHandle": "out-value",
     "target": "01M8SFXTR0VJBFRNYB9ZWTXQVQ",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M8FRXEDTNY8TW9N69MQ7AV3Yout-value-01M8SFXTR0VJBFRNYB9ZWTXQVQin-in-0"
    },
    {
     "source": "01M87YRW670BY8GPZPNEA75VMD",
     "sourceHandle": "out-value",
     "target": "01M8SFXTR0VJBFRNYB9ZWTXQVQ",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M87YRW670BY8GPZPNEA75VMDout-value-01M8SFXTR0VJBFRNYB9ZWTXQVQin-in-1"
    },
    {
     "source": "01M8SFXTR0VJBFRNYB9ZWTXQVQ",
     "sourceHandle": "out-out",
     "target": "01M8TZ5GYY1Y46KCTCX6CE01S8",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8SFXTR0VJBFRNYB9ZWTXQVQout-out-01M8TZ5GYY1Y46KCTCX6CE01S8in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M821F75PEYDAKJ8GGQZM26HM",
     "data": {
      "subType": "Number",
      "name": "Channel",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 1,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8FRXEDTNY8TW9N69MQ7AV3Y",
     "data": {
      "subType": "Boolean",
      "name": "Channel 0",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 170
     }
    },
    {
     "id": "01M87YRW670BY8GPZPNEA75VMD",
     "data": {
      "subType": "Boolean",
      "name": "Channel 1",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 340
     }
    },
    {
     "id": "01M8SFXTR0VJBFRNYB9ZWTXQVQ",
     "data": {
      "subType": "Decoder",
      "name": "Decoder",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "selector",
        "label": "Selector",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 100
     }
    },
    {
     "id": "01M8TZ5GYY1Y46KCTCX6CE01S8",
     "data": {
      "subType": "Boolean",
      "name": "Selected channel",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 140
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Reads the input chosen by a number.",
   "flowId": "01M8P47B9HZJE4ZJ41QB4R2V91"
  },
  {
   "id": "01M8HM2YX71QVSNF5WEA08WRCY",
   "name": "Flip-Flop T",
   "checksum": "",
   "edges": [
    {
     "source": "01M8KWB31XXH10V0RRHRFQFAMH",
     "sourceHandle": "out-value",
     "target": "01M8MF0856RFDPJTM1C66TNYYT",
     "targetHandle": "in-clock",
     "id": "xy-edge__01M8KWB31XXH10V0RRHRFQFAMHout-value-01M8MF0856RFDPJTM1C66TNYYTin-clock"
    },
    {
     "source": "01M8P415E46YA1Z7QJJ1QP446Y",
     "sourceHandle": "out-value",
     "target": "01M8MF0856RFDPJTM1C66TNYYT",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M8P415E46YA1Z7QJJ1QP446Yout-value-01M8MF0856RFDPJTM1C66TNYYTin-trigger"
    },
    {
     "source": "01M8MF0856RFDPJTM1C66TNYYT",
     "sourceHandle": "out-out",
     "target": "01M8XPDG6NSJWSAY91VC45VNXG",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8MF0856RFDPJTM1C66TNYYTout-out-01M8XPDG6NSJWSAY91VC45VNXGin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8KWB31XXH10V0RRHRFQFAMH",
     "data": {
      "subType": "Boolean",
      "name": "Push button",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8P415E46YA1Z7QJJ1QP446Y",
     "data": {
      "subType": "Boolean",
      "name": "Toggle enabled",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": true,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8MF0856RFDPJTM1C66TNYYT",
     "data": {
      "subType": "FlipFlopT",
      "name": "Toggle",
      "notes": "",
      "properties": [
       {
        "key": "priority-value",
        "label": "Priority Value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "clock",
        "label": "Clock",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "priority",
        "label": "Priority",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 40
     }
    },
    {
     "id": "01M8XPDG6NSJWSAY91VC45VNXG",
     "data": {
      "subType": "Boolean",
      "name": "Light",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 80
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Toggles the output at every pulse: one push button, on and off.",
   "flowId": "01M8HM2YX71QVSNF5WEA08WRCY"
  },
  {
   "id": "01M8RZJHBW935KQ0WX6QZ5VYGB",
   "name": "Flip-Flop RS",
   "checksum": "",
   "edges": [
    {
     "source": "01M85QAJJ1VJ69NBFSKQPGRS5N",
     "sourceHandle": "out-value",
     "target": "01M8AEH3Q8JQY6ZDP3X96DKDG6",
     "targetHandle": "in-set",
     "id": "xy-edge__01M85QAJJ1VJ69NBFSKQPGRS5Nout-value-01M8AEH3Q8JQY6ZDP3X96DKDG6in-set"
    },
    {
     "source": "01M8VHTNHQNSAQ5BHRCDKKA9VC",
     "sourceHandle": "out-value",
     "target": "01M8AEH3Q8JQY6ZDP3X96DKDG6",
     "targetHandle": "in-reset",
     "id": "xy-edge__01M8VHTNHQNSAQ5BHRCDKKA9VCout-value-01M8AEH3Q8JQY6ZDP3X96DKDG6in-reset"
    },
    {
     "source": "01M8AEH3Q8JQY6ZDP3X96DKDG6",
     "sourceHandle": "out-out",
     "target": "01M8GM9222ZQJ4VP006MQZW5NS",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8AEH3Q8JQY6ZDP3X96DKDG6out-out-01M8GM9222ZQJ4VP006MQZW5NSin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M85QAJJ1VJ69NBFSKQPGRS5N",
     "data": {
      "subType": "Boolean",
      "name": "Smoke detected",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8VHTNHQNSAQ5BHRCDKKA9VC",
     "data": {
      "subType": "Boolean",
      "name": "Acknowledge",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8AEH3Q8JQY6ZDP3X96DKDG6",
     "data": {
      "subType": "FlipFlopRS",
      "name": "Alarm memory",
      "notes": "",
      "properties": [
       {
        "key": "set",
        "label": "Set",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 80
     }
    },
    {
     "id": "01M8GM9222ZQJ4VP006MQZW5NS",
     "data": {
      "subType": "Boolean",
      "name": "Siren",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 120
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Set turns the output on, Reset turns it off.",
   "flowId": "01M8RZJHBW935KQ0WX6QZ5VYGB"
  },
  {
   "id": "01M87YJPVXC3RC16YMJNRGWYMA",
   "name": "Flip-Flop D",
   "checksum": "",
   "edges": [
    {
     "source": "01M8FXA4SPF06W9Q1549MXD2AC",
     "sourceHandle": "out-value",
     "target": "01M8A6XWMMYJPEW5909ZXFVSW5",
     "targetHandle": "in-data",
     "id": "xy-edge__01M8FXA4SPF06W9Q1549MXD2ACout-value-01M8A6XWMMYJPEW5909ZXFVSW5in-data"
    },
    {
     "source": "01M86C9A859K9XVT30V79DY5TC",
     "sourceHandle": "out-value",
     "target": "01M8A6XWMMYJPEW5909ZXFVSW5",
     "targetHandle": "in-clock",
     "id": "xy-edge__01M86C9A859K9XVT30V79DY5TCout-value-01M8A6XWMMYJPEW5909ZXFVSW5in-clock"
    },
    {
     "source": "01M8A6XWMMYJPEW5909ZXFVSW5",
     "sourceHandle": "out-out",
     "target": "01M81MEG5M6CP1MD5FFJ3D238R",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8A6XWMMYJPEW5909ZXFVSW5out-out-01M81MEG5M6CP1MD5FFJ3D238Rin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8FXA4SPF06W9Q1549MXD2AC",
     "data": {
      "subType": "Boolean",
      "name": "Data",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M86C9A859K9XVT30V79DY5TC",
     "data": {
      "subType": "Boolean",
      "name": "Clock",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8A6XWMMYJPEW5909ZXFVSW5",
     "data": {
      "subType": "FlipFlopD",
      "name": "Flip-Flop D",
      "notes": "",
      "properties": [
       {
        "key": "data",
        "label": "Data",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "clock",
        "label": "Clock",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 80
     }
    },
    {
     "id": "01M81MEG5M6CP1MD5FFJ3D238R",
     "data": {
      "subType": "Boolean",
      "name": "Q",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 120
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Copies Data on the output at the rising edge of Clock.",
   "flowId": "01M87YJPVXC3RC16YMJNRGWYMA"
  },
  {
   "id": "01M8ATJ155MQER6B22ZBDF3VPE",
   "name": "Latch D",
   "checksum": "",
   "edges": [
    {
     "source": "01M8AKF03B65V0TVY8WHGNTVB9",
     "sourceHandle": "out-value",
     "target": "01M8PXTQRK7QDTS81FATWAE5VW",
     "targetHandle": "in-in",
     "id": "xy-edge__01M8AKF03B65V0TVY8WHGNTVB9out-value-01M8PXTQRK7QDTS81FATWAE5VWin-in"
    },
    {
     "source": "01M8C9K1FR5RPEP41JA9KQ6FV2",
     "sourceHandle": "out-value",
     "target": "01M8PXTQRK7QDTS81FATWAE5VW",
     "targetHandle": "in-enable",
     "id": "xy-edge__01M8C9K1FR5RPEP41JA9KQ6FV2out-value-01M8PXTQRK7QDTS81FATWAE5VWin-enable"
    },
    {
     "source": "01M8PXTQRK7QDTS81FATWAE5VW",
     "sourceHandle": "out-out",
     "target": "01M8QXAQP20EGEJ8PHRGFT8365",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8PXTQRK7QDTS81FATWAE5VWout-out-01M8QXAQP20EGEJ8PHRGFT8365in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8AKF03B65V0TVY8WHGNTVB9",
     "data": {
      "subType": "Boolean",
      "name": "Input",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8C9K1FR5RPEP41JA9KQ6FV2",
     "data": {
      "subType": "Boolean",
      "name": "Enable",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 240
     }
    },
    {
     "id": "01M8PXTQRK7QDTS81FATWAE5VW",
     "data": {
      "subType": "LatchD",
      "name": "Latch D",
      "notes": "",
      "properties": [
       {
        "key": "in",
        "label": "Input",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1,
        "value": false
       },
       {
        "key": "enable",
        "label": "Enable",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1,
        "value": false
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 80
     }
    },
    {
     "id": "01M8QXAQP20EGEJ8PHRGFT8365",
     "data": {
      "subType": "Boolean",
      "name": "Latched value",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 120
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Follows the input while Enable is on, keeps the last value when it turns off.",
   "flowId": "01M8ATJ155MQER6B22ZBDF3VPE"
  },
  {
   "id": "01M8YERQQ02XKE9AF049DWXH3M",
   "name": "Counter",
   "checksum": "",
   "edges": [
    {
     "source": "01M8GP1G0ATYHT6NAEBTNZJXH1",
     "sourceHandle": "out-value",
     "target": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "targetHandle": "in-enabled",
     "id": "xy-edge__01M8GP1G0ATYHT6NAEBTNZJXH1out-value-01M81C3VK9Z5KJ9BN3BMMABCMAin-enabled"
    },
    {
     "source": "01M8A8WYV91G2TEF378QSWMK06",
     "sourceHandle": "out-value",
     "target": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M8A8WYV91G2TEF378QSWMK06out-value-01M81C3VK9Z5KJ9BN3BMMABCMAin-trigger"
    },
    {
     "source": "01M8QGSKA97JNYJY3CDPS09PMP",
     "sourceHandle": "out-value",
     "target": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "targetHandle": "in-reset",
     "id": "xy-edge__01M8QGSKA97JNYJY3CDPS09PMPout-value-01M81C3VK9Z5KJ9BN3BMMABCMAin-reset"
    },
    {
     "source": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "sourceHandle": "out-out",
     "target": "01M8YB0P2A2GFE2VJ9CQFXNGFR",
     "targetHandle": "in-value",
     "id": "xy-edge__01M81C3VK9Z5KJ9BN3BMMABCMAout-out-01M8YB0P2A2GFE2VJ9CQFXNGFRin-value"
    },
    {
     "source": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "sourceHandle": "out-value",
     "target": "01M8KTN48VQ0T21KXTYXYEQ1XX",
     "targetHandle": "in-value",
     "id": "xy-edge__01M81C3VK9Z5KJ9BN3BMMABCMAout-value-01M8KTN48VQ0T21KXTYXYEQ1XXin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8GP1G0ATYHT6NAEBTNZJXH1",
     "data": {
      "subType": "Boolean",
      "name": "Enabled",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": true,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8A8WYV91G2TEF378QSWMK06",
     "data": {
      "subType": "Boolean",
      "name": "Pulse",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 170
     }
    },
    {
     "id": "01M8QGSKA97JNYJY3CDPS09PMP",
     "data": {
      "subType": "Boolean",
      "name": "Reset",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 340
     }
    },
    {
     "id": "01M81C3VK9Z5KJ9BN3BMMABCMA",
     "data": {
      "subType": "Counter",
      "name": "Visitors",
      "notes": "",
      "properties": [
       {
        "key": "preset",
        "label": "Preset",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "hideOnNode": true,
        "value": 0
       },
       {
        "key": "mode",
        "type": "select",
        "defaultValue": "up",
        "value": "up",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "up",
          "label": "Up"
         },
         {
          "value": "down",
          "label": "Down"
         }
        ]
       },
       {
        "key": "enabled",
        "label": "Enabled",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "value",
        "label": "Value",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "step": 1,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 80
     }
    },
    {
     "id": "01M8YB0P2A2GFE2VJ9CQFXNGFR",
     "data": {
      "subType": "Boolean",
      "name": "Counted",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    },
    {
     "id": "01M8KTN48VQ0T21KXTYXYEQ1XX",
     "data": {
      "subType": "Number",
      "name": "Count",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 260
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Counts pulses up or down.",
   "flowId": "01M8YERQQ02XKE9AF049DWXH3M"
  },
  {
   "id": "01M82P2K8E2RVVC6S4YJZYQBJ7",
   "name": "Timer",
   "checksum": "",
   "edges": [
    {
     "source": "01M854WHTBRXF5J552TKQCK97R",
     "sourceHandle": "out-value",
     "target": "01M8EERKVYY6J3TX2ZT30JK9SH",
     "targetHandle": "in-input",
     "id": "xy-edge__01M854WHTBRXF5J552TKQCK97Rout-value-01M8EERKVYY6J3TX2ZT30JK9SHin-input"
    },
    {
     "source": "01M8EERKVYY6J3TX2ZT30JK9SH",
     "sourceHandle": "out-out",
     "target": "01M8QP3QAQQ9K43QSH6ZJMAZJ8",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8EERKVYY6J3TX2ZT30JK9SHout-out-01M8QP3QAQQ9K43QSH6ZJMAZJ8in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M854WHTBRXF5J552TKQCK97R",
     "data": {
      "subType": "Boolean",
      "name": "Door open",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8EERKVYY6J3TX2ZT30JK9SH",
     "data": {
      "subType": "Timer",
      "name": "Door left open",
      "notes": "",
      "properties": [
       {
        "key": "delay-up",
        "label": "Delay Up",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "connectionCount": 1,
        "value": 60
       },
       {
        "key": "delay-down",
        "label": "Delay Down",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "connectionCount": 1,
        "value": 2
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8QP3QAQQ9K43QSH6ZJMAZJ8",
     "data": {
      "subType": "Boolean",
      "name": "Door alarm",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Delays switching on and switching off.",
   "flowId": "01M82P2K8E2RVVC6S4YJZYQBJ7"
  },
  {
   "id": "01M8MGHHBCHFHDFSKBGFVCAWPX",
   "name": "Stairs light",
   "checksum": "",
   "edges": [
    {
     "source": "01M8QAWGZ9ECB8J1V3BFP0Y5QS",
     "sourceHandle": "out-value",
     "target": "01M8YVCW1JH17WBDJ8K5FX641B",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8QAWGZ9ECB8J1V3BFP0Y5QSout-value-01M8YVCW1JH17WBDJ8K5FX641Bin-input"
    },
    {
     "source": "01M8YVCW1JH17WBDJ8K5FX641B",
     "sourceHandle": "out-out",
     "target": "01M8Y6TKBZEN5BFVN0SF2KMC8P",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8YVCW1JH17WBDJ8K5FX641Bout-out-01M8Y6TKBZEN5BFVN0SF2KMC8Pin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8QAWGZ9ECB8J1V3BFP0Y5QS",
     "data": {
      "subType": "Boolean",
      "name": "Motion sensor",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8YVCW1JH17WBDJ8K5FX641B",
     "data": {
      "subType": "StairsLight",
      "name": "Stairs light",
      "notes": "",
      "properties": [
       {
        "key": "delay",
        "label": "Delay",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "value": 120,
        "showValue": true,
        "connectionCount": 1
       },
       {
        "key": "mode",
        "label": "Mode",
        "type": "select",
        "defaultValue": "presence",
        "value": "pulse",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "presence",
          "label": "Presence"
         },
         {
          "value": "pulse",
          "label": "Pulse"
         }
        ]
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8Y6TKBZEN5BFVN0SF2KMC8P",
     "data": {
      "subType": "Boolean",
      "name": "Stairs lamp",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Turns the light on with motion and off after a delay.",
   "flowId": "01M8MGHHBCHFHDFSKBGFVCAWPX"
  },
  {
   "id": "01M8WCEREGJAEFVPP9TST9KTK0",
   "name": "Trigger",
   "checksum": "",
   "edges": [
    {
     "source": "01M8BX1K3NYR7S0XA29JKVXAK6",
     "sourceHandle": "out-value",
     "target": "01M8E72WCAZ4K6KG9BJD170EDF",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8BX1K3NYR7S0XA29JKVXAK6out-value-01M8E72WCAZ4K6KG9BJD170EDFin-input"
    },
    {
     "source": "01M8E72WCAZ4K6KG9BJD170EDF",
     "sourceHandle": "out-out",
     "target": "01M8AEEFH69RXQVQNMWK36TEXH",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8E72WCAZ4K6KG9BJD170EDFout-out-01M8AEEFH69RXQVQNMWK36TEXHin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8BX1K3NYR7S0XA29JKVXAK6",
     "data": {
      "subType": "Boolean",
      "name": "Button",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8E72WCAZ4K6KG9BJD170EDF",
     "data": {
      "subType": "Trigger",
      "name": "Rising edge",
      "notes": "",
      "properties": [
       {
        "key": "cycle",
        "label": "Cycle",
        "type": "select",
        "defaultValue": "up",
        "value": "up",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "up",
          "label": "Up"
         },
         {
          "value": "down",
          "label": "Down"
         }
        ]
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8AEEFH69RXQVQNMWK36TEXH",
     "data": {
      "subType": "Boolean",
      "name": "Pulse",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Turns a level into a single pulse.",
   "flowId": "01M8WCEREGJAEFVPP9TST9KTK0"
  },
  {
   "id": "01M8Y2HQG11SP0ZM1V84S2MEM3",
   "name": "Numeric trigger",
   "checksum": "",
   "edges": [
    {
     "source": "01M8TZP4VER26QVDAWKEHWSMZD",
     "sourceHandle": "out-value",
     "target": "01M818EHZKC4NPJZ58TDP6H798",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8TZP4VER26QVDAWKEHWSMZDout-value-01M818EHZKC4NPJZ58TDP6H798in-input"
    },
    {
     "source": "01M818EHZKC4NPJZ58TDP6H798",
     "sourceHandle": "out-out",
     "target": "01M869VCW7HHAJ78PA1VZFBK8B",
     "targetHandle": "in-value",
     "id": "xy-edge__01M818EHZKC4NPJZ58TDP6H798out-out-01M869VCW7HHAJ78PA1VZFBK8Bin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8TZP4VER26QVDAWKEHWSMZD",
     "data": {
      "subType": "Number",
      "name": "Water level %",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M818EHZKC4NPJZ58TDP6H798",
     "data": {
      "subType": "NumericTrigger",
      "name": "Level = 100",
      "notes": "",
      "properties": [
       {
        "key": "condition",
        "label": "Condition",
        "type": "number",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "value": 100
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M869VCW7HHAJ78PA1VZFBK8B",
     "data": {
      "subType": "Boolean",
      "name": "Tank full",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "A pulse when a number reaches a given value.",
   "flowId": "01M8Y2HQG11SP0ZM1V84S2MEM3"
  },
  {
   "id": "01M8XJGEDGQ0WF793V2KHCJ3NY",
   "name": "Astronomy clock",
   "checksum": "",
   "edges": [
    {
     "source": "01M8DNSBFY1X7QVCWK3D508RAE",
     "sourceHandle": "out-day",
     "target": "01M8HEE68PREF1VE5ZPDYKT72W",
     "targetHandle": "in-in",
     "id": "xy-edge__01M8DNSBFY1X7QVCWK3D508RAEout-day-01M8HEE68PREF1VE5ZPDYKT72Win-in"
    },
    {
     "source": "01M8HEE68PREF1VE5ZPDYKT72W",
     "sourceHandle": "out-out",
     "target": "01M8XSNBCX5B9SZWSXP52VTAGT",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8HEE68PREF1VE5ZPDYKT72Wout-out-01M8XSNBCX5B9SZWSXP52VTAGTin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8DNSBFY1X7QVCWK3D508RAE",
     "data": {
      "subType": "AstronomyClock",
      "name": "Sun at Vicenza",
      "notes": "",
      "properties": [
       {
        "key": "coordinates",
        "label": "Coordinates",
        "isInput": false,
        "isOutput": false,
        "type": "string",
        "showValue": true,
        "value": "45.55, 11.55"
       },
       {
        "key": "day",
        "label": "Day",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8HEE68PREF1VE5ZPDYKT72W",
     "data": {
      "subType": "Not",
      "name": "Night",
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8XSNBCX5B9SZWSXP52VTAGT",
     "data": {
      "subType": "Boolean",
      "name": "Night time",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 40
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Day or night at the given coordinates.",
   "flowId": "01M8XJGEDGQ0WF793V2KHCJ3NY"
  },
  {
   "id": "01M8KYJA4SKAR6TDJMDAGTX5DZ",
   "name": "Date / Hour",
   "checksum": "",
   "edges": [
    {
     "source": "01M8J9TDYENE3S7NZC63QV9885",
     "sourceHandle": "out-hour",
     "target": "01M83HFXKAQES0RXBCQ5A9722Y",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8J9TDYENE3S7NZC63QV9885out-hour-01M83HFXKAQES0RXBCQ5A9722Yin-value"
    },
    {
     "source": "01M8J9TDYENE3S7NZC63QV9885",
     "sourceHandle": "out-weekday",
     "target": "01M8X6G5P7993JD7NZ9WR7BQF7",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8J9TDYENE3S7NZC63QV9885out-weekday-01M8X6G5P7993JD7NZ9WR7BQF7in-value"
    },
    {
     "source": "01M8J9TDYENE3S7NZC63QV9885",
     "sourceHandle": "out-daylight-savings",
     "target": "01M8TYQT2N6ZEZZSSKTB9PS4WH",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8J9TDYENE3S7NZC63QV9885out-daylight-savings-01M8TYQT2N6ZEZZSSKTB9PS4WHin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8J9TDYENE3S7NZC63QV9885",
     "data": {
      "subType": "DateHour",
      "name": "Date/Hour",
      "notes": "",
      "properties": [
       {
        "key": "seconds",
        "label": "Seconds",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "minute",
        "label": "Minute",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "hour",
        "label": "Hour",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "day",
        "label": "Day",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "month",
        "label": "Month",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "year",
        "label": "Year",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "week",
        "label": "Week",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "showValue": false
       },
       {
        "key": "weekday",
        "label": "Weekday",
        "isInput": false,
        "isOutput": true,
        "type": "string",
        "showValue": false
       },
       {
        "key": "daylight-savings",
        "label": "Daylight Savings",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M83HFXKAQES0RXBCQ5A9722Y",
     "data": {
      "subType": "Number",
      "name": "Hour",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8X6G5P7993JD7NZ9WR7BQF7",
     "data": {
      "subType": "String",
      "name": "Weekday",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "string",
        "value": "",
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 170
     }
    },
    {
     "id": "01M8TYQT2N6ZEZZSSKTB9PS4WH",
     "data": {
      "subType": "Boolean",
      "name": "Summer time",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 340
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.34
   },
   "description": "Current date and time of the server.",
   "flowId": "01M8KYJA4SKAR6TDJMDAGTX5DZ"
  },
  {
   "id": "01M8XNBYMVKQMWYE1RTPSWCNZF",
   "name": "Repeat command",
   "checksum": "",
   "edges": [
    {
     "source": "01M84KN6WXDJXF5FP2CSCAM62Z",
     "sourceHandle": "out-value",
     "target": "01M8MMK9FKD91VNBD7XX2KKW9K",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M84KN6WXDJXF5FP2CSCAM62Zout-value-01M8MMK9FKD91VNBD7XX2KKW9Kin-trigger"
    },
    {
     "source": "01M8MMK9FKD91VNBD7XX2KKW9K",
     "sourceHandle": "out-trigger",
     "target": "01M8HG8Z5VAHWRHZ1P1GXV54BV",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8MMK9FKD91VNBD7XX2KKW9Kout-trigger-01M8HG8Z5VAHWRHZ1P1GXV54BVin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M84KN6WXDJXF5FP2CSCAM62Z",
     "data": {
      "subType": "Boolean",
      "name": "Send",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8MMK9FKD91VNBD7XX2KKW9K",
     "data": {
      "subType": "RepeatCommand",
      "name": "Repeat x3",
      "notes": "",
      "properties": [
       {
        "key": "repeat",
        "label": "Repeat",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "value": 2
       },
       {
        "key": "delay",
        "label": "Delay",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "unit": "ms",
        "value": 1
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8HG8Z5VAHWRHZ1P1GXV54BV",
     "data": {
      "subType": "Boolean",
      "name": "Repeated pulse",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 60
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Repeats a pulse a number of times.",
   "flowId": "01M8XNBYMVKQMWYE1RTPSWCNZF"
  },
  {
   "id": "01M8Y4PJ1D31801W7JJYHNEB9Z",
   "name": "Oscillator - Clock",
   "checksum": "",
   "edges": [
    {
     "source": "01M851NP18N76122TFZB0GCHK1",
     "sourceHandle": "out-trigger",
     "target": "01M86A5WZWGCQGNXSYY3M3QDB6",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M851NP18N76122TFZB0GCHK1out-trigger-01M86A5WZWGCQGNXSYY3M3QDB6in-trigger"
    },
    {
     "source": "01M8X280J1RSWMT26WJ7RJ7YJH",
     "sourceHandle": "out-value",
     "target": "01M86A5WZWGCQGNXSYY3M3QDB6",
     "targetHandle": "in-enabled",
     "id": "xy-edge__01M8X280J1RSWMT26WJ7RJ7YJHout-value-01M86A5WZWGCQGNXSYY3M3QDB6in-enabled"
    },
    {
     "source": "01M86A5WZWGCQGNXSYY3M3QDB6",
     "sourceHandle": "out-value",
     "target": "01M8DKGTFF5MMT70YQCHFXQ3W0",
     "targetHandle": "in-value",
     "id": "xy-edge__01M86A5WZWGCQGNXSYY3M3QDB6out-value-01M8DKGTFF5MMT70YQCHFXQ3W0in-value"
    },
    {
     "source": "01M8MNNXBQVF953ZS5YT6MZVJ7",
     "sourceHandle": "out-trigger",
     "target": "01M8K6VJ9CA10E82SNG2ZT0P18",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8MNNXBQVF953ZS5YT6MZVJ7out-trigger-01M8K6VJ9CA10E82SNG2ZT0P18in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M851NP18N76122TFZB0GCHK1",
     "data": {
      "subType": "Oscillator",
      "name": "Every second",
      "notes": "",
      "properties": [
       {
        "key": "timer",
        "label": "Timer",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "unit": "ms",
        "value": 1000
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8X280J1RSWMT26WJ7RJ7YJH",
     "data": {
      "subType": "Boolean",
      "name": "Counting",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": true,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 200
     }
    },
    {
     "id": "01M86A5WZWGCQGNXSYY3M3QDB6",
     "data": {
      "subType": "Counter",
      "name": "Seconds",
      "notes": "",
      "properties": [
       {
        "key": "preset",
        "label": "Preset",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "hideOnNode": true,
        "value": 0
       },
       {
        "key": "mode",
        "type": "select",
        "defaultValue": "up",
        "value": "up",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "up",
          "label": "Up"
         },
         {
          "value": "down",
          "label": "Down"
         }
        ]
       },
       {
        "key": "enabled",
        "label": "Enabled",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "value",
        "label": "Value",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "step": 1,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8DKGTFF5MMT70YQCHFXQ3W0",
     "data": {
      "subType": "Number",
      "name": "Elapsed seconds",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 80
     }
    },
    {
     "id": "01M8MNNXBQVF953ZS5YT6MZVJ7",
     "data": {
      "subType": "Clock",
      "name": "Blink 500 ms",
      "notes": "",
      "properties": [
       {
        "key": "delay",
        "label": "Delay",
        "isInput": false,
        "isOutput": false,
        "value": 500,
        "min": 100,
        "max": 100000,
        "type": "number",
        "unit": "ms"
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 420
     }
    },
    {
     "id": "01M8K6VJ9CA10E82SNG2ZT0P18",
     "data": {
      "subType": "Boolean",
      "name": "Blinking lamp",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 440
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.16
   },
   "description": "Periodic pulses and a square wave.",
   "flowId": "01M8Y4PJ1D31801W7JJYHNEB9Z"
  },
  {
   "id": "01M8GJXJ2DQGDPNB50PHCNSA59",
   "name": "Variables",
   "checksum": "",
   "edges": [],
   "nodes": [
    {
     "id": "01M8GCGCN09ETMVED0PG5DAHP4",
     "data": {
      "subType": "Boolean",
      "name": "Holiday mode",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": true
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8W71DJT9VNF4MZ0WYK9KR46",
     "data": {
      "subType": "Number",
      "name": "Comfort setpoint",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 21.5,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": true
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8D3T6DFTJ5PRE7R1E2ZGTN3",
     "data": {
      "subType": "String",
      "name": "Welcome text",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "string",
        "value": "Welcome home",
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 200
     }
    },
    {
     "id": "01M89GN16FVHQC2PSYGE9PD5QG",
     "data": {
      "subType": "Color",
      "name": "Mood color",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "color",
        "value": "#FF8800",
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 380,
      "y": 200
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Boolean, Number, String and Color.",
   "flowId": "01M8GJXJ2DQGDPNB50PHCNSA59"
  },
  {
   "id": "01M8K61FW2Q6DJNA0SVC9FSFBX",
   "name": "KNX",
   "checksum": "",
   "edges": [
    {
     "source": "01M82X0MFJCV5EW89MJHPB7K39",
     "sourceHandle": "out-b",
     "target": "01M8PGAF808ETCS22QTF0GXE8V",
     "targetHandle": "in-in",
     "id": "xy-edge__01M82X0MFJCV5EW89MJHPB7K39out-b-01M8PGAF808ETCS22QTF0GXE8Vin-in"
    },
    {
     "source": "01M8PGAF808ETCS22QTF0GXE8V",
     "sourceHandle": "out-out",
     "target": "01M8W1YCGQMS17N3JCD593FX15",
     "targetHandle": "in-b",
     "id": "xy-edge__01M8PGAF808ETCS22QTF0GXE8Vout-out-01M8W1YCGQMS17N3JCD593FX15in-b"
    }
   ],
   "nodes": [
    {
     "id": "01M82X0MFJCV5EW89MJHPB7K39",
     "data": {
      "subType": "KnxFeedback",
      "name": "Button 1/1/10",
      "notes": "",
      "properties": [
       {
        "key": "dpt",
        "label": "DPT",
        "isInput": false,
        "isOutput": false,
        "type": "dptSelect",
        "hideOnNode": true,
        "value": "1.001"
       },
       {
        "key": "address",
        "label": "Address",
        "isInput": false,
        "isOutput": false,
        "type": "knxAddress",
        "value": "1/1/10"
       },
       {
        "key": "b",
        "label": "b",
        "type": "boolean",
        "showValue": false,
        "isInput": false,
        "isOutput": true,
        "generated": "dpt:1.001"
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M8PGAF808ETCS22QTF0GXE8V",
     "data": {
      "subType": "Not",
      "name": "Invert",
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8W1YCGQMS17N3JCD593FX15",
     "data": {
      "subType": "KnxCommand",
      "name": "Light 1/1/11",
      "notes": "",
      "properties": [
       {
        "key": "dpt",
        "label": "DPT",
        "isInput": false,
        "isOutput": false,
        "type": "dptSelect",
        "hideOnNode": true,
        "value": "1.001"
       },
       {
        "key": "address",
        "label": "Address",
        "isInput": false,
        "isOutput": false,
        "type": "knxAddress",
        "value": "1/1/11"
       },
       {
        "key": "b",
        "label": "b",
        "type": "boolean",
        "showValue": false,
        "isInput": true,
        "isOutput": false,
        "generated": "dpt:1.001"
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 0
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Reads and writes KNX group addresses directly.",
   "flowId": "01M8K61FW2Q6DJNA0SVC9FSFBX"
  },
  {
   "id": "01M8DC2ARG6R7HMXV2KC3QCEXN",
   "name": "Example - Night courtesy light",
   "checksum": "",
   "edges": [
    {
     "source": "01M811ZWN11B5B5JZ34VDV2QKM",
     "sourceHandle": "out-day",
     "target": "01M83QTVQAWP2D33EDJGTYM96R",
     "targetHandle": "in-in",
     "id": "xy-edge__01M811ZWN11B5B5JZ34VDV2QKMout-day-01M83QTVQAWP2D33EDJGTYM96Rin-in"
    },
    {
     "source": "01M83QTVQAWP2D33EDJGTYM96R",
     "sourceHandle": "out-out",
     "target": "01M8ZQSGEDRJA12Z5R7VSJDBRS",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M83QTVQAWP2D33EDJGTYM96Rout-out-01M8ZQSGEDRJA12Z5R7VSJDBRSin-in-0"
    },
    {
     "source": "01M8K443JMJ2N31G0D2D3A322T",
     "sourceHandle": "out-value",
     "target": "01M8ZQSGEDRJA12Z5R7VSJDBRS",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M8K443JMJ2N31G0D2D3A322Tout-value-01M8ZQSGEDRJA12Z5R7VSJDBRSin-in-1"
    },
    {
     "source": "01M8ZQSGEDRJA12Z5R7VSJDBRS",
     "sourceHandle": "out-out",
     "target": "01M861HBPJXKVQ6ZAQ549CN6JD",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8ZQSGEDRJA12Z5R7VSJDBRSout-out-01M861HBPJXKVQ6ZAQ549CN6JDin-input"
    },
    {
     "source": "01M861HBPJXKVQ6ZAQ549CN6JD",
     "sourceHandle": "out-out",
     "target": "01M8PPHVE8DNEP65F2FVH8GVKF",
     "targetHandle": "in-value",
     "id": "xy-edge__01M861HBPJXKVQ6ZAQ549CN6JDout-out-01M8PPHVE8DNEP65F2FVH8GVKFin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M811ZWN11B5B5JZ34VDV2QKM",
     "data": {
      "subType": "AstronomyClock",
      "name": "Sun",
      "notes": "",
      "properties": [
       {
        "key": "coordinates",
        "label": "Coordinates",
        "isInput": false,
        "isOutput": false,
        "type": "string",
        "showValue": true,
        "value": "45.55, 11.55"
       },
       {
        "key": "day",
        "label": "Day",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M83QTVQAWP2D33EDJGTYM96R",
     "data": {
      "subType": "Not",
      "name": "Night",
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8K443JMJ2N31G0D2D3A322T",
     "data": {
      "subType": "Boolean",
      "name": "Garden motion",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 280
     }
    },
    {
     "id": "01M8ZQSGEDRJA12Z5R7VSJDBRS",
     "data": {
      "subType": "And",
      "name": "Night AND motion",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "trg",
        "label": "TRG",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "boolean",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "value": false,
        "count": 1,
        "generated": "input"
       },
       {
        "key": "out",
        "label": "OUT",
        "type": "boolean",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 760,
      "y": 120
     }
    },
    {
     "id": "01M861HBPJXKVQ6ZAQ549CN6JD",
     "data": {
      "subType": "StairsLight",
      "name": "Courtesy timer",
      "notes": "",
      "properties": [
       {
        "key": "delay",
        "label": "Delay",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "value": 120,
        "showValue": true,
        "connectionCount": 1
       },
       {
        "key": "mode",
        "label": "Mode",
        "type": "select",
        "defaultValue": "presence",
        "value": "pulse",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "presence",
          "label": "Presence"
         },
         {
          "value": "pulse",
          "label": "Pulse"
         }
        ]
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 1140,
      "y": 120
     }
    },
    {
     "id": "01M8PPHVE8DNEP65F2FVH8GVKF",
     "data": {
      "subType": "Boolean",
      "name": "Garden light",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 1520,
      "y": 160
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.21
   },
   "description": "Garden light on at night with motion, off after 2 minutes.",
   "flowId": "01M8DC2ARG6R7HMXV2KC3QCEXN"
  },
  {
   "id": "01M8YYBMNM9SQNQ2W1MJ9J53S9",
   "name": "Example - Thermostat with hysteresis",
   "checksum": "",
   "edges": [
    {
     "source": "01M880ANGS9PZC3FX3SMXFWTWB",
     "sourceHandle": "out-value",
     "target": "01M812J477SW21GMXM2S99NHK9",
     "targetHandle": "in-in-0",
     "id": "xy-edge__01M880ANGS9PZC3FX3SMXFWTWBout-value-01M812J477SW21GMXM2S99NHK9in-in-0"
    },
    {
     "source": "01M84K0KP66AY54N866K4APBSY",
     "sourceHandle": "out-value",
     "target": "01M812J477SW21GMXM2S99NHK9",
     "targetHandle": "in-in-1",
     "id": "xy-edge__01M84K0KP66AY54N866K4APBSYout-value-01M812J477SW21GMXM2S99NHK9in-in-1"
    },
    {
     "source": "01M812J477SW21GMXM2S99NHK9",
     "sourceHandle": "out-out-0",
     "target": "01M8X8GT3QXDFXV2R9N4F9NM5H",
     "targetHandle": "in-value",
     "id": "xy-edge__01M812J477SW21GMXM2S99NHK9out-out-0-01M8X8GT3QXDFXV2R9N4F9NM5Hin-value"
    }
   ],
   "nodes": [
    {
     "id": "01M880ANGS9PZC3FX3SMXFWTWB",
     "data": {
      "subType": "Number",
      "name": "Room temperature",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 20,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 0
     }
    },
    {
     "id": "01M84K0KP66AY54N866K4APBSY",
     "data": {
      "subType": "Number",
      "name": "Setpoint",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 21,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 200
     }
    },
    {
     "id": "01M812J477SW21GMXM2S99NHK9",
     "data": {
      "subType": "Javascript",
      "name": "Hysteresis",
      "generator": {
       "input": {
        "key": "in",
        "label": "IN",
        "type": "string",
        "isInput": true,
        "isOutput": false,
        "showValue": false
       },
       "output": {
        "key": "out",
        "label": "OUT",
        "type": "string",
        "isInput": false,
        "isOutput": true,
        "showValue": false
       }
      },
      "notes": "",
      "properties": [
       {
        "key": "script",
        "label": "Script",
        "type": "string",
        "isInput": false,
        "isOutput": false,
        "remote": false,
        "value": "var t = Number(inputs[0]), sp = Number(inputs[1]);\nif (t <= sp - 0.5) setOutput(0, true);\nif (t >= sp + 0.5) setOutput(0, false);"
       },
       {
        "key": "in-0",
        "label": "IN",
        "type": "string",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 0,
        "generated": "input"
       },
       {
        "key": "out-0",
        "label": "OUT",
        "type": "string",
        "isInput": false,
        "isOutput": true,
        "showValue": false,
        "count": 0,
        "generated": "output"
       },
       {
        "key": "in-1",
        "label": "IN",
        "type": "string",
        "isInput": true,
        "isOutput": false,
        "showValue": false,
        "count": 1,
        "generated": "input"
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 40
     }
    },
    {
     "id": "01M8X8GT3QXDFXV2R9N4F9NM5H",
     "data": {
      "subType": "Boolean",
      "name": "Heating valve",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 80
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.4
   },
   "description": "Heating ON below setpoint - 0.5, OFF above setpoint + 0.5.",
   "flowId": "01M8YYBMNM9SQNQ2W1MJ9J53S9"
  },
  {
   "id": "01M8TKT92TJEN719TRAQNAZAKK",
   "name": "Example - Door left open",
   "checksum": "",
   "edges": [
    {
     "source": "01M8XNKKK0EHB3Z5P232KQSH5E",
     "sourceHandle": "out-value",
     "target": "01M8PKPJGMHXTKXC1YKTYSP35H",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8XNKKK0EHB3Z5P232KQSH5Eout-value-01M8PKPJGMHXTKXC1YKTYSP35Hin-input"
    },
    {
     "source": "01M8PKPJGMHXTKXC1YKTYSP35H",
     "sourceHandle": "out-out",
     "target": "01M8F7E85WM0EN91RDHCC6YAXV",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8PKPJGMHXTKXC1YKTYSP35Hout-out-01M8F7E85WM0EN91RDHCC6YAXVin-value"
    },
    {
     "source": "01M8PKPJGMHXTKXC1YKTYSP35H",
     "sourceHandle": "out-out",
     "target": "01M8ESRDJT14GV3XXD9TER5MYA",
     "targetHandle": "in-input",
     "id": "xy-edge__01M8PKPJGMHXTKXC1YKTYSP35Hout-out-01M8ESRDJT14GV3XXD9TER5MYAin-input"
    },
    {
     "source": "01M8ESRDJT14GV3XXD9TER5MYA",
     "sourceHandle": "out-out",
     "target": "01M8S65TVZGS91REJM2BQBBR5X",
     "targetHandle": "in-trigger",
     "id": "xy-edge__01M8ESRDJT14GV3XXD9TER5MYAout-out-01M8S65TVZGS91REJM2BQBBR5Xin-trigger"
    },
    {
     "source": "01M89FJJ4AC87YR3XT7P6PF6A4",
     "sourceHandle": "out-value",
     "target": "01M8S65TVZGS91REJM2BQBBR5X",
     "targetHandle": "in-enabled",
     "id": "xy-edge__01M89FJJ4AC87YR3XT7P6PF6A4out-value-01M8S65TVZGS91REJM2BQBBR5Xin-enabled"
    },
    {
     "source": "01M8S65TVZGS91REJM2BQBBR5X",
     "sourceHandle": "out-value",
     "target": "01M8KH40EZ2F6TAK1BXS2EKXV4",
     "targetHandle": "in-value",
     "id": "xy-edge__01M8S65TVZGS91REJM2BQBBR5Xout-value-01M8KH40EZ2F6TAK1BXS2EKXV4in-value"
    }
   ],
   "nodes": [
    {
     "id": "01M8XNKKK0EHB3Z5P232KQSH5E",
     "data": {
      "subType": "Boolean",
      "name": "Front door open",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 0,
      "y": 40
     }
    },
    {
     "id": "01M8PKPJGMHXTKXC1YKTYSP35H",
     "data": {
      "subType": "Timer",
      "name": "1 minute",
      "notes": "",
      "properties": [
       {
        "key": "delay-up",
        "label": "Delay Up",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "connectionCount": 1,
        "value": 60
       },
       {
        "key": "delay-down",
        "label": "Delay Down",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "connectionCount": 1,
        "value": 0
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 380,
      "y": 0
     }
    },
    {
     "id": "01M8F7E85WM0EN91RDHCC6YAXV",
     "data": {
      "subType": "Boolean",
      "name": "Door alarm",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": false,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 0
     }
    },
    {
     "id": "01M8ESRDJT14GV3XXD9TER5MYA",
     "data": {
      "subType": "Trigger",
      "name": "New alarm",
      "notes": "",
      "properties": [
       {
        "key": "cycle",
        "label": "Cycle",
        "type": "select",
        "defaultValue": "up",
        "value": "up",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "up",
          "label": "Up"
         },
         {
          "value": "down",
          "label": "Down"
         }
        ]
       },
       {
        "key": "input",
        "label": "IN",
        "isInput": true,
        "isOutput": false,
        "type": "number",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 760,
      "y": 200
     }
    },
    {
     "id": "01M89FJJ4AC87YR3XT7P6PF6A4",
     "data": {
      "subType": "Boolean",
      "name": "Count enabled",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "boolean",
        "value": true,
        "remote": false
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 760,
      "y": 420
     }
    },
    {
     "id": "01M8S65TVZGS91REJM2BQBBR5X",
     "data": {
      "subType": "Counter",
      "name": "Alarms today",
      "notes": "",
      "properties": [
       {
        "key": "preset",
        "label": "Preset",
        "isInput": false,
        "isOutput": false,
        "type": "number",
        "showValue": true,
        "hideOnNode": true,
        "value": 0
       },
       {
        "key": "mode",
        "type": "select",
        "defaultValue": "up",
        "value": "up",
        "isInput": false,
        "isOutput": false,
        "showValue": true,
        "connectionCount": 1,
        "options": [
         {
          "value": "up",
          "label": "Up"
         },
         {
          "value": "down",
          "label": "Down"
         }
        ]
       },
       {
        "key": "enabled",
        "label": "Enabled",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "trigger",
        "label": "Trigger",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "reset",
        "label": "Reset",
        "isInput": true,
        "isOutput": false,
        "type": "boolean",
        "showValue": false,
        "connectionCount": 1
       },
       {
        "key": "out",
        "label": "OUT",
        "isInput": false,
        "isOutput": true,
        "type": "boolean",
        "showValue": false
       },
       {
        "key": "value",
        "label": "Value",
        "isInput": false,
        "isOutput": true,
        "type": "number",
        "step": 1,
        "showValue": false
       }
      ]
     },
     "type": "component-vertical",
     "position": {
      "x": 1140,
      "y": 200
     }
    },
    {
     "id": "01M8KH40EZ2F6TAK1BXS2EKXV4",
     "data": {
      "subType": "Number",
      "name": "Alarm count",
      "notes": "",
      "properties": [
       {
        "key": "value",
        "label": "Value",
        "isInput": true,
        "isOutput": true,
        "type": "number",
        "value": 0,
        "remote": true
       },
       {
        "key": "persistentValue",
        "label": "Persistent value",
        "isInput": false,
        "isOutput": false,
        "type": "boolean",
        "showValue": true,
        "hideOnNode": true,
        "value": false
       }
      ]
     },
     "type": "component",
     "position": {
      "x": 1520,
      "y": 240
     }
    }
   ],
   "draggingPositions": {},
   "viewport": {
    "x": 60,
    "y": 130,
    "zoom": 1.19
   },
   "description": "Alarm if a door stays open more than 1 minute, counted for the day.",
   "flowId": "01M8TKT92TJEN719TRAQNAZAKK"
  }
 ],
 "version": 0
}