Code Monkey home page Code Monkey logo

homebridge-rasppi-gpio-garagedoor's Introduction

homebridge-rasppi-gpio-garagedoor

Raspberry Pi GPIO GarageDoor plugin for HomeBridge

Circuit

This plugin assumes that you are using a Raspberry Pi to directly control your garage door. Garage Door openers usually have a switch on the wall that you can push to open the garage door. On my model, this is just a very simple switch that completes a 24vdc circuit. The button must be pressed for about a second before the door will open. In order for this to be an effective garage door opener, you need two parts, a relay that will perform the duty of the button, and a reed switch that will detect when your garage door is closed.

Installation

IMPORTANT NOTE ON PIN SELECTION

When the Raspberry Pi reboots GPIO pins are reset to their default state. This can cause your garage door to open without you issuing a command. Please make sure you pick the correct pins so that you don't accidentally have your garage door opening after a power loss.

The following pins are pulled HIGH (they output a 3.3 volt signal) on reboot:

  • GPIO0/2
  • GPIO1/3
  • GPIO4
  • GPIO7
  • GPIO8

GPIO14 is configured as a Serial Transmit line, so avoid choosing that pin.

All other pins are pulled LOW (they have a 0 volt signal, same as GND).

If your relay triggers when the GPIO pin goes LOW, then pick a pin that starts out HIGH on reboot. If your relay triggers with the GPIO PIN goes HIGH then pick a GPIO pin that starts out LOW on reboot.

(information comes from https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=24491)


  1. Choose the GPIO pins that you are going to use, following the above information
  2. Export the GPIO pins to be used and set their direction after reboot
    a. Copy and edit this start script into your /etc/init.d directory.
    b. Change the values to be the gpio pins that you are using.
    c. chmod 755 /etc/init.d/garage-door-gpio # this makes the script executable
    d. sudo update-rc.d /etc/init.d/garage-door-gpio defaults # this will set up the symlinks to run the script on startup.
    e. sudo /etc/init.d/garage-door-gpio start and verify that your pins are exported by looking in ls /sys/class/gpio/ directory
  3. Install homebridge using: npm install -g homebridge
  4. Install this plugin using: npm install -g homebridge-rasppi-gpio-garagedoor
  5. Update your configuration file. See sample-config.json snippet below.
  6. Set up Homebridge to start automatically after reboot
    a. Copying the homebridge start script into your /etc/init.d directory.
    b. Modify the file to start homebridge with the .homebridge directory and user that you want. Make sure that the user you are choosing to run Homebridge as has access to write to GPIO pins. On my version of Raspbian, Homebridge has to run as root.
    c. chmod 755 /etc/init.d/homebridge
    d. sudo update-rc.d /etc/init.d/homebridge defaults
    e. sudo apt-get install apache2-utils # this will install rotatelog which is used in the start script so that the log can rotate and you can clean up diskspace
    f. sudo /etc/init.d/homebridge start and verify that it is running. Logs are located at ~pi/.homebridge/

Configuration

Configuration sample:

   "accessories": [
       {
           "accessory": "RaspPiGPIOGarageDoor",
           "name": "Garage Door",
           "doorSwitchPin": 23,
           "doorSwitchPressTimeInMs": 1000,
           "doorSwitchValue": 1,
           "closedDoorSensorPin": 24,
           "closedDoorSensorValue": 1,
           "openDoorSensorPin": 25,
           "openDoorSensorValue": 1,
           "doorPollInMs": 4000,
           "doorOpensInSeconds": 14
       }
   ],

Fields:

  • name - Can be anything (required)
  • doorSwitchPin - The physical GPIO pin number that controls the relay to trigger the garage door
  • doorSwitchPressTimeInMs - number of milliseconds to trigger the garage door button. defaults to 1000 millseconds (1 second) if not specified
  • doorSwitchValue - 1 = ACTIVE_HIGH, 0 = ACTIVE_LOW, defaults to 1 if not specified. Set to 0 if you have a relay that requires the signal to be 0v to trigger.
  • closedDoorSensorPin - The physical GPIO pin that senses if the door is closed, do not specify if no sensor present
  • closedDoorSensorValue - 1 = ACTIVE_HIGH, 0 = ACTIVE_LOW, defaults to 1 if not specified
  • openDoorSensorPin - The physical GPIO pin that senses if the door is open, do not specify if no sensor present
  • openDoorSensorValue - 1 = ACTIVE_HIGH, 0 = ACTIVE_LOW, defaults to 1 if not specified
  • doorPollInMs - Number of milliseconds to wait before polling the doorSensorPin to report if the door is open or closed
  • doorOpensInSeconds - Number of seconds it takes your garage door to open or close (err on the side of being longer than it actually takes)

homebridge-rasppi-gpio-garagedoor's People

Contributors

benlamonica avatar virgilm avatar daviderie avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.