A Python wrapper for MATRIX HAL NFC
Project description
MATRIX-Lite-NFC-Py
MATRIX Lite NFC Py is a package that allows users of varying skill levels to easily program NFC with their MATRIX Creator.
Smartphone Apps For Debugging
Roadmap
- Reading Info (All tags)
- Reading Pages (MIFARE Ultralight & NTAG)
- Writing Page (MIFARE Ultralight & NTAG)
- Reading NDEF (MIFARE Ultralight & NTAG)
- Writing NDEF (MIFARE Ultralight & NTAG)
Installation
1. Install MATRIX HAL NFC
https://github.com/matrix-io/matrix-hal-nfc
2. Install PIP3
To call your scripts with python 3, use
python3 YOUR_SCRIPT.py
sudo apt-get install python3-pip
3. Upgrade PIP
python3 -m pip install --upgrade pip
4. Install matrix-lite-nfc-py
sudo python3 -m pip install matrix-lite-nfc
Reference
Import Statement
import matrix_lite_nfc as nfc
nfc.status
When a read or write function completes, it will contain a status code to indicate the result. nfc.Status returns a string of what that number means.
nfc.status(/*number*/)
nfc.read
There can only be one instance of NFC reading. This is a hardware limitation that will not change.
Synchronous Read
A simple read that returns an object with tag data.
nfc.read.scan({
# At least 1 read options is required. Less options -> faster reading!
"info": True, # Generic information for any NFC tag
"pages": True, # All page data
"ndef": True, # A single page(faster than pages)
"page": 0, # All NDEF data
})
Starting Read Loop
A non-blocking loop that passes tag data to a callback.
def read_callback(tag):
if(tag.status == 256):
print("NFC Tag Scanned!")
print(tag)
elif(tag.status == 1024):
print("Nothing Scanned!")
# Configure what you want to read
nfc.read.start({
"rate": 0.5, # Read loop speed (Seconds)
"info": True,
"pages": True,
"ndef": True,
"page": 0,
}, read_callback)
Stopping Read Loop
nfc.read.stop()
nfc.Message
1. Creating a new NDEF Message
# Create an empty NDEF message
msg = nfc.Message()
# Add NDEF Records to message
msg.addUriRecord("https://community.matrix.one")
msg.addUriRecord("tel:+14085551212")
msg.addTextRecord("Hello World")
msg.addTextRecord("Hola Mundo", "es")
msg.addMimeMediaRecord("text/json", '{"answer": 42}')
# You then pass msg into nfc.write.message(msg)
2. Reading a new NDEF Message
# Get NDEF data from scanned tag
tag = nfc.read.scan({"ndef": True})
# Create & print NDEF message
msg = nfc.Message(tag.ndef.content)
print(msg.getRecords())
nfc.write
Writing to an NFC tag should normally be done inside the read loop.
Writing an NDEF message
# Create new message
msg = nfc.Message()
msg.addUriRecord("https://community.matrix.one")
# Write and then Print status codes for activation & writing
print(nfc.write.message(msg))
Erasing an NDEF message
print(nfc.write.erase())
Writing to a tag's page (WARNING)
Be careful when writing to a page. You can accidentally lock your NFC tag!
# arg1: page you want to overwrite
# arg2: Array of numbers that represents a byte
print(nfc.write.page(25, [48,45,59,21]))
Building Locally For Development
Download the repository.
git clone https://github.com/matrix-io/matrix-lite-nfc-py
Install pybind11.
sudo python3 -m pip install pybind11
Compile and install library.
sudo python3 -m pip install ./matrix-lite-nfc-py
Test your changes by importing any of the following libraries into a .py
file.
# Direct C++ bindings
import _matrix_hal_nfc as hal_nfc
# Abstractions to _matrix_hal_nfc
import matrix_lite_nfc as nfc
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file matrix_lite_nfc-0.0.2.tar.gz
.
File metadata
- Download URL: matrix_lite_nfc-0.0.2.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ada29587661a07e51f3094d6cae081979502133eee35de21903ecb75dd17bd73 |
|
MD5 | 2628cfcc8efd7e4ed404baf64d48c648 |
|
BLAKE2b-256 | 489eeac4ae5ddf3d5c73c8b8ac131b32e0ae4a9791a88104dc47d1143eb6a68b |
File details
Details for the file matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl
.
File metadata
- Download URL: matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea5327a22e9e26a68102c1fd4558c20cbfca58e1865829b5b28f8e0d2d5df469 |
|
MD5 | 073f449334759c4837aa96e9e07cb5c4 |
|
BLAKE2b-256 | a12a2f28a2732bd07f622b03cbea3e44942529d9e3de81079e8af1afcc7a43f9 |
File details
Details for the file matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl
.
File metadata
- Download URL: matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11fae9fc8efa33e699e453ef6b5075a2f9e79677a6769302da0471dfe0164f86 |
|
MD5 | cd0d447db59dfb8b280e328275fcf1b3 |
|
BLAKE2b-256 | 82a247643d19699e8e1d3e8fcb16c17a7c62cb21b2d5f613d4f41bb49fdf2531 |
File details
Details for the file matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl
.
File metadata
- Download URL: matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 931b5aa4c141443335123a87a01d19ee15ea8a69d8e74fb901474421b8a4fa0c |
|
MD5 | 548b2b36d63ffbbc9edddad95d71e46c |
|
BLAKE2b-256 | 8ae6e5a59da5de86cf99c33bcf28ba6b9f1d4b0df7e0c952d6c89465498c4379 |
File details
Details for the file matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl
.
File metadata
- Download URL: matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a876561425980e6adc0849d3b609d34f2425674347f55dba5c91ce3a99758421 |
|
MD5 | 349685ae7e791c780191be0a12427f35 |
|
BLAKE2b-256 | 809b0effc4cb5506f4aeb05f7bf2c392d4c66be13bef6d8b74edf328ff067eec |