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).
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.
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.
Installieren Sie die neueste Version von Node.js und npm unter Installieren der neuesten Version von Node.js und npm auf Raspberry Pi.
nfcpy
und PaSoRiDa 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.
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';
Sie können den Betriebsmodus bei der Initialisierung angeben
loop
ModusBedienen 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
ModusLegen 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
ModusSobald 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'});
start ()
MethodeBeginnen 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 ()
MethodeStoppt das Lesen des Kartenlesers
nfc.pause();
Sie können Ereignisse in Form von EventEmitter registrieren.
Touchstart
EventTritt 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
EventTritt auf, wenn die Karte den Kartenleser verlässt (nicht verfügbar im Non-Touch-End-Modus)
isRunning
-EigenschaftGibt "ture" zurück, wenn der Kartenleser läuft, andernfalls "false".
console.log(nfc.isRunning); // true or false
Beim Beenden des Node.js-Prozesses (einschließlich Steuerung + C usw.) sendet PaSoRi gleichzeitig keine Funkwellen aus, und Python beendet den Prozess ebenfalls.
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');
});
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
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');
});
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.
Ü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)
――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.
git diff
) zu erstellen. War enttäuschendVerwenden Sie den PaSoRi USB Felica Reader (RC-S380) mit Raspberry pi Npm-Modul, das in 3 Minuten ausgeführt werden kann