arduino-simple-rpc icon indicating copy to clipboard operation
arduino-simple-rpc copied to clipboard

Python client for the Arduino simpleRPC protocol.

Arduino simpleRPC API client library and CLI

.. image:: https://img.shields.io/github/last-commit/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc/graphs/commit-activity .. image:: https://github.com/jfjlaros/arduino-simple-rpc/actions/workflows/python-package.yml/badge.svg :target: https://github.com/jfjlaros/arduino-simple-rpc/actions/workflows/python-package.yml .. image:: https://readthedocs.org/projects/simplerpc/badge/?version=latest :target: https://arduino-simple-rpc.readthedocs.io/en/latest .. image:: https://img.shields.io/github/release-date/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc/releases .. image:: https://img.shields.io/github/release/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc/releases .. image:: https://img.shields.io/pypi/v/arduino-simple-rpc.svg :target: https://pypi.org/project/arduino-simple-rpc/ .. image:: https://img.shields.io/github/languages/code-size/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc .. image:: https://img.shields.io/github/languages/count/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc .. image:: https://img.shields.io/github/languages/top/jfjlaros/arduino-simple-rpc.svg :target: https://github.com/jfjlaros/arduino-simple-rpc .. image:: https://img.shields.io/github/license/jfjlaros/arduino-simple-rpc.svg :target: https://raw.githubusercontent.com/jfjlaros/arduino-simple-rpc/master/LICENSE.md


This library provides a simple way to interface to Arduino_ functions exported with the simpleRPC_ protocol. The exported method definitions are communicated to the host, which is then able to generate an API interface using this library.

Features:

  • User friendly API library.
  • Command line interface (CLI) for method discovery and testing.
  • Function and parameter names are defined on the Arduino.
  • API documentation is defined on the Arduino.
  • Support for disconnecting and reconnecting.
  • Support for serial and ethernet devices.

Please see ReadTheDocs_ for the latest documentation.

Quick start

Export any function e.g., digitalRead() and digitalWrite() on the Arduino, these functions will show up as member functions of the Interface class instance.

First, we make an Interface class instance and tell it to connect to the serial device /dev/ttyACM0.

.. code:: python

>>> from simple_rpc import Interface
>>> 
>>> interface = Interface('/dev/ttyACM0')

We can use the built-in help() function to see the API documentation of any exported method.

.. code:: python

>>> help(interface.digital_read)
Help on method digital_read:

digital_read(pin) method of simple_rpc.simple_rpc.Interface instance
    Read digital pin.

    :arg int pin: Pin number.

    :returns int: Pin value.

All exposed methods can be called like any other class method.

.. code:: python

>>> interface.digital_read(8)         # Read from pin 8.
0
>>> interface.digital_write(13, True) # Turn LED on.

Further reading

For more information about the host library and other interfaces, please see the Usage_ and Library_ sections.

.. _Arduino: https://www.arduino.cc .. _simpleRPC: https://simpleRPC.readthedocs.io .. _ReadTheDocs: https://arduino-simple-rpc.readthedocs.io .. _Usage: https://arduino-simple-rpc.readthedocs.io/en/latest/usage.html .. _Library: https://arduino-simple-rpc.readthedocs.io/en/latest/library.html