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!

all 48 comments

sorted by: hot top controversial new old
[–] 59 points 7 months ago (11 children)

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.

  • source
  • hideshow 11 child comments
  • [–] 13 points 7 months ago (2 children)

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

  • source
  • parent
  • hideshow 2 child comments
  • [–] 17 points 7 months ago (2 children)

    Why not try a challenge for how long you can go without a shower?

  • source
  • parent
  • hideshow 2 child comments
  • [–] [S] 7 points 7 months ago (3 children)

    Good idea! I aim for 2 days. My skin and hair hate Texas water

  • source
  • parent
  • hideshow 3 child comments
  • [–] 6 points 7 months ago (2 children)

    dude when i lived in texas i had to shower twice a day i got so greasy

  • source
  • parent
  • hideshow 2 child comments
  • [–] 9 points 7 months ago (4 children)

    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.

  • source
  • hideshow 4 child comments
  • [–] [S] 3 points 7 months ago (3 children)

    I'd like to do the same eventually. I rent though so it would have to be reversible

  • source
  • parent
  • hideshow 3 child comments
  • [+] 5 points 7 months ago (2 children)
  • [–] [S] 3 points 7 months ago* (last edited 7 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!

  • source
  • parent
  • [–] 5 points 7 months ago (4 children)

    Could you not also tie it into if the ceiling fan is running? Or a flow sensor on the shower?

    I'm just thinking of natural humidity and how that might skew the numbers.

    That's a really cool and neat way to pull it off. I helped myself shower more by attaching a NFC tag to the shower wall and have an alarm my phone that can only be turned off by tapping the tag. The thinking is that I might as well shower while I'm there.

  • source
  • hideshow 4 child comments
  • [–] 4 points 7 months ago (2 children)

    i have a humidity sensor in the bathroom that turns the ceiling fan on, and the way that works is that it compares the bathroom humidity to humidity in other areas of the house, so it takes into account humid/dry days automatically

  • source
  • parent
  • hideshow 2 child comments
  • [–] [S] 2 points 7 months ago

    i dont have a way to see if the fan is on currently. but it gets around natural humidity swings by comparing it to the 1hour average.
    that means if it creeps up to 70% humidity, it wont think im in the shower until it hits 78%. It has to be a sudden change because of this logic

  • source
  • parent
  • [–] 3 points 7 months ago (3 children)

    texas? 68% humidity? how did you get it that low

  • source
  • hideshow 3 child comments
  • [–] [S] 3 points 7 months ago* (2 children)

    Also! I was able to use this to make my PIR sensor presence detection more accurate

    before it would not see me in my shower and think im not there. Now that automation only triggers if the bathroom is also 'dry'

  • source
  • hideshow 2 child comments
  • [+] 1 point 7 months ago* (last edited 6 months ago) (2 children)
  • [–] [S] 1 point 7 months ago (1 child)

    thats the goal! It's a glass door though, does that matter?

  • source
  • parent
  • hideshow 1 child comment
  • load more comments (-1 replies)
  • load more comments (-1 replies)
    [–] 2 points 7 months ago (2 children)

    What sensors are you using for humidity?

  • source
  • hideshow 2 child comments
  • [–] 3 points 7 months ago*

    You didn't ask me, but as someone who has fiddled with these things my favorite sensor is the BME680, specifically the board that Adafruit sells. It costs more than other sensors, but that's because it's the best. It also does temperature, atmospheric pressure, and measures VOC. I think you can even use it to detect when someone takes a poo, but I haven't tried.

    I connect mine to LOLIN D1 Minies running Tasmota.

  • source
  • parent
  • [–] 2 points 7 months ago (2 children)

    Could make it more accurate by using a moisture sensor and placing the prongs in the shower. Could also just add a smart button on the show door/wall that you press when you shower to reset the timer.

    I have a water shutoff that I installed to cut my kids showers off, they have to press a button to turn on the shower valve. So it runs for 10min and then cuts off. Hmm my son forgets to shower often so maybe I should do something similar to remind him.

  • source
  • hideshow 2 child comments
  • [–] [S] 3 points 7 months ago

    I might look into that if this ends up giving false positives or something. So far it's working great

    I do the ability to manually change the date and time of last shower. I had to do that when tweaking the sensitivity

  • source
  • parent
  • [+] 2 points 6 months ago* (1 child)
  • [–] -4 points 7 months ago* (last edited 7 months ago) (5 children)

    Frequent showers are a bit overrated, especially when done with soap which strips your skin microbiota. πŸ˜…

    Great automation tho!

  • source
  • hideshow 5 child comments
  • [–] [S] 4 points 7 months ago (1 child)
  • [–] 2 points 7 months ago*

    My skin didn't appear to give a shit up until my mid-30s. Perhaps I just didn't notice cause it wasn't bad enough. These days a proper bath with soap produces dry and itchy skin. That's why I've switched to mostly water with mild soap only for the smell-accumulating regions. Basically balance smell control with skin health. I also haven't had any fungal skin overgrowth since then.

    My 20-year-old self would be disgusted by my 40-year-old one. πŸ˜…

    That said, am married and wife is happy with the total VOC output so I have the privilege to not have to cater to other standards.

  • source
  • parent