Skip to main content

web API to control Raspberry Pi GPIO

Project description

API to access Raspberry Pi GPIO based on Python, Flask & Rpi.GPIO library. The software launches an web API that controls IO pins using the Rpi.GPIO library.

This was meant to be used to remotely control relays, thus, it only sets the outputs as high or low.

The pins are referenced through their number printed in the board. Further information about pins can be found here.

API

Route

Request

Description

/api/gpio/

GET

Returns a json object with the status of all pins

/api/gpio/power/<PIN>

GET

Returns a json object with the power pins position and description (5V, 3V3, GND)

/api/gpio/io/<PIN>

GET

Returns a json object with de description and status for a pin. If no pin number is given, returns the status of all io pins.

/api/gpio/io/<PIN>

POST

Sets up a particular pin. Receives a json object that must have the keys type and value. type must be a string with either input or output and value must be a boolean, with the status to write to the channel of the request.

Sample response

{
    "io": [
        {
            "pin": 3,
            "pin_function": "IO",
            "pin_state": 1
        },
       ...],

    "power_pins": [
        {
            "pin": 1,
            "pin_function": "3V3 Power"
        },
       ...]
}

Installation

Latest release through PyPI:

$ pip install pi_gpio_api

Development version:

$ git clone git@github.com:jcapona/pi-gpio-api.git
$ cd pi-gpio-api
$ pip install -e .

CLI

The api can be run as a daemon using the gpioapi command in the Raspberry Pi shell.

$ gpioapi -h
usage: gpioapi [-h] [-H HOST] [-p PORT] command

GPIO web API controller

positional arguments:
  command               Control process: start, stop, restart, status

optional arguments:
  -h, --help            show this help message and exit
  -H HOST, --host HOST  host where the web server will be listening
  -p PORT, --port PORT  port where the web server will be listening

This way, the API can be launched through gpioapi start and stopped through gpioapi stop.

Use as a library

In a python shell:

>>> import pi_gpio_api
>>> pi_gpio_api.app.run(host='0.0.0.0', port=5000)

This will launch a server that listens requests on the given host & port.

Contribution

Feel free to open issues, report bugs or open pull requests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pi-gpio_api-0.1.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

pi_gpio_api-0.1.1-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file pi-gpio_api-0.1.1.tar.gz.

File metadata

  • Download URL: pi-gpio_api-0.1.1.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pi-gpio_api-0.1.1.tar.gz
Algorithm Hash digest
SHA256 821a32299a48d282a201c1b8d5ae1b7e13486fb34c7a1f5c98934f9814c6bc2f
MD5 66d277d67b59c7abd120fd3aee2328ce
BLAKE2b-256 f924b6ff5c791b736316cb3b5de5105320b3879d5299bd482c23110e1ccbec93

See more details on using hashes here.

File details

Details for the file pi_gpio_api-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pi_gpio_api-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pi_gpio_api-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4d51381383cd4af98888dae409c62d83af1cea8263e464ced58345605da9c09d
MD5 73d9d06f5af0884bbcf8943d3bbedeab
BLAKE2b-256 7f9040cc7fd0eebadc90ddd773fdc01e71e1c21249641f3d7adbe5657d156909

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page