Is it possible to switch mains-powered devices (such as a coffee machine) on and off using the Pi? If so, what extra components do I need?
Yes this is possible, but you will need a relay to control the Mains power, and may need to shift levels (to properly control the relay and protect your RasPi). You may want to look at this add-on board which will both shift levels and contains two 10 Amp relays.
The easiest way is to use a 2 stage driver. You need to use a high voltage relay driver such as ULN2003 ULN2803 and then connect the output to drive a relay to control your desired component.
You can buy all those components on Mouser or DigiKey or any other major site. Just be warned that these components draw a lot of current, so you can not use the 5V that is available on the expansion connector, you need to have an external power supply with at least 1A power @5V.
Note: The reason for suggesting that a relay is used is that the Raspberry PI does not have enough power to drive that many transistor outputs, unless you use a FET transistors. A driver circuit makes sure you don't damage your precious RasPi even if you short the output or have a power surge due to the rush current of the relay switching.
There's an American product called a PowerSwitch Tail which is basically an optically isolated relay in a box. They make a complete unit for 120V, but only kits for 240V supplies.
The kit assembly looks pretty straightforward (even for a beginner). The benefit of this route is that (once completed) all the high voltage connections are safely inside the case and that the board has been designed by a professional engineer with due regard for proper isolation between the high and low voltages and between the high voltage connections.
While it is more expensive ($18) than a cobbled together circuit with a relay, it's a lot more convenient and (most likely) a lot safer too. If you were to roll your own device like this (with a proper board, case etc and all done safely), you probably wouldn't beat the price anyway, especially in hobbyist volumes.
I have interfaced a USB driven mains power switch from AVIOSYS - the USB NetPower 8800. I needed to use a powered hub as the RPi cannot generate enough power through the USB port to switch.
The AVIOSYS unit is supplied only with Windows drivers. I asked for Linux drivers and /or a protocol specification, but they refused to release any specification as they said that it was under non disclosure from Prolific who make the USB-serial converter this device used.
So I had to use a USB port capture utility to analyse the dialogue, and then reproduce it in a Python program on the RPi. There was a dialogue of over 50 messages to generate - I don't know whether they are all needed, but once initialised a single message is needed to turn on and another for off.
If you're interested the program is working on the RPi and you can download it at:
You need to also install the python-USB library on the RPi