pymata-express
A high performance, Python asyncio client for the Arduino Firmata Protocol.
Pymata-Express is a Firmata client that, like its conventional Python sibling, pymata4, allows you to control an Arduino using the high-performance FirmataExpress sketch.
It supports both an enhanced version of StandardaFirmata 2.5.8, called FirmataExpress, as well as StandardFirmata and StandardFimataWiFi.
- FirmataExpress adds support for:
- HC-SR04 Ultrasonic Distance Sensors using a single pin.
- DHT Humidity/Temperature Sensors.
- Stepper Motors.
- Piezo Tone Generation.
- Baud rate of 115200
Major features
-
Fully documented intuitive API
-
Python 3.7+ compatible.
-
Set the pin mode and go!
-
Data change events may be associated with a callback function or each pin can be polled for its last event change.
- Each data change event is time stamped and logged.
-
User's Guide, Including Examples.
-
Implements 100% of the StandardFirmata Protocol (StandardFirmata 2.5.8).
-
Advanced auto-detection of Arduino devices (when using FirmataExpress).
Here is an example that monitors for data changes on a digital input pin.
import asyncio
import time
import sys
from pymata_express import pymata_express
"""
Setup a pin for digital input and monitor its changes
using a callback.
"""
# Setup a pin for analog input and monitor its changes
DIGITAL_PIN = 12 # arduino pin number
IDLE_TIME = .001 # number of seconds for idle loop to sleep
# Callback data indices
# Callback data indices
CB_PIN_MODE = 0
CB_PIN = 1
CB_VALUE = 2
CB_TIME = 3
async def the_callback(data):
"""
A callback function to report data changes.
This will print the pin number, its reported value and
the date and time when the change occurred
:param data: [pin, current reported value, pin_mode, timestamp]
"""
date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(data[CB_TIME]))
print(f'Pin: {data[CB_PIN]} Value: {data[CB_VALUE]} Time Stamp: {date}')
async def digital_in(my_board, pin):
"""
This function establishes the pin as a
digital input. Any changes on this pin will
be reported through the call back function.
:param my_board: a pymata_express instance
:param pin: Arduino pin number
"""
# set the pin mode
await my_board.set_pin_mode_digital_input(pin, callback=the_callback)
while True:
try:
await asyncio.sleep(IDLE_TIME)
except KeyboardInterrupt:
await board.shutdown()
sys.exit(0)
# get the event loop
loop = asyncio.get_event_loop()
# instantiate pymata_express
board = pymata_express.PymataExpress()
try:
# start the main function
loop.run_until_complete(digital_in(board, 12))
except (KeyboardInterrupt, RuntimeError) as e:
loop.run_until_complete(board.shutdown())
sys.exit(0)
Sample console output as input change events occur:
Pin: 12 Value: 0 Time Stamp: 2020-03-10 13:26:22
Pin: 12 Value: 1 Time Stamp: 2020-03-10 13:26:27
Metadata
Release files for pymata-express 1.21
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pymata-express-1.21.tar.gz | 24.5 kB | Without provenance | Details for pymata-express-1.21.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pymata_express-1.21-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for pymata_express-1.21-py2.py3-none-any.whl |
Total release size: 74.0 kB
Release files / pymata-express-1.21.tar.gz
| Download URL | pymata-express-1.21.tar.gz |
|---|---|
| Size | 24.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1417197ef601c3515829801c2afac158b1c24a78d7590adfdd38231d21c394d1
|
|
BLAKE2b-256 checksum How to use checksums |
587520319f69e6ed750d817e4a09bf50ae92f94ddc905a19428bf49b9a99f9e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.5
|
Release files / pymata_express-1.21-py2.py3-none-any.whl
| Download URL | pymata_express-1.21-py2.py3-none-any.whl |
|---|---|
| Size | 49.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
9a77974b2b79605df179bd3dfb65cf2c125e55207ca03dd810848cd2c73af665
|
|
BLAKE2b-256 checksum How to use checksums |
fac85e80feae1776fd3c8fafd30011c8b540f6f93c922ff97e110abfb9671fe7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.5
|
Security for pymata-express 1.21
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.