Automatic lights off, except when showering

Hei,
in my WC I have installed a thermostat (Heatit Z-TEMP2) that measures temperature and humidity and controls water floor heating, and a movement sensor that I use in an automation to switch the light on and after 5 minutes switches it off, otherwise that light would stay on for hours.

My problem arises when I want to take a shower, because the 5-minute timeout is way too short. So I tried to edit the flow adding a check on humidity.

The flow is not working, mostly because the humidity sensor reports very seldom and not regularly. I also thought to add a virtual mode switch (i.e. shower mode) triggered by humidity level changes, but how?

Could anyone indicate me the right approach to the “shower” problem?

Thanks in advance,
Umberto

Svar gjerne på norsk, det er for sent og jeg er for trøtt for å tenke og skrive på norsk!

Hei :slight_smile:
Jeg har en lignende automasjon kjørende :smiley:
Har en virtuell bryter som styrer om den skal ignorere hendelsene fra bevegelse sensorene.

{
  "Id": "MBQEFpHljrqNmFh",
  "ClassId": "MBQEFpHljrqNmFh",
  "Author": "espenh.no",
  "Version": 0,
  "CreatedAt": "2020-10-16T23:03:44.917457863+02:00",
  "UpdatedAt": "2023-07-29T23:22:52.389768597+02:00",
  "Name": "ignore_lights_downstairs",
  "Group": "ignore_lights",
  "Description": "ignore lights on motion",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "button",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:flow/ad:1/sv:out_bin_switch/ad:MBQEFpHljrqNmFh_0",
      "Service": "out_bin_switch",
      "ServiceInterface": "cmd.binary.set",
      "Config": {
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": true,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": "bool"
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 202,
        "y": 187
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "action",
      "Label": "send response",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:flow/ad:1/sv:out_bin_switch/ad:MBQEFpHljrqNmFh_0",
      "Service": "out_bin_switch",
      "ServiceInterface": "evt.binary.report",
      "Config": {
        "DefaultValue": {
          "Value": "",
          "ValueType": "bool"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 198,
        "y": 358
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "3",
      "Type": "set_variable",
      "Label": "update gloabe variable",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "Name": "downstairs_ignore_lights",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 203,
        "y": 533
      },
      "TypeAlias": "Set variable"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Denne virtuelle bryteren sender en rapport tilbake til seg selv, samt oppdaterer statusen i en global variabel (du må opprette variabelen (med eget navn), deretter korrigere importen eller i noden etterpå. Når det er gjort kan du klikke “register device”, og det vil dukke opp i enhetslista i appen.

I bevegelse flowen legger du inn en ekstra sjekk mot den globale variabelen;

Om du har lyst denne skal bare være midlertidig kan du f.eks korrigere enda et scenario dersom bryteren er på (med f.eks lenger timeout), eventuelt at du resetter ignore lights enheten etter en gitt tid (i egen flow) eller at den resetter seg ved modusendring :slight_smile:

1 Like

Tusen takk for svaren. Jeg er på jobb akkurat nå og skal prøve å implementere dette ila helga.

1 Like

Hei, det er mitt flow:

Nå alt er sett opp, Jeg skal prøve å bruke det neste gang jeg tar en dusj med styring (sett verdi av Shower variable til 1) fra FIMP.

Men… hvordan kan jeg styre den “virtuell switch” assosiert til “Shower mode” uten å gå inn i FIMP?

mvh,
Umberto

Dette gjøres inne på den virtuelle bryter flowen :slight_smile:

Spørsmål ang din flow;
Filtrerer du verdier på trigger noden?
Jeg ville nok heller flyttet “Turn light on” til etter if noden (og eventuelt lagt inn “trigger variable til bool true” som er bevegelse registrert. Hvis ikke så vil triggeren også trigge når det ikke lenger er bevegelse, som slår på lyset, venter 5 min, for å så slå av lyset (altså når det faktisk ikke er noen i rommet)

Hei Espen,
Tusen takk, det er et veldig godt poeng! Jeg tror at hvis jeg bytter reset og delay noder får jeg det samme resultatet, med færre noder overalt på flowen.

Edit: Det går ikke, jeg skal tenke om igjen på flowen. Hva skjer hvis bevegelse er oppdaget etter flowen er riktig aktivert? Blir flyten starta på nytt? Jeg tror svaret er Ja. På dette måte blir lyset skrudd av 30 minutter etter jeg er ferdig med dusjen og ut av badet!
Og hvis jeg snur den “shower reset” etter “delay” node og noen kommer i WC mens jeg dusjer, så har jeg bare 5 minutter igjen før lyset går av igjen…

Også, jeg har et spørsmål ang automatiske genererte flyter med bevegelsesensorer:

Jeg har vært inn i koden og jeg klarte ikke å finne forskjellen mellom de to triggerne (av / på). Kan du forklare hva er forskjell mellom de to? Den ene forskjell jeg fant er at “detected” er nodetype “null” og “not detected” er nodetype “parallelMotionTrigger”

detected
      "Id": "51",
      "Type": "trigger",
      "Label": "when motion is detected  in Sottoscala",
      "SuccessTransition": "52",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_presence/ad:48_0",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": "",
          "ValueType": ""
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": "87",
          "nodeName": "motion",
          "nodeType": null
        },
        "x": 91,
        "y": 189
      },
      "TypeAlias": "Trigger"

og

not detected
      "Id": "d4041401-3f3f-11ed-a1ff-35b59f3ce5b1",
      "Type": "trigger",
      "Label": "when motion is not detected ",
      "SuccessTransition": "d4041402-3f3f-11ed-a1ff-35b59f3ce5b1",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_presence/ad:48_0",
      "Service": "sensor_presence",
      "ServiceInterface": "evt.presence.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": true,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": "",
          "ValueType": ""
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "motion",
          "nodeType": "parallelMotionTrigger"
        },
        "x": 516,
        "y": 171
      },
      "TypeAlias": "Trigger"

Hei!
Det er en liten bug der! Hvis du åpner bevegelse flow som er auto-generert fra app, og åpner source code så kan du se at det gjøres filtrering i trigger noden (ved å lese json), men dersom du åpner trigger node, så resettes den verdien av en eller annen grunn, og vil derfor ikke vise noe filtrering.