Lire et écrire des balises NFC avec python en utilisant PaSoRi

Aperçu

Nous résumerons comment lire et écrire des balises NFC (NTAG) bon marché à partir de python sur Mac à l'aide du PaSoRi de Sony (RC-S380), qui est un lecteur / graveur NFC / Felica connecté par USB. Fondamentalement, nfcpy est une solution.

Je ne l'ai pas essayé, mais il semble qu'il puisse être utilisé de la même manière avec Raspberry Pi. (Ajout) Même avec Raspbian, la procédure d'installation était correcte avec juste sudo apt-get install python-pip; sudo pip install nfcpy. Cependant, pour accéder à l'usb avec des privilèges généraux, la procédure écrite dans la seconde moitié de Procédure d'installation de nfcpy sur Raspberry Pi - Edition privée de mars 2016 Est requis.

Procédure de configuration de l'environnement

supposition

J'utilise le python 2.7 de Brew. Vous devriez pouvoir le faire avec python du côté système, mais c'est un point subtil en quoi consiste la version d'openssl, donc si cela ne fonctionne pas, essayez et faites une erreur.

nfcpy La procédure pour amener nfcpy avec bzr est souvent introduite, mais avec pip, c'est un coup.

> brew install libusb
> pip install nfcpy

Si vous êtes accro à openssl

Ce serait bien si je pouvais taper import nfc avec REPL de python et le charger sans aucun problème, mais il y a des cas où le libcrypto inclus dans openssl échoue à se charger.

>>> import nfc
(Omission)
AttributeError: dlsym(0x7fbc82c404a0, EC_KEY_set_public_key_affine_coordinates): symbol not found

En guise de contre-mesure, il existe de nombreux articles qui disent que c'est OK si vous installez un nouveau openssl avec brew et le liez.

> brew link openssl --force
Warning: Refusing to link: openssl

Je ne peux pas établir de lien.

La dernière version de libcrypto.1.0.0.dylib est installée sous / usr / local / opt / openssl / lib, donc si vous spécifiez cela comme chemin de chargement de la bibliothèque de liens dynamiques, cela fonctionnera pour le moment. Que dois-je faire avec la bonne solution?

export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

Lire et écrire des tags NFC

Échantillon officiel de nfcpy

Lisez le [get-started] officiel (https://nfcpy.readthedocs.io/en/latest/topics/get-started.html) ou [exemples](https://github.com/nfcpy/nfcpy/ Vous pouvez voir comment l'utiliser en regardant l'exemple dans tree / master / examples). L'exemple seul peut également être utilisé comme commande (Comment utiliser)

Par exemple, vous pouvez afficher les informations de balise NFC avec la commande suivante.

> python tagtool.py show

Pour écrire les données pour ouvrir une vidéo YouTube sur NTAG:

> python ndeftool.py make smartposter -t PPAP https://youtu.be/0E00Zuayv9Q | python tagtool.py load -

Écrivez vous-même

Si vous souhaitez écrire vous-même le traitement nécessaire à l'aide de nfcpy, le code sera le suivant.

import nfc
import nfc.ndef

def startup(targets):
    print "waiting for new NFC tags..."
    return targets


def connected(tag):
    if not tag.ndef or not tag.ndef.is_writeable:
        print("not a writeable nfc tag")
        return False
    print("old message:")
    print(tag.ndef.message.pretty())

    smartposter = nfc.ndef.SmartPosterRecord("https://youtu.be/0E00Zuayv9Q")
    smartposter.title = "PPAP"
    new_message = nfc.ndef.Message(smartposter)

    if len(str(new_message)) > tag.ndef.capacity:
        print "too long message"
        return True

    if tag.ndef.message == new_message:
        print "already same record"
        return True

    tag.ndef.message = new_message
    print("new message:")
    print(tag.ndef.message.pretty())

    return True


def released(tag):
    print("released:")
    if tag.ndef:
        print(tag.ndef.message.pretty())
    

clf = nfc.ContactlessFrontend('usb')
print(clf)
if clf:
    while clf.connect(rdwr={
        'on-startup': startup,
        'on-connect': connected,
        'on-release': released,
    }):
        pass

Réécrivez simplement la balise NFC pour ouvrir la vidéo YouTube jusqu'à ce que vous vous arrêtiez avec Ctrl-C.

URL de référence

Comment gérer les tags NFC avec plusieurs codes système dans nfcpy Procédure pour installer nfcpy sur la version Raspberry Pi-Private en mars 2016

Recommended Posts

Lire et écrire des balises NFC avec python en utilisant PaSoRi
Lire et écrire des fichiers JSON avec Python
Lire et écrire en virgule flottante simple précision en Python
Créer et lire des paquets de messages en Python
Ecrire le fichier O_SYNC en C et Python
Ecrire un module python dans fortran en utilisant f2py
[Python3] Lecture et écriture avec isoformat datetime avec json
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Lire DXF avec python
Ecrire Python dans MySQL
Recherche de balises pixiv et enregistrement d'illustrations à l'aide de Python
Écrire des tests en Python pour profiler et vérifier la couverture
Lire et écrire un fichier csv
Ecrire des filtres Pandec en Python
Ecrire python dans Rstudio (réticulé)
Lire la formule d'Euler en Python
Lire et écrire des fichiers
Lire du XML avec un espace de noms spécifié en Python
Lire les e-mails Outlook avec Python
Pile et file d'attente en Python
Écrire et lire des fichiers
Unittest et CI en Python
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Lire la sortie Fortran avec python
Essayez de le faire avec GUI, PyQt en Python
Conseils pour coder courts et faciles à lire en Python
Collectez les tweets en utilisant tweepy en Python et enregistrez-les dans MongoDB
Prédire le sexe à partir du nom à l'aide de l'API Gender et de Pykakasi en Python
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
[Python] Utilisez ceci pour lire et écrire des fichiers wav [wavio]
Ecrire une dichotomie en Python
Programmation GUI en Python avec Appjar
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Précautions lors de l'utilisation de Pit avec Python
Différence entre == et est en python
Afficher les photos en Python et html
Lire les données des tampons de protocole avec Python3
Ecrire un schéma JSON avec Python DSL
Algorithme de tri et implémentation en Python
Authentification à l'aide de l'authentification des utilisateurs tweepy et de l'authentification d'application (Python)
Ecrire diverses formes d'arbres phylogénétiques en Python à l'aide de la boîte à outils ETE
Ecrire un serveur HTTP / 2 en Python
Ecrire une fonction AWS Lambda en Python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Lire et utiliser des fichiers Python à partir de Python
Ecrire des algorithmes A * (A-star) en Python
Essayez d'utiliser LevelDB avec Python (plyvel)
Lire des morceaux PNG en Python (édition de classe)
Lisez le binaire big endian en Python et convertissez-le en ndarray
Vérifiez et déplacez le répertoire en Python
Conserver et lire l'ordre dans PyYAML
Utilisation de variables globales dans les fonctions python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Ecrire le code de test du sélénium en python
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
Hashing de données en R et Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python