Carpe Diem: 1 December, 2020

Cat Water Reminder

This post may contain affiliate links. Please see our disclaimer for more info.

I’ve recently become a parent and have also recently learned that my kid really likes sticking his hand in my cat’s water bowl. He then proceeds to flip the water bowl leaving a nice mess. Needless to say, we needed to move the cat’s water to the basement away from the kid’s reach. This worked out well, but the only problem is that we don’t visit the basement as often, so we don’t know as easily when the cat’s need more water. The solution? Home Assistant of course.

My cats in their natural habitat

In this post, I’ll detail my simple setup that reminds me to refill/clean the cat’s water bowl every few days. I then use a button to reset the counter so HA knows I’ve done my job. We’ll be using a counter, notifications, and automation to achieve the goal.

Ingredients

  • Amazon Dash Button (or any button type trigger – Amzn dash aren’t as readily available anymore)
  • Cat’s water bowl – here’s mine. Whatever your cats prefer
  • HA Components: counter, notifications

Equipment

Amazon Dash Button

Equipment is simple on this. We just need a button type trigger to tell HA that we’ve refilled the water bowl. I had an extra Amazon Dash button lying around so it was the perfect solution for me. If you don’t have one of these, check out SmartThings Button, however I have no firsthand experience with these (but other users have connected it with HA). You could also just create a Boolean switch in HA and control via your phone or other device. This does mean you’ll need to open the app and all that jazz. A little extra work for the lazy creative Home Automator.

Integration

Amazon Dash is a simple setup. If you’re using HASSIO there is already an add-on out there that will make adding these devices a breeze. Find it here. Follow the steps on the add-on’s GitHub to get it added to HA, and then get devices added. See my Dashio config below. In addition, Amazon will start sending you a lot of notification emails because they think you didn’t set up your device right (we’re not actually ordering products). Just create some email filter rules and auto-archive or delete those messages.

# Dashio Config Code
{
  "timeout": 40,
  "buttons": [
    {
      "name": "Amzn Dash Watr",
      "address": "xx:xx:xx:xx:xx:xx",
      "domain": "counter",
      "service": "reset",
      "service_data": "{\"entity_id\": \"counter.cats_water_days\"}"
    }
  ]
}

Next we’ll set up a counter component. This is a little handy component that does a simple task very well – it counts up (or down) when you ask it. The counter is more or less the ‘brains’ of this implementation. We’ll start the counter at zero and every early morning, we will increment the counter by one (using the increment service) to track the days since the cat’s water was refreshed. Then once the counter is greater than 3 days (or whatever number of days you prefer to refresh your cat’s water bowl), it will trigger a notification to tell me to change the cat’s water. Lastly, once we press the button, the counter will be reset (using the reset service). Pretty simple! See the section below for the automation details.

I’m assuming you already have notifications set up and am not going into them in much detail in this post. I’m using the iOS companion app that is able to send me push notifications. You can use whatever notification engine you’re most familiar with.

Automation

The automation is pretty simple for this one. I’ve detailed out some psuedo code below so you can implement it in whichever way you prefer automations (namely YAML or Node Red). I use Node Red for almost all my automations – see my automation diagram below.

# increment counter by one every day

If current.time == 1:00 AM then
  counter.increment
	
# at certain times of day, if the counter has met
# your threshold, send a notification.
# I have 2 trigger times below; use as many
# as you want and what works for your schedule

If (current_time == '7:00 AM' OR '6:00 PM') AND counter.value > 3 then 
  notification.send "Cat's out of water! Do your job!"
	
# when the button is pressed, reset the counter.
# If using Dashio, this isn't needed.

If button.action == true
  counter.reset
Node Red diagram of my automation

That’s all there is to it! Not too difficult and saves me from remembering to take care of the cats. What interesting reminder automations do you use? Please share in the comments below!

2 Comments

  1. Viktor Reply

    Haha nice, I’ve been working on a similar automation for reminding me and my SO to feed our cats (not that we usually forget ofc, just for good measure) and empty the litter box. I use our google homes to tell us whos turn it is and increasingly nag at us until we’ve clicked our flic button to mark it as done. It also checks who’s home to take into account changing days when one works late for example.

    1. Alex Post author Reply

      Ha – this is great. I like the intelligence of knowing who is home. I could see something like this evolving to include chore reminders and automated delegation for the kids when they are old enough.

Leave a Reply

Your email address will not be published. Required fields are marked *