PyMata
PyMata is a high performance, multi-threaded, non-blocking Python client for the Firmata Protocol that supports the complete StandardFirmata protocol.
A new version for Python 3.5, pymata_aio, can be found here.
The API can be viewed on the wiki.
Major features
- Implements the entire Firmata 2.4.1 protocol.
- Python 2.7+ and Python 3.4+ compatibility through a shared code set. (If you are running Python 3.4 on Linux, please see note below).
- Easy to use and intuitive API. You can view the PyMata API Documentation here or view in the Documentation/html directory.
- Custom support for stepper motors, Sonar Ping Devices (HC-SR04), Piezo devices and Rotary Encoders.
- Requires the use of FirmataPlus for PyMata - installation instructions may be found here.
- Wiring diagrams are provided for all examples in the examples directory.
- Digial and Analog Transient Signal Monitoring Via Data Latches:
- They provide "one-shot" notification when either a digital or analog pin meets a user defined threshold.
- Analog latches compare each data change to a user specified value.
- Comparison operators are <, >, <= and >=
- Digital latches compare a data change to either a high or low, specified by the user.
- Latches can easily be re-armed to detect the next transient data change.
- Latches can be either manually read or a callback can be associated with a latch for immediate notification.
- Optional callbacks provide asynchronous notification of data updates.
Callbacks
Check out the example code on the wiki.
- Digital input pins.
- Analog input pins.
- Encoder changes.
- I2C read data changes.
- SONAR (HC-SR04) distance changes.
- Analog latch condition achieved.
- Digital latch condition achieved.
- Callbacks return data reports in a single list format.
- Polling methods and callbacks are available simultaneously and can be used in a mixed polled/callback environment.
- Callbacks return data in a single list.
The callback data return values
| Callback Type | List Element 0 | List Element 1 | List Element 2 | List Element 3 |
|---|---|---|---|---|
| Analog | ANALOG MODE | Pin Number | Data Value | Not Applicable |
| Digital | DIGITAL MODE | Pin Number | Data Value | Not Applicable |
| I2C | I2C MODE | I2C Device Address | Data Value | Not Applicable |
| Sonar | Trigger Pin | Distance in Centimeters | Not Applicable | Not Applicatble |
| Encoder | Encoder MODE | Pin Number | Data Value | Not Applicable |
| Latched Analog | LATCHED ANALOG MODE | Pin Number | Data Value | Time Stamp |
| Latched Digital | LATCHED DIGITAL MODE | Pin Number | Data Value | Time Stamp |
Control-C Signal Handler
Below is a sample Control-C signal handler that can be added to a PyMata Application. It suppresses exceptions being reported as a result of the user entering a Control-C to abort the application.
import sys
import signal
# followed by another imports your application requires
# create a PyMata instance
# set the COM port string specifically for your platform
board = PyMata("/dev/ttyACM0")
# signal handler function called when Control-C occurs
def signal_handler(signal, frame):
print('You pressed Ctrl+C!!!!')
if board != None:
board.reset()
sys.exit(0)
# listen for SIGINT
signal.signal(signal.SIGINT, signal_handler)
# Your Application Continues Below This Point
Misc
- Want to extend PyMata? See Our Instructables Article explaining how stepper motor support was added. Use it as a guide to customize PyMata for your own needs.
- Check Out Mr. Y's Blog Here for all the latest news!
Special Note For Linux Users Wishing to Use Python 3.5
pymata_aio is now available and for Python 3.5.
Check out the pymata_aio wiki!
This project was developed with Pycharm
Metadata
Release files for PyMata 2.20
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-2.20.tar.gz | 23.1 kB | Without provenance | Details for PyMata-2.20.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| PyMata-2.20-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for PyMata-2.20-py2.py3-none-any.whl |
Total release size: 57.7 kB
Release files / PyMata-2.20.tar.gz
| Download URL | PyMata-2.20.tar.gz |
|---|---|
| Size | 23.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a8d16aba2c4eedde10d4f4d21932333f80d3e269a34824430f4f1291a0fb618
|
|
BLAKE2b-256 checksum How to use checksums |
de02174fceebefe3f74715f44e82a896b11f73ec782f0401eebd4baeb3c491cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.14.0 CPython/2.7.16
|
Release files / PyMata-2.20-py2.py3-none-any.whl
| Download URL | PyMata-2.20-py2.py3-none-any.whl |
|---|---|
| Size | 34.6 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b6b38fecd18176919caf2366bf6b361a6215115baaad323c642d9ed5eeaad254
|
|
BLAKE2b-256 checksum How to use checksums |
8e2b3bf95129f96761afe201d8381dd2af636b4ed4a7e40520342634def2fa2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.14.0 CPython/2.7.16
|
Security for PyMata 2.20
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.