Skip to main content

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

Release files for matrix-lite-nfc 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matrix-lite-nfc 0.0.2
File Size Uploaded
matrix_lite_nfc-0.0.2.tar.gz 10.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for matrix-lite-nfc 0.0.2
File
matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl CPython 3.7 CPython 3.7 pymalloc linux armv7l Details
matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl CPython 3.7 CPython 3.7 pymalloc linux armv6l Details
matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl CPython 3.5 CPython 3.5 pymalloc linux armv7l Details
matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl CPython 3.5 CPython 3.5 pymalloc linux armv6l Details

Total release size: 14.7 MB

Release files / matrix_lite_nfc-0.0.2.tar.gz

Download URL matrix_lite_nfc-0.0.2.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ada29587661a07e51f3094d6cae081979502133eee35de21903ecb75dd17bd73
BLAKE2b-256 checksum
How to use checksums
489eeac4ae5ddf3d5c73c8b8ac131b32e0ae4a9791a88104dc47d1143eb6a68b
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl

Download URL matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv7l.whl
Size 3.7 MB
Tags CPython 3.7 CPython 3.7 pymalloc linux armv7l
SHA-256 checksum
How to use checksums
ea5327a22e9e26a68102c1fd4558c20cbfca58e1865829b5b28f8e0d2d5df469
BLAKE2b-256 checksum
How to use checksums
a12a2f28a2732bd07f622b03cbea3e44942529d9e3de81079e8af1afcc7a43f9
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl

Download URL matrix_lite_nfc-0.0.2-cp37-cp37m-linux_armv6l.whl
Size 3.7 MB
Tags CPython 3.7 CPython 3.7 pymalloc linux armv6l
SHA-256 checksum
How to use checksums
11fae9fc8efa33e699e453ef6b5075a2f9e79677a6769302da0471dfe0164f86
BLAKE2b-256 checksum
How to use checksums
82a247643d19699e8e1d3e8fcb16c17a7c62cb21b2d5f613d4f41bb49fdf2531
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl

Download URL matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv7l.whl
Size 3.7 MB
Tags CPython 3.5 CPython 3.5 pymalloc linux armv7l
SHA-256 checksum
How to use checksums
931b5aa4c141443335123a87a01d19ee15ea8a69d8e74fb901474421b8a4fa0c
BLAKE2b-256 checksum
How to use checksums
8ae6e5a59da5de86cf99c33bcf28ba6b9f1d4b0df7e0c952d6c89465498c4379
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl

Download URL matrix_lite_nfc-0.0.2-cp35-cp35m-linux_armv6l.whl
Size 3.7 MB
Tags CPython 3.5 CPython 3.5 pymalloc linux armv6l
SHA-256 checksum
How to use checksums
a876561425980e6adc0849d3b609d34f2425674347f55dba5c91ce3a99758421
BLAKE2b-256 checksum
How to use checksums
809b0effc4cb5506f4aeb05f7bf2c392d4c66be13bef6d8b74edf328ff067eec
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.0.2 This release

5 release files

0.0.1

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page