Virtuell dørlås

Hei

Forsøker å sette opp en virtuell dørlås basert på flytene her Egen modus på barnerom, men får det ikke helt til. Som bryter funket det helt fint, men dørlås har et litt annet oppsett. Prøver å sette cmd.lock.set til true/false, men det ser ikke ut til å funke. Derimot funker det å sette evt.lock.report som bool_map via mqtt.
Her er flyten:

{
  "Id": "nX4lXaIYRBMO0KE",
  "ClassId": "a8Lk1vaiMychYhQ",
  "Author": "jon",
  "Version": 0,
  "CreatedAt": "2021-12-21T13:43:27.028815867+01:00",
  "UpdatedAt": "2021-12-21T18:28:49.910997462+01:00",
  "Name": "Terrasse",
  "Group": "Doors",
  "Description": "Door lock",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "button",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:flow/ad:1/sv:door_lock/ad:nX4lXaIYRBMO0KE_0",
      "Service": "door_lock",
      "ServiceInterface": "cmd.lock.set",
      "Config": {
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": true,
        "Timeout": 0,
        "ValueFilter": {
          "Value": true,
          "ValueType": "bool"
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 60,
        "y": 209
      },
      "TypeAlias": "Trigger",
      "LastValue": true
    },
    {
      "Id": "2",
      "Type": "action",
      "Label": "send response",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:flow/ad:1/sv:door_lock/ad:nX4lXaIYRBMO0KE_0",
      "Service": "door_lock",
      "ServiceInterface": "cmd.lock.set",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 65,
        "y": 366
      },
      "TypeAlias": "Action",
      "LastValue": true
    },
    {
      "Id": "3",
      "Type": "set_variable",
      "Label": "set global variable",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "Name": "terrase_is_locked",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 72,
        "y": 536
      },
      "TypeAlias": "Set variable"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Når jeg kjører flyten fra Things Plex eller trykker på lås i appen ser det slik ut:

Jeg ser av loggen at det da sendes:

{
  "serv": "door_lock",
  "type": "cmd.lock.set",
  "val_t": "bool",
  "val": false,
  "props": {},
  "tags": null
}

Hvis jeg i stedet sender dette, så funker det:

{
  "serv": "door_lock",
  "type": "evt.lock.report",
  "val_t": "bool_map",
  "val": {
    "is_secured": true,
    "bolt_is_locked": true,
    "door_is_closed": true,
    "latch_is_closed": true
  },
  "props": {},
  "tags": null
}

Det ser da slik ut i appen:

Har forsøkt å endre på flyten til å sende bool_map i stedet for bool, men det fikk jeg ikke til å funke. Og jeg trenger egentlig bare å sette at den er låst. Er det mulig å få det til å funke med bare bool, evt få satt det opp riktig med bool_map?

Hei,
Syns dette var litt morro, så jeg gjorde et forsøk og tror jeg fikk det til :slight_smile:

{
  "Id": "WRt5nlbo6e7YkZg",
  "ClassId": "nX4lXaIYRBMO0KE",
  "Author": "jon",
  "Version": 0,
  "CreatedAt": "2021-12-21T23:42:02.189289645+01:00",
  "UpdatedAt": "2021-12-21T23:42:30.002122662+01:00",
  "Name": "Terrasse",
  "Group": "Doors",
  "Description": "Door lock",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "button",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:flow/ad:1/sv:door_lock/ad:WRt5nlbo6e7YkZg_0",
      "Service": "door_lock",
      "ServiceInterface": "cmd.lock.set",
      "Config": {
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": true,
        "Timeout": 0,
        "ValueFilter": {
          "Value": " \"is_secured\": true, \"door_is_closed\": true",
          "ValueType": ""
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 362,
        "y": 128
      },
      "TypeAlias": "Trigger",
      "LastValue": false
    },
    {
      "Id": "2",
      "Type": "action",
      "Label": "send response",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:flow/ad:1/sv:door_lock/ad:WRt5nlbo6e7YkZg_0",
      "Service": "door_lock",
      "ServiceInterface": "evt.lock.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "is_secured": true,
            "door_is_closed": true
          },
          "ValueType": "bool_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 66,
        "y": 538
      },
      "TypeAlias": "Action",
      "LastValue": true
    },
    {
      "Id": "3",
      "Type": "set_variable",
      "Label": "set global variable",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "Name": "terrase_is_locked",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 237,
        "y": 852
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "4",
      "Type": "action",
      "Label": "send response",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:flow/ad:1/sv:door_lock/ad:WRt5nlbo6e7YkZg_0",
      "Service": "door_lock",
      "ServiceInterface": "evt.lock.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "is_secured": false,
            "door_is_closed": true
          },
          "ValueType": "bool_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 451,
        "y": 546
      },
      "TypeAlias": "Action",
      "LastValue": true
    },
    {
      "Id": "5",
      "Type": "if",
      "Label": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "SuccessTransition": "",
      "ErrorTransition": "",
      "Config": {
        "TrueTransition": "2",
        "FalseTransition": "4",
        "Expression": [
          {
            "Operand": "eq",
            "LeftVariableName": "",
            "LeftVariableIsGlobal": false,
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            },
            "BooleanOperator": ""
          }
        ]
      },
      "Ui": {
        "x": 305,
        "y": 349,
        "nodeType": ""
      },
      "TypeAlias": "If condition"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}
1 Like

Dette funker perfekt. Tusen takk :smile:

1 Like

Kun for nysgjerrighet: Hva bruker dere virtuell dørlås til? :blush:

Jeg skal bruke den til å styre en bluetooth-lås via en Raspberry Pi. Det en lås fra Secuyou, som var den eneste smartlåsen for terrassedører jeg kunne finne.
Foreløpig har jeg reverse-engineeret appen, og satt den opp til å kommunisere videre via Pushbullet. Den kjører jeg på en Raspberry Pi med Lineage OS, og det fungerer ganske bra.
Prosjektet mitt er her: GitHub - joymyr/RemoteLock: Android project for remote controlling bluetooth locks.
Skal nå skrive den om litt slik at den i stedet kommuniserer over MQTT.
Prosjektet er basert på en eldre versjon av app/lås, så er ikke sikker på om den fungerer med den låsen som er i salg nå.

2 Likes