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.
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
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
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 -
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.
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