A toilet that supports SNMP could legitimately feature a this toilet is connected to the internet sticker. It's not such a strange concept - it could be built relatively easily.

The first thing to do is to obtain a small computer - an old machine that can be put near the toilet is acceptable, but a better design would be a single-board computer or a PC104 stack mounted in a plastic box in the tank. Power and network connections should be insulated for safety, although a short should end up shorting to ground through the pipe rather than through you.

Your PC104 stack should contain a servo controller board to drive the flush servo and a board with an ADC to read from the sensors (preferrably on a single board. A flash disk will reduce power consuption and make your toilet less likely to fail, but an ethernet card with network boot support will be better, so you can change everything without opening the toilet. A watchdog board is another good thing.

Obtain a contact switch, and mount it so that it will be pressed when the flush handle is pushed. You can place the switch on the outside under the handle, or you can put it inside below a lever. This is your flush sensor. Wire it to the ADC.

Now attach a position encoder to the float. You'll probably need a fixed object to attach it to as well; superglueing a support to the side of the tank should do well. This is your level sensor; attach it to the board as well. Measure the length of the float, the depth and volume of the tank, and the float's angles when the tank is full and empty, and do the appropriate math to determine the appropriate factors to use when converting an angle to a water level.

Now you need four more switches or two pressure sensors for the seat and lid. Two switches will determine if the seat and lid are open or closed, and two will determine if someone is sitting on them. If you're using the switches need to devise a method to adjust two of them so that they require slightly more force to close than the lid and seat provide themselves when closed. Epoxy the switches to the bottom of the seat and lid, so that they will press the rim and seat, respectively, when closed. If you've got pressure sensors, attach them to the bottom of the feet under the seat and rim and calibrate them by measuring their output when the seat and lid are up, down, and when someone is sitting on the toilet. You should be able to use the pressure sensors to determine the weight of someone sitting on the toilet.

You may want to put a water sensor below the rim to detect if the toilet is overflowing.

Now you're goning to wire the servos. You'll want to place one to actuate the flush handle - this could be on the outside, but it would be better to epoxy it to a frame inside. If you've got an overflow sensor, you should install an electronically-operated shut-off valve between the tank and bowl.

Once all the sensors and servos are connected, you need to write the control software. Your software should be able to interpret and report data coming in from the sensors and send commands to the toilet control systems. If you've got overflow detection, the program should be able to automatically shut off the toilet if it detects a soon-to-be overflow.

You now need to integrate your software with SNMP. Depending on the SNMP daemon you have, this could be as easy as writing a configuration file or as difficult as making heavy modifications to the daemon's source. You'll have to write a toilet MIB so your network managemnt software can interact with the toilet.

Now you can do all sorts of nifty things. You can use MRTG to monitor and graph toilet use, you can display toilet status on the web, you can flush the toilet when people are using it, you can determine when people defecate but don't flush, you can flush it hourly from cron... use your imagination!

Log in or register to write something here or to contact authors.