Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matrix_lite_nfc-0.0.2.tar.gz (10.7 kB view details)

Uploaded Source

Built Distributions

matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.7m

matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl (3.7 MB view details)

Uploaded CPython 3.7m

matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.5m

matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl (3.7 MB view details)

Uploaded CPython 3.5m

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

Hashes for matrix_lite_nfc-0.0.2.tar.gz
Algorithm Hash digest
SHA256 ada29587661a07e51f3094d6cae081979502133eee35de21903ecb75dd17bd73
MD5 2628cfcc8efd7e4ed404baf64d48c648
BLAKE2b-256 489eeac4ae5ddf3d5c73c8b8ac131b32e0ae4a9791a88104dc47d1143eb6a68b

See more details on using hashes here.

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

Hashes for matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl
Algorithm Hash digest
SHA256 ea5327a22e9e26a68102c1fd4558c20cbfca58e1865829b5b28f8e0d2d5df469
MD5 073f449334759c4837aa96e9e07cb5c4
BLAKE2b-256 a12a2f28a2732bd07f622b03cbea3e44942529d9e3de81079e8af1afcc7a43f9

See more details on using hashes here.

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

Hashes for matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl
Algorithm Hash digest
SHA256 11fae9fc8efa33e699e453ef6b5075a2f9e79677a6769302da0471dfe0164f86
MD5 cd0d447db59dfb8b280e328275fcf1b3
BLAKE2b-256 82a247643d19699e8e1d3e8fcb16c17a7c62cb21b2d5f613d4f41bb49fdf2531

See more details on using hashes here.

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

Hashes for matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl
Algorithm Hash digest
SHA256 931b5aa4c141443335123a87a01d19ee15ea8a69d8e74fb901474421b8a4fa0c
MD5 548b2b36d63ffbbc9edddad95d71e46c
BLAKE2b-256 8ae6e5a59da5de86cf99c33bcf28ba6b9f1d4b0df7e0c952d6c89465498c4379

See more details on using hashes here.

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

Hashes for matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl
Algorithm Hash digest
SHA256 a876561425980e6adc0849d3b609d34f2425674347f55dba5c91ce3a99758421
MD5 349685ae7e791c780191be0a12427f35
BLAKE2b-256 809b0effc4cb5506f4aeb05f7bf2c392d4c66be13bef6d8b74edf328ff067eec

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page