Sette huset i home/away når IDLock 150 låses/åpnes fra utsiden

Jeg har en flow som trigges når service User_Code og Interface evt.usercode.access_report fyres.

her parser jeg json og henter ut event, permission og identification.

jeg har testet flow med å bare sende push, og det funker, men det tuller seg til når jeg legger til endring av home mode. det virker som smarthub låser seg, og reagerer ikke på at det skal endre modus om den er i gang med en prosess.

jeg har prøvd å kjøre flow i paralell, beholde ny instans og avbryte gammel instans, samt beholde gammel og ignorere ny instans.

hvordan kan jeg gjøre dette optimalt og tilpasse flow slik at jeg unngår at ting låser seg. Typisk scenario er om noen låser døren, glemmer noe og åpener den igjen. I appen går det fint å bytte mellom ulike home modes uten at ting låser seg helt.

Flow:

{
  "Id": "8w4VMb0NUlP9Icb",
  "ClassId": "8w4VMb0NUlP9Icb",
  "Author": "TSA",
  "Version": 0,
  "CreatedAt": "2023-02-28T11:37:48.202424058+01:00",
  "UpdatedAt": "2023-08-15T23:10:39.511044487+02:00",
  "Name": "Home mode if door",
  "Group": "door",
  "Description": "Home mode if door",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Door is unlocked with code",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:user_code/ad:82_0",
      "Service": "user_code",
      "ServiceInterface": "evt.usercode.access_report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 74,
        "y": 201
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "transform",
      "Label": "",
      "SuccessTransition": "12",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [
          {
            "LValue": {
              "Value": 0,
              "ValueType": "int"
            },
            "RValue": {
              "Value": 0,
              "ValueType": "int"
            }
          }
        ],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.event",
            "TargetVariableName": "locked",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          },
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.permission",
            "TargetVariableName": "permission",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          },
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.identification",
            "TargetVariableName": "identification",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 100,
        "y": 449
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "4",
      "Type": "action",
      "Label": "mode = home",
      "SuccessTransition": "9",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
      "Service": "vinculum",
      "ServiceInterface": "cmd.pd7.request",
      "Config": {
        "DefaultValue": {
          "Value": {
            "cmd": "set",
            "component": "mode",
            "id": "home",
            "param": {},
            "requestId": 1
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "vinc_action",
        "x": 581,
        "y": 337
      },
      "TypeAlias": "Home mode"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "lys skitten inngang",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:45_1",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 396,
        "y": 154
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Huset er satt i Hjemme",
            "SiteId": "7fe610dc-3800-42e2-8853-c903f7501e15"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 809,
        "y": 343
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "away",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Huset er satt i Borte",
            "SiteId": "7fe610dc-3800-42e2-8853-c903f7501e15"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 1105,
        "y": 677
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "12",
      "Type": "if",
      "Label": "door is locked",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "permission",
            "Operand": "eq",
            "RightVariable": {
              "Value": "granted",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "identification",
            "Operand": "eq",
            "RightVariable": {
              "Value": "pin",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "not",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "locked",
            "Operand": "eq",
            "RightVariable": {
              "Value": "locked",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "away",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "14",
        "TrueTransition": "15"
      },
      "Ui": {
        "nodeType": "",
        "x": 209,
        "y": 671
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "14",
      "Type": "if",
      "Label": "door is unlocked",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "permission",
            "Operand": "eq",
            "RightVariable": {
              "Value": "granted",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "identification",
            "Operand": "eq",
            "RightVariable": {
              "Value": "pin",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "not",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "locked",
            "Operand": "eq",
            "RightVariable": {
              "Value": "unlocked",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "6"
      },
      "Ui": {
        "nodeType": "",
        "x": 705,
        "y": 691
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "15",
      "Type": "action",
      "Label": "Mode = Away",
      "SuccessTransition": "10",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
      "Service": "vinculum",
      "ServiceInterface": "cmd.pd7.request",
      "Config": {
        "DefaultValue": {
          "Value": {
            "cmd": "set",
            "component": "mode",
            "id": "away",
            "param": {},
            "requestId": 1
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "vinc_action",
        "x": 1120,
        "y": 420
      },
      "TypeAlias": "Home mode"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Hei!
Det kan høres litt ut som du kanskje oppretter en uønsket loop som får ting til å “låse seg”.
har du observert meldingene i message stream som kommer inn (med deaktivert flow) ved opplåsing, låsing både fra innsiden og utsiden?
Er f.eks dørlås satt til å låses i bortemodus? (hvis det er tilfelle kan denne få låsen til å sende en ny rapport på evt.usercode.access_report, som igjen trigger bortemodus osv)

tja.

Nå har jeg testet dette litt med inngående, og lagt inn en ekstra sjekk på om futurehome allerede står i den modusen som huset skal være i når man låser eller åpner.

når jeg kjører denne flowen som under, så funker det som det skal. meldingene fyrer i message stream.

men, det jeg merket er at dersom jeg endrer mode, og i all den tid den pågår så blokkeres meldinger fra låsen i message stream, slik at nye eventer ikke trigges.

Det er også slik i appen, om jeg endrer fra for eks home til away, så ser jeg at alt av lys slukkes i løpet av noen sekunder. Men om jeg endrer modus tilbake til home, så settes home i appen, men lys etc skrur seg ikke på som det skal. Jeg må ofte gå inn i appen etter en stund og trykke en gang til på home.

min antagelse er at det skjer en låsning et eller annet sted i futurehome i forbindelse med endring av home mode.
jeg har 50+ enheter bestående av låser, lys, termostater. men i home og away er det kun 10-11 av 20 lys som er påvirket.

før jeg sliter meg ut med automasjonen, er dette et kjent problem?

{
  "Id": "8w4VMb0NUlP9Icb",
  "ClassId": "8w4VMb0NUlP9Icb",
  "Author": "TSA",
  "Version": 0,
  "CreatedAt": "2023-02-28T11:37:48.202424058+01:00",
  "UpdatedAt": "2023-08-16T20:51:22.533248928+02:00",
  "Name": "Home mode if door",
  "Group": "door",
  "Description": "Home mode if door",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Door is unlocked with code",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:user_code/ad:82_0",
      "Service": "user_code",
      "ServiceInterface": "evt.usercode.access_report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 74,
        "y": 201
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "transform",
      "Label": "",
      "SuccessTransition": "12",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [
          {
            "LValue": {
              "Value": 0,
              "ValueType": "int"
            },
            "RValue": {
              "Value": 0,
              "ValueType": "int"
            }
          }
        ],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.event",
            "TargetVariableName": "locked",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          },
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.permission",
            "TargetVariableName": "permission",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          },
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.identification",
            "TargetVariableName": "identification",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 69,
        "y": 377
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "lys skitten inngang",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:45_1",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 997,
        "y": 181
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Test! Huset er satt i Hjemme",
            "SiteId": "7fe610dc-3800-42e2-8853-c903f7501e15"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 1151,
        "y": 358
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "away",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Test! Huset er satt i Borte",
            "SiteId": "7fe610dc-3800-42e2-8853-c903f7501e15"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 367,
        "y": 398
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "12",
      "Type": "if",
      "Label": "door is locked",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "permission",
            "Operand": "eq",
            "RightVariable": {
              "Value": "granted",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "identification",
            "Operand": "eq",
            "RightVariable": {
              "Value": "pin",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "locked",
            "Operand": "eq",
            "RightVariable": {
              "Value": "locked",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "14",
        "TrueTransition": "17"
      },
      "Ui": {
        "nodeType": "",
        "x": 33,
        "y": 603
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "14",
      "Type": "if",
      "Label": "door is unlocked",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "permission",
            "Operand": "eq",
            "RightVariable": {
              "Value": "granted",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "identification",
            "Operand": "eq",
            "RightVariable": {
              "Value": "pin",
              "ValueType": "string"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "locked",
            "Operand": "eq",
            "RightVariable": {
              "Value": "unlocked",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "19"
      },
      "Ui": {
        "nodeType": "",
        "x": 328,
        "y": 600
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "17",
      "Type": "if",
      "Label": "if Away",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "away",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "10",
        "TrueTransition": "18"
      },
      "Ui": {
        "nodeType": "",
        "x": 371,
        "y": 205
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "18",
      "Type": "action",
      "Label": "Gjør ingenting",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Gjør ingenting",
            "SiteId": "7fe610dc-3800-42e2-8853-c903f7501e15"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 925,
        "y": 675
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "19",
      "Type": "if",
      "Label": "If home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "9",
        "TrueTransition": "18"
      },
      "Ui": {
        "nodeType": "",
        "x": 679,
        "y": 209
      },
      "TypeAlias": "If condition"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}

@espen noen tanker om dette?