Raspberry Pi GPIO home automation

 by willq44
I had heard about GPIO pins on the raspberry pi and decided to do something with it. And with the holidays coming, wouldn't it be great to be able to turn on and off your light display from the web!  This is a pretty simple project that creates a web app for controlling lights.  It uses the Raspberry Pi for the internet connection and a wireless remote control to turn on and off the lights. The tricky thing is to connect the Raspberry Pi GPIOs to emulate pressing the buttons on the remote control.
 
Remove these adsRemove these ads by Signing Up

Step 1: Parts

Parts needed:
• Raspberry Pi
• Remote controlled outlets
• Ribbon cable
• Solder

(Not shown)
• PCB board
• Resisters

Tools
• Soldering gun
• Dremel/Hacksaw
• Screwdriver
• Wire cutters
• Wire striper
• Multimeter
1-40 of 43Next »
lribani says: May 13, 2013. 4:47 AM
hello, and thank you willq44 for the project, great project.
the only one problem i have is that i don't use wireless relè, but cable relè. So that when i push the web button to switch on lights, lights turn on for 1 second and immediatly switch off, the same then i push the button to turn off them.
How can i solve this problem?
many thanks
lorenzo
jets_fi says: May 6, 2013. 11:44 AM
12V remote controller-people: solution found

As I cannot reply, I always need to comment (a bug with instructables, reply does not work with Chrome or Firefox).

Anyway, I found out that I should not have the battery in the remote controller while it is connected to the Pi. Pi will not read button presses if battery with the controller is present. Apparently it messes up the voltages etc. If connect to the Pi without battery, Pi will read buttons pressed correctly. But I wonder how I will power 12v controller with the Pi?

Well, as Willq44 replied somewhere here, it might just be possible to just power the remote with Pi. So, what I did as an experiment, I soldered a 3.3V (pin 1) to plus side of the battery connector in the remote. That gave me first success, but signal to the remote controlled plug was bad and it barely worked.. well, lack of power, I guess. So I tried 5V from the Pi (pin 2) and it started working. I do not know how much range will it have, but it works across the room. And that is all I need at the moment..

Phew, this has been quite an adventure :) Back to world of electronics, tin and soldering :)
jets_fi says: May 3, 2013. 12:15 PM
To reply to myself, I believe willq44 is using Revision 1 board, if I see it correctly from the picture. At least it is revision 1 board in the case project of willq44 :)

So just maybe, my problems are because of that. The pin states (or something) are a bit different.

At the moment, I have no idea how to fix it.. all help would be welcome.
jets_fi says: May 3, 2013. 5:31 AM
By the way, did you use Raspberry Pi Revision 1 or 2 board?
jets_fi says: May 3, 2013. 3:00 AM
Excellent project and thank you for great instructions! However, this project is driving me mad :) I believe I have a similar remote controller as "alfista2600". I am not a professional with electronics, but used to do all kinds of simple stuff when I was young and active radio amateur. I simply cannot make this work. I have checked and re-checked and everything should be just fine. I found out correct pins of the switches etc but no luck. All switches have one side that is connected to all the else. I even tried soldering ground wire to that common side. But then, when I plug it into Pi, the controller led just keeps on shining, which it should do only when a button is pressed. I soldered the ground back to Battery Minus. I am wondering, if I should find a ground point that is connected to the microcontroller, but I think that should not matter. All help is appreciated..
craigmawer says: Apr 29, 2013. 10:35 AM
Hi Guys
I got an strange problem with my button! assuming that when you switch the button to on it stays on, but in my case it comes on for a second and then goes off again. this is a fresh install of the pi OS and everything needed for the project to work, so there isn’t anything clashing I guess. I am using pin 11 for the led, although when i set it to other pins it does the same. Anyone got any ideas? Thanks guys
edmondwee says: Apr 15, 2013. 9:08 AM
hi, if I'm holiday and I'm far away, how would I be able to turn on or off the lights? also, would it be a stretch to put a webcam so that I watch what's happening in my home? thx
willq44 (author) in reply to edmondweeApr 21, 2013. 12:02 PM
you would have to route your website through your router to get an exteranl ip and a web cam could be a possibility but i haven't looked into it yer
amandaghassaei says: Nov 1, 2012. 3:04 PM
I like it, how many channels can you control? I see you have it set up fro three right now.
willq44 (author) in reply to amandaghassaeiNov 4, 2012. 11:43 AM
yes, three. The remote control has 3 channels. If your contrller has more, you can add more channels to the app simply by adding more lights to the database (there is even a button in the app to do it)
_soapy_ in reply to willq44Mar 30, 2013. 10:55 AM
You could easily add a second remote on a different frequency or coding, and wire that in in the same way.
rab1079 says: Mar 3, 2013. 12:39 PM
Update: I did some digging around and found that there is a much newer version of RPi.GPIO, so I installed it and it appears to work - or at least it doesn't crash and the buttons change colour. I have yet to connect anything to my Pi. Just replace the commands on Page 7 of this tutorial with the following:

wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.4.2a.tar.gz
tar zxvf RPi.GPIO-0.4.2a.tar.gz
cd RPi.GPIO-0.4.2a
sudo python setup.py install

Then run the Server as before:

sudo python /home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py
willq44 (author) in reply to rab1079Mar 28, 2013. 6:28 PM
Yes it should work but I haven't been able to update the post yet thank you for your help. I have been in a bit of a lul until I saw that my instructible was in an article.
miles.frain says: Feb 16, 2013. 3:47 PM
This is a great tutorial!

One discrepancy I noticed while following along is that for the downloadable application was renamed from "Home_Lights" to "Lights". The change affects the following:

The application homepage is now found at:
https://raspberrypi/Lights

The GPIO server script is now started with:
sudo python /home/www-data/web2py/applications/Lights/modules/GPIOServer.py

The index file ( /home/www-data/web2py/applications/Lights/views/default/index.html ) needs to be modified to point to the new locations of the on/off images. For example:
_src="/Lights/static/images/off.jpg"
willq44 (author) in reply to miles.frainMar 28, 2013. 6:25 PM
I have found that only when you download the application it proves as a problem but for me it is the same
alfista2600 says: Mar 26, 2013. 9:11 AM
Hey man - Thanks for the tutorial. I've been back several times trying to do something similar, but I am much less skilled with electronics - better with software. I got a three outlet wireless remote set. The remote controls three outlets independently with six buttons. I've determined which leads on the microcontroller trigger the signal. It is battery operated with a 12v battery which puts out 15ma I believe (not great with a multimeter yet either). Do you have any advice as to if this is possible to control with the GPIO pins without a relay, and if so, what resistor config I would need to make it send the proper signal?
willq44 (author) in reply to alfista2600Mar 28, 2013. 6:23 PM
I haven't been able to update the instructable yet but I will be soon but based on what you have said. You could probably just connect the a wire from the pie to the input into the micro controller with power to the board with the battery. I hope this answered you question if any more just ask.
skelly19 says: Mar 2, 2013. 11:39 PM
Great article. I am having trouble figuring out my remote, could you lead some assistance. There are 5 channels on the remote, each controlled by a push button(non locking). Hit the button once it goes on hit it again it goes off. How can I wire my raspberry pi into this. I have included a picture of the back. Right above the R13 is one of the buttons. Any help would be greatly appreciated.
skelly19 in reply to skelly19Mar 2, 2013. 11:40 PM
Here is the picture
2013-03-02 18.33.03.jpg
skbeez says: Mar 2, 2013. 10:20 AM
I get the same error as kaveh80 and rab1079... any help would be greatly appreciated.

... RPi.GPIO.InvalidDirectionException
rab1079 says: Mar 1, 2013. 1:28 PM
Hi,
I have the same problem as kaveh80 - when I click on button I get the error listed below. I'm new to this and don't really know where to start looking, so would be grateful for any help.

pi@raspberrypi ~ $ sudo python /home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py
waiting for connection...
...connected from: ('127.0.0.1', 35556)
Traceback (most recent call last):
File "/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py", line 39, in
ret = gpio_setup(data[1:])
File "/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py", line 13, in gpio_setup
GPIO.setup(pin,dir)
File "/usr/local/lib/python2.7/dist-packages/RPi.GPIO-0.2.0-py2.7.egg/RPi/GPIO/__init__.py", line 94, in setup
raise InvalidDirectionException
RPi.GPIO.InvalidDirectionException
freakqnc says: Feb 26, 2013. 5:27 PM
Congrats on the project... interesting way to solve your issues and thanks for introducing Web2PY to those of us who didn't know about it...

Problem for me is that this won't be applicable to a stand-alone system as in my case internet access is unavailable :(

The stand alone system would:
- have a ras-pi would running LAMP server
- have a minimal PHP/MySQL based authentication system
- have the ras-pi be connected to a router via wired connection
- have a relay module connected to the ras-pi's GPIO
- allow access to wifi devices (phones/tablets/etc) connecting to router
- let users connected to protected WLAN, access the web server
- serve a main page where upon login, will let users control a relay module

While the LAMP and connection of router and relay module poses no huge issues, the little web app that would need to be to trigger the proper GPIO output is a bit more difficult as I PHP doesn't come functions capable to interface natively with a system's GPIO so will have to be researched and made ad-hoc with a little help from the community out there :) (as I've found no ready to user free/commercial app yet).

Needless to mention that any and all help/suggestions addressing such an alternate case (stand-alone) would be very welcome and much appreciated, thanks! :)
kaveh80 says: Feb 18, 2013. 11:25 PM
Hi.

I followed your instruction and I am getting error every time I try to turn on / off any of the lights. any suggestion?

pi@raspberrypi ~ $ sudo python /home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py
waiting for connection...
...connected from: ('127.0.0.1', 54283)
Traceback (most recent call last):
File "/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py", line 39, in
ret = gpio_setup(data[1:])
File "/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py", line 13, in gpio_setup
GPIO.setup(pin,dir)
File "/usr/local/lib/python2.7/dist-packages/RPi.GPIO-0.2.0-py2.7.egg/RPi/GPIO/__init__.py", line 94, in setup
raise InvalidDirectionException
RPi.GPIO.InvalidDirectionException
biscuitbandit says: Jan 21, 2013. 9:07 AM
Can you post exactly what hardware is needed to do this project and where I might purchase them?
willq44 (author) in reply to biscuitbanditJan 22, 2013. 1:28 PM
they are a general wireless remote and you local superstore like target will have them
ride on toy dude says: Dec 11, 2012. 6:25 PM
is web2py a place made for GPIO RPI??
willq44 (author) in reply to ride on toy dudeJan 19, 2013. 8:18 AM
No it is not but I decided that if I could write and change my code any where in my house using a tablet or anything it would be very helpfull
bx16soupapes says: Dec 5, 2012. 3:09 PM
Hello Friend, can you post more pictures of your circuit?
very thanks and great work!
board.jpg
willq44 (author) in reply to bx16soupapesJan 19, 2013. 8:17 AM
This was actually just a connecting board because I decided that if I ever wanted to add any thing this would be helpful
ben_b says: Jan 8, 2013. 12:16 PM
A nice, simple solution. The only change I would recommend is using an IC to protect your RPi from any interference / shorting from the remote board (especially if a mistake is made wiring it up.
Something like a CMOS 4016 (http://www.doctronics.co.uk/4016.htm) should do the trick nicely at negligible cost - just wire it up to be powered by the 3.3v out from the Pi and connect the GPIO to the enable pins. The switch pins function similarly to a relay and even if you burn one out the rpi should be isolated from the problem and the remaining switched on the chip will continue to work
I can't upload pictures from where I am at the moment but I'll drop a sketch of how do put the chip in if people are interested
willq44 (author) in reply to ben_bJan 19, 2013. 8:15 AM
I notices this about 5 weeks after and I added on but just forgot to updatenut thank you for reminding me
TexyUK says: Jan 18, 2013. 9:49 AM
Hi,
the version of RPi.GPIO stated to install is very out of date and in any case, any recent versions of the Pi's Raspbian OS already has the latest version installed, so that stage is not needed.
Hope this helps,
Texy
willq44 (author) in reply to TexyUKJan 19, 2013. 8:12 AM
I have noticed this and this was the old version I have updated some of the software but all the code is very similar
a.streubel says: Nov 26, 2012. 8:10 AM
Hello willq44,
Thank you for your great and detailed tutorial.
I am trying to switch some relais. To do that i just need to put one gpio output high and low.
But unfortunately i dont know how i have to modify your code examples to do that (because you need inputs and outputs). Can you tell me what parts of your code i have to change to do that?
Thank you and goodbye
willq44 (author) in reply to a.streubelJan 19, 2013. 8:11 AM
In the database their is a spot to remove entry's just remove the two and if you look at the main code their is a spot that shows all the outputs of thr Rpi
Godrik says: Jan 16, 2013. 12:39 PM
Excellent! I think it will be my first test to take in hand my RPI. After I'll try to realize a thermostat managed with a web server.

very good work.
velankani says: Jan 16, 2013. 4:14 AM
can u tell me clearly ,which is the suiatbel controller
rmaldonado6 says: Jan 9, 2013. 3:47 PM
Just a couple days ago my brother and I were wondering about how to do something like this. Thank you willq44!
tarran1 says: Jan 7, 2013. 3:49 AM
This is great! Would it be possible to integrate this into something like Pushover (and hence IFTTT) so you can turn on lamps at sunset for example?
perdolis says: Jan 1, 2013. 12:05 PM
First of all, thank you, very nice!!!

I was trying to go the same following your manual... but I'm getting
[Errno 111] Connection refused when I try the app.

Any help?
1-40 of 43Next »
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!