[PYTHON] Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten

In dem Artikel Verbinden Sie Raspberry Pi und TV über HDMI, um das Ein- und Ausschalten des Fernsehgeräts zu überprüfen wird das Fernsehgerät EIN / AUS (STANDBY) Ich habe Ihnen gesagt, dass Sie die Situation vom Raspberry Pi aus überprüfen können. Wenn Sie dies verwenden, können Sie ein älteres Überwachungsgerät ohne elektronische Arbeit herstellen. Insbesondere gibt es in npm ein Paket namens node-cec. Wenn Sie dies installieren, gibt Node.js HDMI-CEC-Signale aus. Es war möglich zu senden und zu empfangen.

Verwenden Sie jedoch die Python-Bibliothek nfcpy, um eine Karten-ID mit Raspberry Pi mithilfe des IC-Kartenlesers PaSoRi (RC-S380) von SONY zu erhalten. Es gibt keine andere Wahl, als es zu benutzen. Um PaSoRi (RC-S380) von Node.js zu verwenden, müssen Python und Node.js verknüpft werden (z. B. JSON einschließlich der Karten-ID über die Standardeingabe / -ausgabe empfangen).

Python-to-Nodejs.png

Schließen Sie das Kabel auch mit PaSoRi (RC-S380) einfach an HDMI und node-cec an und installieren Sie das npm-Paket. Ich wünschte, ich könnte die ID der Karte erhalten ... und ein Python-Skript für nfcpy node-nfcpy-id einfügen. Ich habe ein npm-Paket namens node-nfcpy-id erstellt.

npm-node-nfcpy-id.png

Betriebsumgebung

Himbeer-Pi-Seite

IC-Kartenleser

P6110607.jpg

Informationen zu Karten-ID und Kartentyp

NFC-Karten, die von PaSoRi (RC-S380) gelesen werden können, sind hauptsächlich FeliCa-Standard und MIFARE-Standard. Im FeliCa-Standard heißt die Karten-ID IDm, und im MIFARE-Standard heißt die Karten-ID UID. Mit node-nfcpy-id können Sie die Karten-ID als Zeichenfolge erhalten (niedrigere alphabetische Hexadezimalzahl). Der Kartenstandard kann mit den folgenden numerischen Werten ("2", "3", "4") gemäß "nfcpy" erhalten werden.

Installation

Installieren Sie Node.js.

Installieren Sie die neueste Version von Node.js und npm unter Installieren der neuesten Version von Node.js und npm auf Raspberry Pi.

Einstellungen für die Verwendung von nfcpy und PaSoRi

Da die Python 2-Serie standardmäßig in Raspbian installiert ist, muss Python nicht selbst installiert werden.

Installieren Sie python-usb und python-pip mit apt-get

Raspbian


pi@raspberrypi:~ $ sudo apt-get install python-usb python-pip -y

Installieren Sie nfcpy-id-reader (Python-Skript, das mit node-nfcpy-id funktioniert) mit pip. nfcpy wird auch installiert, wenn Sie nfcpy-id-reader installieren.

Raspbian


pi@raspberrypi:~ $ sudo pip install -U nfcpy-id-reader

Erstellen Sie eine Datei mit dem Namen "/ etc / udev / rules.d / nfcdev.rules", um PaSoRi auch mit Benutzerrechten verfügbar zu machen.

Raspbian


pi@raspberrypi:~ $ cat << EOF | sudo tee /etc/udev/rules.d/nfcdev.rules
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", GROUP="plugdev"
EOF

Ich werde einmal neu starten

Raspbian


pi@raspberrypi:~ $ sudo reboot

Installieren Sie node-nfcpy-id in einem geeigneten Verzeichnis

Raspbian


pi@raspberrypi:~ $ npm install node-nfcpy-id --save

Wenn Sie eine Fehlermeldung erhalten, dass "npm ERR! 404'types / node" nicht in der npm-Registrierung enthalten ist. "Während der" npm-Installation "haben Sie möglicherweise eine ältere Version von npm. Informationen zum Installieren der neuesten Version von npm finden Sie unter Installieren der neuesten Version von Node.js und npm auf Raspberry Pi.

wie benutzt man

Funktionsbeschreibung

importieren

Ab Version 0.1.0 erfordert der Import ("Erfordernis") in CommonJS "Standard", wie unten gezeigt.

const NfcpyId = require('node-nfcpy-id').default;

Klicken Sie hier, wenn Sie die Anweisung "import" in TypeScript, ECMAScript 2015 (mit Babel) verwenden möchten.

import NfcpyId from 'node-nfcpy-id';

Initialisierung (Modus angeben)

Sie können den Betriebsmodus bei der Initialisierung angeben

loop Modus

Bedienen Sie den Kartenleser, ohne jede Karte anzuhalten, damit mehrere Karten nacheinander gelesen werden können. Sie können das Ereignis erhalten, wenn die Karte den Kartenleser verlässt. Dies ist der Standardmodus, wenn im Argument des Konstruktors nichts angegeben ist.

// const nfc = new NfcpyId({mode: 'loop'});
const nfc = new NfcpyId(); // loop mode

non-loop Modus

Legen Sie die Karte in den Kartenleser und lassen Sie sie los, um den Kartenleser anzuhalten. Sie können das Ereignis erhalten, wenn die Karte den Kartenleser verlässt.

const nfc = new NfcpyId({mode: 'non-loop'});

non-touch end Modus

Sobald die Karte auf den Kartenleser gelegt wurde, stoppt sie den Kartenleser. Ich kann das Ereignis nicht erhalten, wenn die Karte den Kartenleser verlässt.

const nfc = new NfcpyId({mode: 'non-touchend'});

Methode

start () Methode

Beginnen Sie mit dem Kartenleser mit dem Lesen der Karte

nfc.start();

Sie können auch die Methode start () gleichzeitig mit der Initialisierung verwenden

const nfc = new NfcpyId().start();

pause () Methode

Stoppt das Lesen des Kartenlesers

nfc.pause();

Veranstaltung

Sie können Ereignisse in Form von EventEmitter registrieren.

Touchstart Event

Tritt auf, wenn eine Karte auf einen Kartenleser gelegt wird. Die Karten-ID und der Kartentyp werden im Argument der Rückruffunktion gespeichert.

nfc.on('touchstart', (card) => {
  console.log('touchstart', 'id:', card.id, 'type:', card.type);
});

Touchend Event

Tritt auf, wenn die Karte den Kartenleser verlässt (nicht verfügbar im Non-Touch-End-Modus)

Getter

isRunning -Eigenschaft

Gibt "ture" zurück, wenn der Kartenleser läuft, andernfalls "false".

console.log(nfc.isRunning); // true or false

Am Ende von Node.js.

Beim Beenden des Node.js-Prozesses (einschließlich Steuerung + C usw.) sendet PaSoRi gleichzeitig keine Funkwellen aus, und Python beendet den Prozess ebenfalls.

Abbildung jedes Modusmethodenereignisses

node-nfcpy-id-modes.gif

Stichprobe

Beispiel für den Loop-Modus

Wenn die Karte auf den Kartenleser gelegt wird, werden die Karten-ID und der Kartentyp gedruckt und "Touchend" gedruckt, wenn die Karte den Kartenleser verlässt.

const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId().start();

nfc.on('touchstart', (card) => {
  console.log('touchstart', 'id:', card.id, 'type:', card.type);
});

nfc.on('touchend', () => {
  console.log('touchend');
});

nfc.on('error', (err) => {
  // standard error output (color is red)
  console.error('\u001b[31m', err, '\u001b[0m');
});

Ausführungsbeispiel

Raspbian


pi@raspberrypi:~ $ node app
touchstart id: aa7dxxxx type: 2
touchend
touchstart id: 0114b3fxxxxxxxxx type: 3
touchend
touchstart id: 01103f0xxxxxxxxx type: 3
touchend
touchstart id: 0114b3fxxxxxxxxx type: 3
touchend
touchstart id: 04192xxxxxxxxx type: 4
touchend

Beispiel für einen Modus ohne Berührungsende

Wenn die Karte auf den Kartenleser gelegt wird, werden die Karten-ID und der Kartentyp ausgegeben und das Lesen durch den Kartenleser wird nach 5 Sekunden fortgesetzt.

const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId({mode: 'non-touchend'}).start();

nfc.on('touchstart', (card) => {
  console.log('touchstart:', card.id, 'type:', card.type);
  console.log('Laden Sie nach 5 Sekunden weiter');
  setTimeout(() => {
    nfc.start();
  }, 5000);
});

nfc.on('error', (err) => {
  // standard error output (color is red)
  console.error('\u001b[31m', err, '\u001b[0m');
});

Bekannte Probleme

Wenn Sie im "Loop" -Modus oder "Non-Loop" -Modus einige MIFARE-Karten wie Aime berühren, tritt das "Touchend" -Ereignis unmittelbar nach dem "Touchstart" -Ereignis auf, und im "Loop" -Modus wird dies wiederholt. Ein Phänomen wie Rattern tritt auf. Das gleiche Phänomen tritt auf, wenn "nfcpy" nur in Python verwendet wird.

LT Ankündigung

Über dieses npm-Paket, 2 Tage hintereinander !! (1. Tag) Wir sind JavaScripters! @ 8. [Anfänger begrüßen LT-Turnier] "Node.js. + Einfaches IoT mit Raspberry Pi "(Folie) wejs-slide-1.png

Versuchen Sie, ein npm-Paket zu erstellen

――Das Denken daran, es als npm-Paket zu veröffentlichen und es zu verwenden, hat einen Prozess geschrieben, der Node.js gleichzeitig beendet, wenn Node.js mit Strg + C beendet wird.

KP-NFLEW2

Referenzseite

Verwenden Sie den PaSoRi USB Felica Reader (RC-S380) mit Raspberry pi Npm-Modul, das in 3 Minuten ausgeführt werden kann

Recommended Posts

Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
Stellen Sie eine Verbindung zur Raspberry PI-Konsole her und zeigen Sie lokale IP- und SD-Informationen an
Ich habe Sie dazu gebracht, das Ende der IP-Adresse mit L Chika auszudrücken
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Mit LINEBot habe ich eine Anwendung erstellt, die mich über die "Buszeit" informiert.
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Versuchen Sie, ein Objekt mit RaspberryPi zu erkennen ~ Teil 1: Vergleich der Erkennungsgeschwindigkeit ~
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
WeWork-Büroschlüssel können jetzt mit einer IC-Karte mit dem Smart Lock "SESAME mini" und Raspberry Pi Zero WH entsperrt / gesperrt werden.
Ich habe mit Raspberry Pi ein System erstellt, das regelmäßig den Unbehaglichkeitsindex des Raums misst und eine LINE-Benachrichtigung sendet, wenn es sich um einen gefährlichen Wert handelt
Eine Einführung in die GUI-Software der Klassenplattform, die mit Python / Tkinter erstellt wurde! (Und viele Try and Error)! (Während des Schreibens)
[Blender] So ermitteln Sie die Auswahlreihenfolge von Scheitelpunkten, Seiten und Flächen eines Objekts
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Ich wollte nur die Daten des gewünschten Datums und der gewünschten Uhrzeit mit Django extrahieren
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Eine Geschichte, bei der ich darüber nachdachte, die Informationen über die Fülle des Parkplatzes anhand des von der Webkamera und Razpai erhaltenen Bildes und durch tiefes Lernen zu ermitteln.
Ich mag es nicht, mit der Veröffentlichung von Pokemon Go frustriert zu sein, deshalb habe ich ein Skript erstellt, um die Veröffentlichung zu erkennen und zu twittern
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
Ich wollte den Motor mit einer Raspeltorte laufen lassen, also habe ich versucht, das Motor Driver Board von Waveshare zu verwenden
Ich habe ein Tool erstellt, um die Antwortlinks von OpenAI Gym auf einmal zu erhalten
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Holen Sie sich die ID einer GPU mit geringer Speichernutzung
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Holen Sie sich die Paketversion, um sich bei PyPI von Git zu registrieren
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich möchte die Natur von Python und Pip kennenlernen
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät