I have a bunch of presence and motion sensors (like four, but shush) and when people leave rooms I would like to turn the lights off after five minutes, however if someone returns to the room before that five minutes is up, I’d like to start that countdown again. Is there a grateful way to do this that isn’t me just doing if no activity for five minutes, turn off the lights, else wait five minutes and then turn off the lights. Because that’s ugly, rigid and not very smart at all.

  • SolidGrue@lemmy.world
    link
    fedilink
    English
    arrow-up
    11
    ·
    11 months ago

    You should be able to handle this in HA within a single automation:

    Trigger: Room is occupied (occupancy > 0)
    Condition: Light off
    Action:

    • Call service: Turn Light On
    • Wait for Trigger: Room is clear for 5 minutes (occupancy < 1)
    • Call service: Turn Light Off

    If you are basing your occupancy on more than one sensor state, you could build a helper to combine the states into a single sensor value, which itself might need a Hysteresis helper.

    I’ve started moving some of my own automations over to this method. It works pretty well, but it is susceptible to being interrupted by restarts or reboots. You may need to build in additional logic to reset things to a known state on startup.

    • sabreW4K3@lemmy.tfOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      11 months ago

      Bloody hell! So I saw this and it was like my vision cleared! I’m actually lost for words, but thank you. I don’t know why I didn’t realise what wait for trigger did, but holy fuck, you’re beautiful, thank you so much!

    • DrM@feddit.de
      link
      fedilink
      English
      arrow-up
      4
      ·
      11 months ago

      It’s also important to set the mode of the automation to “restart”, then it works flawlessly

        • DrM@feddit.de
          link
          fedilink
          English
          arrow-up
          2
          ·
          11 months ago

          I don’t want to set a misunderstanding: this does not solve the state on reboot issue, maybe “flawlessly” is not the correct word. On a reboot, all automations are always stopped, so that does not help here.

          • SolidGrue@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            11 months ago

            No, no. I do sometimes have to contend with race conditions and reentrant triggers. I never considered looking into whether it was possible to change the execution mode, even if I did read that documentation without understanding what it meant.

            Thanks for the pointer back to it. Now I grok it.