Wednesday, October 2, 2013

Home Automation with RaspberryPi Python - Django


Home Automation with RaspberryPi Python - Django

So after attending the 2 meet-ups for IOT-Pune. I got a Raspberry Pi and decided to play around with it a little bit. The following post will walk you through the steps needed to turn on/off a light bulb.

Things needed
1. Raspberry Pi
2. Relay switch
3. light bulb with wire to plug into main power supply

Lets us start!!!

  • sudo apt-get install python-dev python-setuptools
  • sudo pip install django
  • django-admin.py startproject mysite
  • cd mysite/
  • django-admin.py startapp ledblink
  • cd mysite
  • open file named setting.py and add the ledblink app in the INSTALLED_APPS so that it looks like this
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'ledblink',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)
  • add this to the templates dir make sure you  add import os at the top of the page
TEMPLATE_DIRS = (
     os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)
  • cd ledblink
  • open the views.py file and change it to this
from django.shortcuts import render
from django.http import HttpResponse
import RPi.GPIO as GPIO
import time


GPIO.setmode(GPIO.BOARD)
GPIO.setup(18,GPIO.OUT)


def blinker(request):
    if 'on' in request.POST:
        GPIO.output(18,1)
    elif 'off' in request.POST:
        GPIO.output(18,0)
    return render(request,'control_page.html')
    
  • Let us add the template control pages so go ahead and create a templates directory in your ledblink app and add the following html code and name it control_page.html
<!DOCTYPE html>
<html>
<head>

</head>
<body>

<form action="" method="post">{% csrf_token %}
<input type="submit" name="on" value="on" />
<input type="submit" name="off" value="off" />
</form>
</body>
</html>

  • now let us create a url that links to this view. Goto the urls.py file in mysite directory cd ../mysite
from django.conf.urls import patterns, include, url
from ledblink.views import blinker
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    url(r'^ledblink/$',blinker),
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)
  • Goto main folder of the project where the manage.py file is located and run the following command
sudo python manage.py runserver 192.168.0.106:8000

open up a web browser and type http://192.168.0.106:8000/ledblink/ in the address bar and you should have the following result




now lets get to the part where we connect every thing to the raspberry pi.



  • Sorry I couldn't get a better picture even though Nishant suggested to take the book out. :P But yoy connect the 5V out of the Pi that is pin 2 to the positive on the relay . The ground pin 6 to the regative of the relay and finaly GPIO18 to the corresponding pin on the relay board.

  • Plug the bulb in the main power supply. Go ahead and try turning on the bulb from the web Browser


33 comments:

  1. To install pip
    "sudo apt-get install python-pip"

    ReplyDelete
  2. Heyy,
    You are a good IoT evangelist in Pune, Would you like to try our free IoT cloud storage platform. Do go and try http://www.sense-iot.com its free

    ReplyDelete
  3. This comment has been removed by a blog administrator.

    ReplyDelete
  4. Hi I am getting an error

    File "manage.py", line 8, in
    from django.core.management import execute_from_command_line
    ImportError: No module named django.core.management

    how to get rid of this

    ReplyDelete
    Replies
    1. install "django.core.management" by using this command
      sudo pip install django.core.management

      Delete
  5. That would mean you don't have Django installed. Do a sudo pip install django --upgrade

    ReplyDelete
  6. everythings work fine, but there is no data in request.POST so the relay no react. Any idea why?

    ReplyDelete
  7. hi
    I can not import Rpi.GPIO in the views.py?
    where strat to run server error comes :
    ImportError : No module name Rpi.GPIO

    ReplyDelete
  8. did you try read data sensor with django?thanks

    ReplyDelete
  9. It is a great website.. The Design looks very good.. Keep working like that!.
    jio.local.html

    ReplyDelete
  10. How do we run the development server on startup on the pi...I am trying to make it headless..

    ReplyDelete
  11. Superb Post, Full of Technical Knowledge. Reading this post enhance my knowledge about IOT. You can also checkout article on Introduction to Internet of Things . You can also surf projects on Raspberry Microcontroller Projects

    ReplyDelete
  12. Thanks for sharing this!
    Even turning on a light is difficult with Pi

    Melbourne Web Developer

    ReplyDelete
  13. Nice blog provides many informative and helpful articles. Thanks for sharing the information. Looking for more updates in future. Power Cord

    ReplyDelete
  14. Exclusive info about smart home automation. Thanks for sharing with s.
    IP Camera

    ReplyDelete
  15. Well described post. Thanks for sharing this useful information.
    trumpf eco nozzle

    ReplyDelete
  16. Great post. Very useful and informative post You have shared. Thank you for sharing. We are offering tablet home automation for tech enabled homes.

    ReplyDelete
  17. Whole house automation systems run $500 to $1,600, with components (switches, cameras, etc.) between $80 to as high as $200. Pricing depends on a variety of factors, most notably the type of system

    smart home devices

    ReplyDelete
  18. The 100 year old houses in my town still have original electrical switches that work. It would be absurd if I need to change my light switches every 2,5,10 years because they are smart home devices.

    ReplyDelete
  19. Hey, the content is worth to read and blog is good to follow. keep up sharing useful insights with us putlocker

    ReplyDelete
  20. Very nice post with excellent writing skills thanks for sharing.
    Data Analytics Course Online 360DigiTMG

    ReplyDelete
  21. Howdy! I simply would like to give a huge thumbs up for the good data you have here on this post. I will probably be coming again to your weblog for more soon. https://python.engineering/python-opencv-cv2-puttext-method/

    ReplyDelete