I created a robot vacuum reminder using a D1mini, ws2811 led, magnetic reed switch. See picture.
It will blink red after the robot has cleaned, so that you remember to empty the dust bin.
To reset, press the push button.
After a second day of no empty it will beep and flash.
On the 7th day it will blink blue, telling you to clean the roller. It is tied into Hubitat via Hubduino and you can see the number of minutes of cleaning. Total minutes of cleaning.
How many runs since emptied and whether to clean the brush.
Happy to share any code or 3d printed info.
I might try selling on ebay after I get all the kinks out.
I do something similar with my Roborock vacs, but I use the Community Roborock Integration which pulls in all the values such as clean time and clean area.
I wrote a scheduler app, that also detects when the vacuum is done cleaning, and I keep track of the total area cleaned since last empty, using a state variable. I have a target for area cleaned, so I compare the running total of area cleaned to the full target, to know the bin is full. I use area instead of time, in case someone pauses the robot or something during a clean.
For my auto-empty vac, I call the empty dust bin command when it returns to base and the area is over target. Then I set bin level back to zero. I also calculate a %full based on target, that goes on a dashboard.
For my non auto-empty vac, I keep track of area, and then when it goes over target, it turns on a Third Reality night light that is near the vac, to tell me if it is full. When I empty it, I double-tap a nearby Zwave switch, and it resets the bin to zero and turns off the light. I also have Alexa start telling me to empty the bin every few hours until I empty it, in case I haven't noticed the light being on.
very cool ....so it integrates with the app ?
Yes, the Roborock integration creates a Hubitat Device for each Vac, with all the attributes for the robot state, and commands to send to the vacs. My Scheduler app includes those devices in settings, and sends the start cleaning command to the device when the schedules fire. Then it subscribes to, or get current value from, the attributes from the devices, such as for area cleaned for emptying the bin, errors, maintenance timers, etc.
I set the schedules in the App preferences, and those are parsed out into the schedules in initialize()
It is a very user-specific app that has my rooms and vac names hard-coded in, so it would take a lot of rewriting to make it generic for others to use.
I already knew Java, but I didn't start writing my automations into custom Groovy apps and drivers until a year or so ago. I think it was worth the time to learn to eliminate using Rule Machine or Webcore for my automations. Definitely some pain involved with debugging, and doing all the type casting needed, which happens behind the scenes for you in the automation apps.
Very cool...my robot vac uses the Tuya app ...to my knowledge there is no support for that in hubitat : (
There is the Tuya cloud driver integration, but I don't think it can support a more complex device like vacuum.
Before the Roborock integration was out, I was using the Echo Speaks app with the voice command as text feature. With Roborock connected to Alexa by a skill, I could do voice commands, so I used Echo Speaks to text commands to run the robot from Hubitat by building text strings for the voice commands.
Problem was I couldn't get the data out of Alexa to Hubitat, but I was able to command the robot to do things with Echo Speaks, which is what my scheduler app was originally based on, just scheduling the cleanings. When the integration was released, it opened up a lot more options like tracking the dust bin.
on a side note, my device's reed switch is sometimes not registering seeing the magnet..since the robot's sometimes come into the base not centered ....so I ordered a larger magnet and also going to try a optical sensor that will sense reflection on the robot : (
Optical sensor sounds like a good idea. I don't think I ever actually said it, but I think that this is a cool setup you have created to get around the lack of a direct integration.