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!

  • amelore@slrpnk.net
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    I have also checked what time I showered with the logs of the humidity sensor. It’s a small bathroom so humidity goes from like 30% to 50% in 2-3 minutes and to 60% by the time I’m done showering. Normal humidity here is 25 to 40. So I just put the trigger on 55%, no average or comparing with another room necessary.

    My use case was triggering the existing ventilation but I haven’t gotten around to changing the switch for that yet.

    • 4lan@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months 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
      1
      ·
      edit-2
      2 months 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!

  • jol@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    If you want to hijack your depressed reward system further, you could try to show a streak of how many days you’ve gone without missing a shower.

    • brisk@aussie.zone
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      For me streaks are a double edged sword; if I break a streak then the stat becomes a disincentive

      • jol@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 months ago

        I actually have that too. I stopped using duolingo because I got so obcesed with my streak that once I broke it I lost all will to use it anymore.

      • pmtriste@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 months ago

        I have that same problem. I feel like nobody else I talk to understands what I’m saying.