I hope someone can point me in the right direction.
I have a Roborock S6 vacuum, and I control it through HA. I can send it to a specific room by using a room id numer.
I’ve even made some buttons for that:
At this moment, when I press the specific room button, it will start cleaning that room.
However, if I want to clean 2 rooms f.e. 2 bedrooms, atm I need to send the vacuum to bedroom 1 first, wait till its done, then send it to bedroom 2. Or I have to make buttons for all room combinations, which is not ideal.
So, what I’m looking for is a way, to select the rooms I want to clean, and then press a button to have it start. In other words, use the state of a button to send a room id to an automation or action. Maybe even change the buttons to some kind of checklist sort of thing.
I am however unable to think of a way that I can make that possible?
Is there anyone who knows how I can do that? I could even use Node-Red.
Can anyone point me in the right direction? I just have no clue as to where to start with this…
I accomplished something similar with a bunch of boolean helpers. I want each room to be cleaned when we leave, but the vac to stop cleaning when we return. When we leave again, I have it pick up where it left off instead of starting over. When it starts a room, I have it turn on a boolean that it is cleaning that room. When it starts to return to dock, I have it turn off that boolean and turn on another boolean that the room is cleaned. I have a script that checks if a room is cleaned, if not it cleans it. This script is called after the boolean switches are switched. So each time it starts returning to the dock it checks which room needs cleaned, and cleans it.
You could have each room be a switch flagging that it needs cleaned, then run a script that checks if kitchen needs cleaned, if so clean kitchen and turn off that flag, else move to the next room and so on. When returning to the dock, run the script again and see if another room needs cleaned. It should skip kitchen because that flag is no longer on.
Ok, so I have made booleans for every room in the house. But at the moment I have like 30 scripts. One for each combination of booleans turned on or off. It works, but it’s not pretty.
Isn’t there a way to like say, if this boolean is turned on then add this id to the data segments in this script.
Here is an example of the script I have for every room:
So for every boolean I turn on, is there a way to ad a number to the “segments” part of a script like this?
I know I can use a template sensor, to change to state of the boolean to a number. But then what?
I have one script for running the vacuum. It uses “choose” and default actions as if then else. So in your script, do a Choose with condition room A needs cleaned. If it meets that condition it cleans room A, if not go on to the default action, which can be a Choose with condition room B needs cleaned, and so on. Trigger the script to begin, and again trigger the script each time the vac is headed to the doc. First time you call it, check if room A needs cleaned, cleans it if necessary then heads back to the dock, which calls again, but now A is cleaned so it skips it and goes to B (if needed). You can decide when to turn off the flag for room A. I actually have 2 flags per room, one that it is currently being cleaned, and one that it has completed cleaning, so a room doesn’t end up only being 1/2 vacuumed, but that’s up to you to handle it how you wish.
Yea thats basically what I use now, to call these small scripts to go clean. Since I dont want it returning to the dock after each room, I do it this way
I see, you want to generate the array of segments. I bet someone can figure that out, but it’s not me at this point in time!
FYI, the vacuum doesn’t get back to the dock before it gets called to clean another room for me, it starts going back for a second or two before it gets called to vacuum the next segment.
Yea exactly. Well not me either hehe. My knowledge doesn’t go that far.
Also the issue I have with it going to the dock is I only have 1 vacuum, and we put that on all floors. But when on f.e. the 2nd floor, it will not be able to find the dock because the dock is on the 1st floor. And it will just stop cleaning. I don’t mind that happening when it’s done with everything I want cleaned, but not in between