Smart Pet Water Sensor using Aqara Water Leak Sensor

Sometimes, our 95-pound Labrador would completely empty his water bowl without us realizing it. That got me thinking… there had to be a way to automate this so we’d know when he was out of water.

I explored several options, starting with ultrasonic distance sensors, which seemed popular in similar projects. However, they felt cumbersome to remove and required constant power. I also considered a weight-sensing system, but that seemed overly complex and had the same power issue. After searching high and low, I couldn’t find anything that fit the bill, so I decided to create my own solution.

Initially, I tried using a window/door sensor, but the water’s resistance caused the battery to drain within days. That led me to Version 3. A much better approach! This design repurposes an existing Aqara Water Leak Sensor and extends its trigger distance with two stainless steel screws at the bottom of the housing. The sensor is mounted to the lip of the bowl with thumb screws, requiring no modifications to the sensor itself. Just pop it into the holder, attach the sensing screws, and you’re good to go! Adjusting the trigger distance is as simple as swapping in screws of a different length.

I even tested the sensor submerged in water for a few days, and it held up perfectly. It’s already watertight! This setup has earned the seal of approval from our overprotective dog mom, so I’d call that a win!

If others are interested, I am selling printed parts as well as full kits including the sensors here!

6 Likes

Does the Aqara sensor’s battery deplete more quickly when it stays in contact with water most of the time?

1 Like

From my extensive testing. No. Either wet or dry HA has them reporting in every 50 minutes like clockwork. This is synonymous with either my door/window sensors. I have about 40 sensors in total that encompass just windows, doors, moisture and they are all reading 100% battery. This has been an ongoing project for a few months now and I have not seen any issues. This is also supported by another user that had a similar idea on reddit. They went for 9 months and it had no issue. I have also seen where people use these sensors to detect water levels of their water tanks which would put the sensor in the same wet state.

Here are 2 sensors one wet one dry and they are reporting in at the same interval.

There is an issue with battery life if you use the normal Aqara window/door sensor. For some reason the resistance of the water causes it to drain its battery much faster. It is not a reporting interval issue as far as I can tell. It has more to do with how the PCB is setup electrically. That is just my guess though.

1 Like

thanks for this great idea! I plan something similiar to monitor the level of condensed water in a bucket. As far as I understand you replaced the hex-screw on the sensor with longer ones? If so, are the hex-screws metric and which diameter do they have? I plan to replace the hex-screws with longer ones to avoid direct contact with the sensors housing.

all the best, Andrew

I did not replace the hex screws. What I did was take the <redacted>. The screws that come with the sensor are entirely too thin to go long distances.

I also wanted to make the design modular enough so it did not require any changes to the sensor itself.

what a genius! yeah I also noticed that its hard to find longer screws with the dimension M2 (2mm). I will modify my 3d-printed part to implement your idea. many thanks

You are welcome. The next secret will cost you :wink:

1 Like

I have this set up and connected via Homekit to my phone. The issue I see is that it gives me an alert when the sensor is wet instead of when the sensor is dry. What are you guys doing to invert the binary sensor status?

Can you post how you are triggering the automation?

Simply put you want to ensure it is a state trigger from “Wet” to “Dry” for your trigger. Then the opposite as another trigger.

Edit: I misunderstood. I do not use HomeKit but @dimitri.landerloos solution is what I would assume should work when exposed to homekit.

Thats fine fo the HA automation but the sensor is shared to my phone via HomeKit. That only reports a wet alert which is opposite. Was hoping to invert the sensor value?

Go to helpers and create a template binary sensor like this:


Then use a template to determine your current state and invert it. Something like this will work.

{% if states('binary_sensor.lounge_cat_water_fountain_level_water_leak') == 'off' %}
  on
{% elif states('binary_sensor.lounge_cat_water_fountain_level_water_leak') == 'on' %}
  off
{% endif %}

ok created the template sensor… How do I get it to run and change when the actual sensor changes? It currently does not read as inverse and does not change? Always reports as Dry

{% if states('binary_sensor.winston_s_water_bowl_moisture') == 'dry' %}
  on
{% elif states('binary_sensor.winston_s_water_bowl_moisture') == 'wet' %}
  off
{% endif %}

Try with on and off as the if statement instead.

{% if states('binary_sensor.winston_s_water_bowl_moisture') == 'off' %}
  on
{% elif states('binary_sensor.winston_s_water_bowl_moisture') == 'on' %}
  off
{% endif %}

that worked