spthm / asyncpio

An asynchronous Python client for pigpio.
The Unlicense
10 stars 6 forks source link

asyncpio

asyncpio is an asynchronous Python client for pigpio, which allows control of the Raspberry Pi's General Purpose Input Outputs (GPIO).

This is a port of pigpio's thread-based Python client to asyncio.

Requirements

pigpio is a dependency: you must have the pigpio daemon, pigpiod.

Usage

Create an asyncpio.pi() and await pi.connect(), then await the various pi.* function calls as you would for pigpio,

async def main():
    pi = asyncpio.pi()
    await pi.connect()
    # ... await pi.<func> calls.

asyncio.run(main())

You may call asyncpio.pi() outside of a running event loop if you need greater control over the loop,

async def main(pi):
    await pi.connect()
    # ... await pi.<func> calls.

pi = asyncpio.pi()
loop = asyncio.get_event_loop()
loop.run_until_complete(main(pi))

See the pigpio Python documentation and EXAMPLES for the pi API.

Documentation

See http://abyz.me.uk/rpi/pigpio/

GPIO

ALL GPIO are identified by their Broadcom number. See https://pinout.xyz.

There are 54 GPIO in total, arranged in two banks.

Bank 1 contains GPIO 0-31. Bank 2 contains GPIO 32-54.

A user should only manipulate GPIO in bank 1.

There are at least three types of board:

It is safe to read all the GPIO. If you try to write a system GPIO or change its mode you can crash the Pi or corrupt the data on the SD card.