Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This software let you configure GPIO channels and send each new state to an API.


Installation process is really simple, the program needs the following dependencies :

  • python
  • pip
  • python-virtualenv

To install them on raspbian :

sudo aptitude install python python-virtualenv python-pip

After that, you can install PY2GPio :

cd /opt

git clone 
cd py2gpio

virtualenv .
source bin/activate
pip install -r requirements.txt

To run the program you need, to activate the virtualenv and to run :

source bin/activate

to exit the virtualenv just type deactivate in your console.

For a real environnement you probably need to let the script running, I advise you to use supervisord.

You can use the following configuration file (put in : /etc/supervisord/conf.d/) :

autorestart = true
autostart = true
startsecs = 0
command = /opt/py2gpio/bin/python /opt/py2gpio/
startretries = 1

and run supervisorctl supervisorctl start py2gpio


Two config file, need to be present :

  • config.ini (which define global settings)
  • channels.ini (for the gpio to monitor)


This file contain only two sections with one key for each one.

The general section contain a debug key which can bet set to on or off to enable or disable debug logging.

The api section contain a url key with the url of the API endpoint where the status will be pushed. You can specify a $id which will be replaced by the id key of the channel when the event will be triggered and a $value which will be replaced by the value on the gpio when triggered.

You can take a look at the config.ini.dist to have a real working example.


Each section of this file represent a gpio pin. The pin numbering schema used is the BCM one (take a look here for more informations).

Each section can have the following keys :

  • id (will replace the $id in the api url)
  • mode (default: IN)
  • pull_up_down (default: off)
  • event (default: RISING)

Take a look at the channels.ini.dist for a real working example.

You can’t perform that action at this time.