Instructables
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 88Next »

I have a remote controler where the button "pulls down" the micrcontroller line to the ground when it is pressed (opposite to your case of pulls up).

How can I do the wiring ?

great idea, can you wire up the kettle and washing machine as well?

don't be silly Snellingkorey, that would take at least 2 Raspberrys and a Strawberry!

ManuelA33 months ago

In my case ,Installing web2py on a raspberry running raspbian, I had to modify a line on setup-web2py-ubuntu.sh

From:

sudo a2ensite default

To:

sudo a2ensite default.conf

Also, the auth types on the default.conf were on apache 2.4 format, whereas the setup script installed me apache 2.2 so I had to make changes according to http://httpd.apache.org/docs/2.4/upgrading.html#ru...

i am running raspbian. can you simply give us

setup-web2py-ubuntu.sh because i am having problem setup apache 2.2 to 2.4 . please uploade somewhere or email me mejlgago@gmail.com

xpark20 days ago

Can u tell me exactly how i can access this server from an outside network?

Thanks

If I wanted to upscale this to more than just three switches, how would I do that?

davidbarcomb2 months ago

Great instructable, detailed and well explained. Keep up the good work

lzkill3 months ago

Hi pals!

The resistor used on this project are dependent on the RF controller? Why were these picked?

KentR23 months ago

How could i set this up to run locally, that is running the program directly on the pi without internet acess?

aswinmp3 months ago

My project is home automation and CCTV. After doing the cctv function using pi, we did the automation part. Upto step 7, everything went perfectly. After that, I cannot access pi using ssh or remote desktop. And I cannot access the web page.

What to do? Please help me!

I had trouble installing web2py but I think I got it solved by using this script instead:

web2py.googlecode.com/hg/scripts/setup-web2py-nginx-uwsgi-ubuntu.sh

and then running this at startup:

sudo uwsgi --master --die-on-term --emperor /etc/uwsgi --logto /var/log/uwsgi/uwsgi.log &

OliverL4 months ago

Hello!

I have ssl problem :Hibakód: ERR_SSL_PROTOCOL_ERROR.

I use Chrome and Explorer, the problem is in both.

I have no idea :-(

RobertCrabb15 months ago

Nice Job!!

Very detailed guide.

GeorgeB15 months ago

where do you download the home lights package

Hi matey, i'm from Australia and i need this model for a demo. can you please let me know if it is possible for you to post me a working model (whole kit) and guide me to make it work.Please, respond to this message on my email "rohitgoudponnam@gmail.com" is my gmail id.

Thanks and Regards

Hi.

We already developed piece of hardware for home control. There are relays, digital inputs, 1wire, EEPROM, 0-10V.....

check indiegogo project:

http://igg.me/at/unipi/x/8241961

DSC_3707e.jpgDSC_3793e.jpg
Samginoya5 months ago

hy,

wen i write this in pi terminal :

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

it show me:

python: can't open file '/home/www-data/web2py/applications/Home_Lights/modules/GPIOServer.py':

[Errno 2] No such file or directory

BennyTC5 months ago

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

BennyTC5 months ago

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);

cartiman7 months ago

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

Thanks

sadhvi9 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.

losgat10 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?

sahildhanda10 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!10 months ago

cool introduction!

IMG_5134.JPG
peecee7811 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 peecee7811 months ago

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

clintmichels3311 months ago

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?

amrnablus11 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.

icemeth1 year 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

hughjeremy1 year 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
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
andyn5001 year ago
sorry man email is a.nolan@pss.ie

Regards
andyn5001 year 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
Smarty45311 year 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
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!
1-40 of 88Next »