I constantly forget to take showers due to depression. I know I’m not the only one 😂 summer is early here in Texas and I don’t want to be the stinky dude

Uses the humidity readings of my bathroom to determine whether I was in the shower:

  • A running 1 hour average of the bathroom humidity is measured.
  • If the current humidity is 8% above the average, it is triggered as “wet”.
  • Then it marks down the last time, and then converts that to “days & hours since” last shower.

I have a badge at the top of my main dashboard that will let me know how long it’s been. It’s already been useful. If I see anything over 2 days I know it’s past time for a shower

I got a false positive from washing my hands when it was set to trigger by 5% increases, so I changed it to 8%.

Happy to share my code if anyone wants to do the same!

Edit: code in a comment below!

  • konim@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    Would you be able to share your code? I have the same problem possibly due to undiagnosed ADHD instead. I’ve been basically guilt tripping myself (or a parent has) to motivate myself to shower my whole life. Thanks for posting this, it seems like a way more fun way where I can be nerdy about it and still be a functional human being.

    • 4lan@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      12 hours ago

      I just got tested myself so I might be in the same boat! Waiting to get the results

    • 4lan@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      14 hours ago

      Here is my Automation:

      alias: Update Last Shower Time
      description: ""
      triggers:
        - entity_id: binary_sensor.showering
          from: "on"
          to: "off"
          trigger: state
      actions:
        - data:
            datetime: "{{ now() }}"
          action: input_datetime.set_datetime
          target:
            entity_id: input_datetime.last_shower
      

      You need to create a ‘DateTime’ helper called “Last Shower” This is where the last shower time will be stored (and can be changed)

      You need a ‘Statistics’ Helper too. Call it “Average Bathroom Humidity” and base it on whatever humidity sensor you have. Make it “average linear” then set Max Age to 1 hour. (leave other options default)

      Make these template sensors too:

      Template Binary Sensor called “Showering”:

      {{ (states('sensor.bathroom_sensor_humidity')|float - states('sensor.average_bathroom_humidity')|float) > 9 }}

      Template Sensor called “Time Since Last Shower”:

      % set diff = now() - as_datetime(states('input_datetime.last_shower')).astimezone() %}
      {% set days = diff.days %}
      {% set hours = (diff.seconds // 3600) %}
      {% if days > 0 %}
        {{ days }} day{{ 's' if days > 1 }} {{ hours }} hour{{ 's' if hours != 1 }}
      {% else %}
        {{ hours }} hour{{ 's' if hours != 1 }}
      {% endif %}
      

      Let me know if you hit any snags!