Last year, I built a float sensor to tell me when the tree needed water.
This year I found a water sensor that accepts leads and I thought I'd try it out and see if it would work or if being wet would drain the battery. I grabbed an Aqara Zigbee water leak sensor ($15 at time of purchase) and some old wire to use as leads; hooked up the leads and ran them into the tree stand and mounted the sensor on the outside.
I left the float sensor in from last year, but it seems to be getting gummed up and not rising/falling smoothly, so it's not really working anymore. It looks a bit messy, but the tree skirt completely hides it.
I also bought a funnel, spray-painted it green, and stuck a hose on the end. The funnel sits about 4.5 feet up the tree around the back and the hose runs down into the stand. It was like $15 for the funnel, spray-paint, and hose. Well worth it.
So now the tree sends us a notification when it's thirsty and we add water through the funnel until it says it's happy. It's amazingly convenient. One of my best ideas. No more crawling under the tree trying to see how much water is there, finagle a pitcher around the branches, or figure out how much more to add!
My Home Assistant automation is really simple, when the sensor goes dry, send a notification to my tablet and to Jess' phone. Since it's a real water sensor I don't have to muck about telling the system to pretend it is one.
Someone should make a tree-stand water-level sensor that just lines up five sets of leads onto a piece of plastic, then you would get readings for "full", "3/4 full", "1/2 full", "1/4 full", and "dead empty." I'll probably add a 2nd sensor next year so I get "low" and "full" at least.