FlushBot Automatically (re)flush the toilet

Clogged and/or smelly blackwater hoses are a common problem on boats. Clogging is the result of mineral deposit buildup and odor, well, you can imagine. Clogging and smelling can be prevented by making sure that the blackwater hoses are always completely flushed clean after each use.

Here's the problem: it takes a lot of patience and determination to keep flushing the toilet after the content has disappeared from the bowl. Depending on the hose length it can take some time to ensure that the entire hose only contains clear water. Even if you are patient enough, guests, crew or caretakers probably neglect or forget to flush long enough.

Another problem is the "rotten egg smell" that develops when plankton starts decaying due to oxygen starvation. To prevent this from happening, a small reflush of just a few seconds every three hours is needed.

To solve all these problems I designed FlushBot. We have a prototype running on our catamaran ZwerfCat without problems and indeed, our hoses stay clean and without odors.


Like most simple solutions the implementation and the idea kept evolving and the end result was no longer simple but feature rich:

  • Very easy to install, it just has to be "piggy-backed" over the existing control switches.
  • Because the original installation is not modified, the switches will keep working even if FlushBot would become defect.
  • It can be used on electric toilets with just one flush button and on toilets that have separate switches for filling and emptying.
  • An extensive flush sequence can be configured which makes sure that afterwards all hoses contain only clear water.
  • After a "double click" on the existing flush button, FlushBot will take over and initiate its flush sequence without any further attention required.
  • If no "double click" is detected, 5 minutes after the last detected "flush button" use, it will initiate the flush sequence automatically.
  • The automatic flush sequence can be interrupted any time by pressing (one of) the button(s).
  • The emptying pump (macerator) can optionally be powered on half power at the end of a flush sequence to reduce the noise when air starts entering the system.
  • FlushBot can periodically (like every 3 hours) reflush the toilet for a few seconds to prevent the decay of plankton and the subsequent "rotten egg smell".
Printed Circuit Board Design
Printed Circuit Board Design

We also thought about safety:

  • The optional reflush feature is halted when it appears that the boat has been "abandoned", i.e. when FlushBot has not detected any toilet usage for more than 24 hours. This to prevent overflowing the bowl in case the macerator malfunctions and nobody is there to notice.
  • FlushBot contains a secondary micro-processor which sole task is to monitor the process and to blow the fuse if it detects a malfunction resulting in the fill pump or fill valve being activated for a too long time.
  • In an improper installation without a fuse it will self destruct in a safe way (blowing a PCB-trace) in case of a malfunction.
  • Thanks to the built-in redundancy there is no "single component failure" possible that could result into an uncontrolled filling/overflowing of the toilet bowl.

Regardless of FlushBot, any pumps/valves should be depowered in case the boat is left alone for a prolonged amount of time. Catastrophic events like lightning strikes have unpredictable consequences and can even result in switches being welded closed with subsequent uncontrolled pump activity.

Example flush sequence

On ZwerfCat, we devised this flush sequence:

  • To signal the imminent flush sequence, a half second burst is given on the macerator.
  • Four seconds of pause. If there is still someone on the toilet a press on any of the buttons cancels the flush sequence.
  • A two second fill cycle, followed by a two second emptying cycle follows.
  • This sequence is repeated three times. This serves to prevent diluting the clean water with any residue that might still be around the macerator.
  • The toilet bowl will now be filled with water.
  • 10 seconds later the fill valve will remain open, but now also the macerator is switched on.
  • 3 seconds after that the fill valve is closed, but the macerator is kept on.
  • 2 seconds later the power to the macerator is reduced to reduce the "emptying noise"; the toilet bowl can become empty any moment and air will start to rush in.
  • 2 seconds later the macerator is switched off.

The flush sequence can be programmed by "training" the FlushBot: It has to be switched into "learning mode" and then the flush sequence is manually executed by the user. FlushBot will record the proceedings and "replay" them when requested.


Use and flush the toilet normally. FlushBot is not designed to completely take over the flushing process - without getting into details - the flush process is different with every single use. After the manual flush cycle, ensuring that only clear water remains in the bowl, it is time for FlushBot to do its job. Double-click on the flush button and walk away. Or, even don't do anything at all and just walk away. In the latter case, FlushBot will 5 minutes after the last button-press automatically initiate its flush sequence.

A flush sequence can any time be aborted by pressing one of the buttons.

How to build it yourself

This project requires two micro-processors. Of course, you can opt to leave the redundant microprocessor away, but don't blame me if a software or component error results in overflowing the bowl. To build this project you need to be able to program the microprocessors, so you need a compiler (Arduino-IDE will do) and a programmer.

Schematic diagram and source codes will be presented to GitHub soon.


We are ordering a few completely assembled units. If you are interested, let us know and we will put you on the list.


Characters left: