Sliter med at Zigbee PIR'er melder inn ingen bevegelse hvert 5 minutt uansett om det har vært bevegelse eller ikke. Det ødelegger for flow-kjøringen

Hei alle glupe hoder.

Jeg har laget en flow som skrur på lyset på badet når man går inn. For at man skal kunne dimme lyset opp eller ned hvis man ønsker dette, har jeg lagt inn at lyset skal trigges på hvis taklyset melder at det er av og bevegelse er oppdaget. Bruker en Set variabel til dette. Det fungerer supert. Men jeg vil at lyset skal stå på f.eks i 15 minutter før det skrur seg av etter siste bevegelse er oppdaget. Flowen er satt opp til å droppe gammel kjøring når ny hendelse i trigger er oppdaget. Og det er her problemet oppstår: PIR’ene som er satt som triggere melder inn hvert 5 min at det ikke er bevegelse oppdaget, uansett. Dermed nullstilles floden og den starter på nytt og vil aldri nå en wait på over 5 min og ergo aldri skru av lyset. Noen som vet om og hvordan man kan justere PIR’ene slik at de ikke rapporterer inn på denne måten?

Kilde:

{
  "Id": "6dok8foxLjIn1tH",
  "ClassId": "6dok8foxLjIn1tH",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2022-01-22T13:23:19.565989828+01:00",
  "UpdatedAt": "2022-01-23T09:10:51.198578495+01:00",
  "Name": "Lysstyring på badet",
  "Group": "Badet",
  "Description": "",
  "Nodes": [
    {
      "Id": "2",
      "Type": "if",
      "Label": "Hvis bevegelse oppdaget",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "Taklyset på badet er skrudd på",
            "Operand": "eq",
            "RightVariable": {
              "Value": false,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "14",
        "TrueTransition": "3"
      },
      "Ui": {
        "nodeType": "",
        "x": 51,
        "y": 511
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "3",
      "Type": "action",
      "Label": "Taklyset på",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:137_1",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 60,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 17,
        "y": 676
      },
      "TypeAlias": "Action",
      "LastValue": 60
    },
    {
      "Id": "4",
      "Type": "action",
      "Label": "Lys over vasken på",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_bin_switch/ad:70_1",
      "Service": "out_bin_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": true,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 8,
        "y": 970
      },
      "TypeAlias": "Action",
      "LastValue": true
    },
    {
      "Id": "5",
      "Type": "wait",
      "Label": "Vent 1 sek",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 1000,
      "Ui": {
        "nodeType": "",
        "x": 14,
        "y": 832
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "6",
      "Type": "trigger",
      "Label": "Bevegelse ved do",
      "SuccessTransition": "11",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zigbee/ad:1/sv:sensor_presence/ad:3_35",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": true,
          "ValueType": "bool"
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 488,
        "y": 187
      },
      "TypeAlias": "Trigger",
      "LastValue": false
    },
    {
      "Id": "7",
      "Type": "trigger",
      "Label": "Bevegelse ved vasken/dusjen",
      "SuccessTransition": "11",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zigbee/ad:1/sv:sensor_presence/ad:4_35",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": true,
          "ValueType": "bool"
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 274,
        "y": 183
      },
      "TypeAlias": "Trigger",
      "LastValue": false
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "Skru av lyset over vasken",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_bin_switch/ad:70_1",
      "Service": "out_bin_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": false,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 265,
        "y": 1010
      },
      "TypeAlias": "Action",
      "LastValue": true
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "Skru av taklyset",
      "SuccessTransition": "9",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:137_1",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "DefaultValue": {
          "Value": false,
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 264,
        "y": 852
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "11",
      "Type": "iftime",
      "Label": "",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "12",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "Action": "a",
            "From": "05:00",
            "To": "22:30",
            "Weekday": "1"
          },
          {
            "Action": "a",
            "From": "05:00",
            "To": "22:30",
            "Weekday": "2"
          },
          {
            "Action": "a",
            "From": "05:00",
            "To": "22:30",
            "Weekday": "3"
          },
          {
            "Action": "a",
            "From": "05:00",
            "To": "22:30",
            "Weekday": "4"
          },
          {
            "Action": "a",
            "From": "05:00",
            "To": "23:00",
            "Weekday": "5"
          },
          {
            "Action": "a",
            "From": "07:30",
            "To": "23:30",
            "Weekday": "6"
          },
          {
            "Action": "a",
            "From": "08:00",
            "To": "22:30",
            "Weekday": "0"
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 318,
        "y": 382
      },
      "TypeAlias": "Time filter"
    },
    {
      "Id": "12",
      "Type": "if",
      "Label": "Hvis bevegelse oppdaget",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "and",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          },
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "Taklyset på badet er skrudd på",
            "Operand": "eq",
            "RightVariable": {
              "Value": false,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "14",
        "TrueTransition": "13"
      },
      "Ui": {
        "nodeType": "",
        "x": 566,
        "y": 515
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "13",
      "Type": "action",
      "Label": "Taklys på nattmodus",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:137_1",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 20,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 525,
        "y": 691
      },
      "TypeAlias": "Action",
      "LastValue": 60
    },
    {
      "Id": "14",
      "Type": "wait",
      "Label": "Vent 5 min.",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "SuccessTransition": "10",
      "ErrorTransition": "",
      "Config": 300000,
      "Ui": {
        "x": 284,
        "y": 651,
        "nodeType": ""
      },
      "TypeAlias": "Delay"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}

Develco sensorer? Jeg meldte det inn som en feil for et års tid siden, men klarer ikke finne igjen det nå🤔

Jeg har ingen store forutsetninger for å hjelpe deg konkret med kodingen, men synes det er interessant å lære - og følger denne tråden.

I mine øyne skurrer det litt i det visuelle oppsettet ditt der du har to hvis-funksjoner (en pr sone?) som deler utfallet “vent i 5 minutter før lysene slås av”. Hvis-funksjonen repeteres ikke, den sjekker bare hvilken tilstand som gjelder når programmet kommer så langt.
Det ser ut til at ventingen alltid “vinner” med det oppsettet du har nå og at lysene derfor slås av uansett.

Ville det ikke vært riktig å snu litt på det?
Kjøre venting etter at man har slått på. Deretter sjekke tilstanden på sensoren i hver sone for å ta avgjørelsen om lysene skal forbli på eller slås av.

Hei.

  1. Det er to soner fordi en pir ikke dekker hele badet.
  2. Det er to hvis-funksjoner da jeg ønsker at lyset skal gjøre forskjellige ting til ulike tider av døgnet. Vil ikke at lyset over vasken skal skru seg på når jeg kommer subbende og må på do om natta. Derfor har jeg en egen setting for nattmodus. Bruker foreløpig ikke modusene som ligger i FH. Men vil at begge modusene skal ende med å skru av lyset når ingen er der.
  3. Ventingen vinner ikke alltid da floden er satt opp til å starte på nytt hver gang en av pirene trigger. Og det er nettopp det som er utfordringen min her. Begge pirene sender ut ingen-bevegelse hvert 5 minutt, og dermed trigges flowen på nytt, men siden allerede lyset er på = sant i hvis-funksjonene, vil ikke lysene justeres. Og det er det jeg ønsker. F.eks: Kona kommer inn og vil ta seg ett behagelig bad med spamusikk og dempet belysning. Hun kommer inn lyset trigges og skrus på, hun skrur så av lyset over vasken og demper taklyset. Med oppsettet som nå er i flowen, vil lyset forbli på så lenge bevegelse oppdages, men ingen justeringer vil skje. Utfordringen er at når hun legger seg i badet, vil ikke pir kunne oppdage bevegelse like godt siden hun er omgitt av varmt vann. Derfor ønsker jeg at lyset skal først skru seg av etter f.eks. 15 min uten bevegelse oppdaget for å øke sannsynligheten for at bevegelse igjen oppdages. På den måten kan kona nye spaoppholdet sitt uten at lysene trigges på nytt.

Message filtering “true” , på triggere

Det hjelper ikke, prøvd det. Trenger å kunne justere Zigbee-enheten. Men jeg har ikke nok kunnskap til å få til dette…

Du hadde selvfølgelig rett og i tillegg måtte jeg tenke litt anderledes. Nå bruker jeg ikke “ikke bevegelse”-argumenter i det hele tatt, og nå fungerer alt som det skal. Takk for innspillet:-)

1 Like