Instructables

Raspberry Pi GPIO home automation

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

Step 2: Web Server setup

I choose the Web2Py framework for it’s ease of installation and use.  Installation is very simple.  Follow the instructions (repeated here) at http://web2py.com/books/default/chapter/29/13#One-step-production-deployment

Connect your R-PI to the internet. Logon to your R-PI and enter the following at the command line:

wget http://web2py.googlecode.com/hg/scripts/setup-web2py-ubuntu.sh
chmod +x setup-web2py-ubuntu.sh
sudo ./setup-web2py-ubuntu.sh


Follow the instructions on the screen.  This step will take several minutes and you may see some errors in the process, but it seems to work anyway.  The mail configuration is not really important, you can just set it as “no configuration”.  When asked about your location and such, the values aren't critical, do your best.  The most important thing is to remember the admin password that you select during the installation

Once the installation is complete you should be able to connect to web2py server from your computer.  In your computer's browser enter the address to your Raspberry Pi.  It is very important that you used https when connecting to the web2py server.  Your URL will look something like:

https://192.168.2.179/  or  https://rasberrypi


You may see a security warning in your browser.  That's OK,  you can safely ignore this warning.  If everything worked correctly, you should now see the welcome page for Web2Py.


1-40 of 70Next »
BennyTC3 hours ago

that is a typo, delay there is 2 seconds :P

BennyTCyesterday

Awesome project!
I intend to use it to control a door buzzer, so I added 5 second delay.

I had to change swap the output from "1" to "0", because I am using a brandless 8-relay board which operates as Active LOW (relays are turned on when output is "0").

In the hope it is of help to anyone, this is what I did:

changed the GPIOClient.py file's line 13 to this:

ON = chr(0)

and added the following lines to the GPIOServer.py file

line 3:

import time

line 12:

SleepTimeL =2

line 23: (this is after GPIO.output(pin,val))

time.sleep(SleepTimeL);

cartiman1 month ago

I use the raspberry pi from china (red color), what can?

Thanks

sadhvi3 months ago

Hi,

we are interested in doing the home lighting automation which takes care of the central lighting system. so, could you please suggest how to proceed with the project.

email-id: nangunoorilaxmijoythi1@gmail.com

Regards.

losgat4 months ago

Hi have it all setup and working as expected but is there any way to change the output for relays and not single button press applications ( using a relay that need to be powered constantly?

sahildhanda4 months ago

Traceback (most recent call last):

File "/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py", line 29, in <module>

serversock.bind(ADDR)

File "/usr/lib/python2.7/socket.py", line 224, in meth

return getattr(self._sock,name)(*args)

socket.error: [Errno 99] Cannot assign requested address

root@raspberrypi:~/RPi.GPIO-0.4.2a#

//What should I do with this error??Please Help..:)

gaelreinaudi made it!5 months ago

cool introduction!

IMG_5134.JPG
peecee785 months ago

Hey - does anyone managed to adopt this web interface to work with 8 channel relay?

I wired it but on relay all i get is just a blink of LED i try to edit the settings - same result...

Please help

sivaraaj peecee785 months ago

i think in your case the input voltage is not enough for the relay board so double check your input volt.

Sweeet!! Everything works except i have to be at home connected to my wi-fi for it to work. is that supposed to be that way?

amrnablus5 months ago

I have a question.

If i want to automate lights or AC, should this device be controllable via a remote controller in the first place or it's possible to do it with any hardware.

icemeth6 months ago

i have a problem in setting up the web2py setup. when i type sudo ./setup-web2py-ubuntu.sh it has and error and it says cannot find file destination though i have downloaded the setup file. and i cant update my raspi it also has an error. is it because i have a dynamic internet connection??pls reply i need your help..thanks

hughjeremy6 months ago
When I connect up the wires, it acts as if the button is being held down, and so it can't define which button is being pressed when multiple buttons are connected.

Long story short no matter if I turn them on or off, it doesn't make a difference!

Help would be so appreciated!
Thanks,
Hugh
ChronosWolf7 months ago
Awesome tutorial and project! Can't wait to fully try it out. I'm having one issue though. I don't have all of the proper hardware yet (I have everything but the remote outlets and a cut ribbon cable). But my problem is once I try to start the GPIOServer.py, it indefinitely says "waiting for connection...". Is this because I have nothing connected to the GPIO pins? I was hoping to run out later and get everything else I need, but I figured I would set everything software-related up first. I'm hoping this is the issue, and not the fact that my pi hates me, haha.

Anyways, thanks in advance for the response and, again, awesome instructable.

- Chronos
andyn5008 months ago
sorry man email is a.nolan@pss.ie

Regards
andyn5008 months ago
Hi I am very interested in your project its brilliant. I am new to computers and have very little understanding of electronics. Is there any chance of further instructions for this eg PCB board and what resistors you used if possible. further instructions diagrams etc.
Would be very helpful
Smarty45318 months ago
hello, awesome instruction guide everything is working except for the pictures for the buttons. when i go to the webpage they never shown up. im talking about the power bottons plz help thx
Screen Shot 2013-11-16 at 4.45.38 PM.png
مشوكري10 months ago
sir,i need your help, can give me all detail about this project? code or anything about this..tq sir
s_roll88@yahoo.com
jets_fi1 year ago
Has anyone tried doing this with remotes that are powered by 3v battery? You could power the remote with Pi then, right?

And not to forget thanking willq44 again!
sir,,i am studying b.tech(computers)....i want to do my final project on RASPBERRY PI..can you give the data and code about "Raspberry Pi GPIO home automation" ...if you give it to me then it would be helpful to my project....
my email id is : avinashcme@gmail.com
_Yvan_1 year ago
« PreviousNext »
Preview Your Comment
Hi, thanks for this very comprehensive tutorial. This instructable fits nicely into the kind of stuff I want to do as a hobbyist. It all works well untill I press "database administration" Under Model, I then get: Internal error Ticket issued: Home_Lights/192.168.1.2.2013-06-08.06-44-14.277666f1-98d4-4284-8792-601a9056bee4 The ticket reads: type 'exceptions.TypeError'> define_tables() got an unexpected keyword argument 'signature; 47 auth.define_tables(username=False, signature=False) or clicking on other tabs stuff as Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/gluon/restricted.py", line 205, in restricted exec ccode in environment File "/home/pi/web2py/applications/Home_Lights/models/db.py", line 47, in auth.define_tables(username=False, signature=False) TypeError: define_tables() got an unexpected keyword argument 'signature'. trying to get to :8000/Home_Lights/default/index brings up the same problem. Every error message hinges around unexpected keyword argument 'signature'. Do you think it might be do to my using different versions of programs or something like this. I know python is touchy about this: root@raspberrypi:~# python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 under fish://root@raspberrypi/etc/ there are 3 python folders,python2.7, python3, python3.2 Pitty, cause this happens to be exactly what I was looking for, and nowhere can I find such a thorough tutorial. I wish you can make a suggestion to make me go on. Thanks for sharing in any case Yvan
freakqnc1 year ago
willq44 or anyone has any pointer on how to change the behavior of the buttons to turn them into a relay "lick-->ON, click again-->OFF" instead of having them send a pulse to simulate the push of the button on the remote as it was needed in this project (bueller... bueller... ;D)? Thanks!
lribani1 year ago
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
Have the same problem that Lorenzo Ribani described.

The current buttons act as a trigger which goes on and then almost immediately off. What should be modified to make each button a toggle that will behave following a pattern like: click-->ON, click again-->OFF (and so forth)

Thanks! :)
freakqnc1 year ago
Oh... and  wanted to ask whomever may know... does the service always need to be started manually issuing:

sudo python /home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py

or will web2pi start it automatically? If not how can it be started automatically each time the RPi boots?

Thanks! :)
freakqnc1 year ago
The python module is up to RPi.GPIO-05.2a and there have been several fixes to it worth installing that instead of using RPi.GPIO-04.2a. If you like me have typed into the terminal (I was in the Raspi via VNC) and get a 404 no matter how you spellcheck every single bit of the whole URL... then just use midori to get to the page where the file is, then right click on the file and copy the location... then go back to the terminal and you will no longer get a 404 there must be something wrong maybe with a dash character because I checked all the characters time and again and kept receiving a 404 if I was typing the URL myself... did I say nothing comes easy lately? Geez I need to burn some sage! ;P
freakqnc1 year ago
Well whaddayano... on mac there is a bit of an issue with the file web2py.app.Home_Lights.w2p.zip

To begin with it downloaded as FQ13R8YH8RK8Q4L.zip but that's no biggie since could be renamed, but the auto expansion of the downloaded zip kicked in and created the file properly named

The problem is that it was named: web2py.app.Home_Lights.w2p.app and showing as a MacOSX app with a forbidden sign over it (showing is incompatible with mac OSX. Well you'd think remove the .app extension? Not so fast! Won't let you. So I went to the info (Command-i) and unlocked (via the lock icon at bottom left of the info pane (in OS 10.6.8) and I was eventually able to change the name in the "Name & Extension" text area in the info pane... now it became a folder containing all the files that the package has inside! Obviously the app could not be recognized by the web2py package uploader.

Soooo... I got better zip (a mac utility used to open zipped and other compressed files) and used that to expand the content by dragging and dropping what listed to be the file contained by the zipped archive... the only file visible was one named "web2py.app.Home_Lights.w2p" so I dragged and dropped it on the desktop... NO GO... better zip complained about some kind of wrong password... then I decide instead to right-click on that web2py.app.Home_Lights.w2p file and selected "Extract here" from the contextual menu.... FINALLY! I got the file web2py.app.Home_Lights.w2p on the desktop which the uploader could see.... boy! nothing really comes easy lately! :)

By the way if you have problems logging into your admin area make sure you used HTTPS! Or you would get a 403/Forbidden. Even if getting the https error from your browser say ok and continue loading the page... you'll get a prompt for the admin pass hope that helps those who may get stuck there ;)
freakqnc1 year ago
Curious to know two things...

1) Will the pi be able to use this without being connected to the internet? I have to install in a location where there is no internet available and I am planning to access the pi via standalone wifi router.

2) What do you need on the pi just Raspbian or a LAMP or other software? Web2Py seems to be a complete framework that comes with its server/MySQL and what not... though the documentation states that it works with other webservers too so I am wondering if one needs anything besides the latest Raspbian OS (I'd install at least raspbian and VNC on it if nothing else is needed).

Thanks for the tutorial and for keeping it up-to-date! :)
jets_fi1 year ago
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_fi1 year ago
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_fi1 year ago
By the way, did you use Raspberry Pi Revision 1 or 2 board?
jets_fi1 year ago
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..
craigmawer1 year ago
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
edmondwee1 year ago
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)  edmondwee1 year ago
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
I like it, how many channels can you control? I see you have it set up fro three right now.
willq44 (author)  amandaghassaei1 year ago
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)
You could easily add a second remote on a different frequency or coding, and wire that in in the same way.
rab10791 year ago
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)  rab10791 year ago
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.
1-40 of 70Next »