node-nfcpy-id
Read the card ID (Mifare: UID, FeliCa: IDm) with nfcpy (a Python module).
The details of this package (Japanese page)
Important notice
The method of importing(require
-ing) this package in CommonJS has changed from version 0.0.9
const NfcpyId = require('node-nfcpy-id').default;
License changed from ISC to MIT
Requirement
Node version
Python version
Operation System
Install
npm install node-nfcpy-id
Settings for Raspbian with SONY Pasori RC-S380
sudo apt-get install python-usb python-pip -y
sudo pip install -U nfcpy-id-reader
cat << EOF | sudo tee /etc/udev/rules.d/nfcdev.rules
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", GROUP="plugdev"
EOF
Please restart once.
sudo reboot
Examples
loop mode
const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId().start();
nfc.on('touchstart', (card) => {
console.log('Card ID: ' + card.id);
console.log('Card Type: ' + card.type);
});
nfc.on('touchend', () => {
console.log('Card was away.');
});
nfc.on('error', (err) => {
console.error('\u001b[31m', err, '\u001b[0m');
});
non-loop mode
const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId({mode: 'non-loop'}).start();
nfc.on('touchstart', (card) => {
console.log('Card ID: ' + card.id);
console.log('Card Type: ' + card.type);
});
nfc.on('touchend', () => {
console.log('Card was away.');
setTimeout(() => {
nfc.start();
}, 5000);
});
nfc.on('error', (err) => {
console.error('\u001b[31m', err, '\u001b[0m');
});
non-touchend mode
const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId({mode: 'non-touchend'}).start();
nfc.on('touchstart', (card) => {
console.log('Card ID: ' + card.id);
console.log('Card Type: ' + card.type);
});
nfc.on('error', (err) => {
console.error('\u001b[31m', err, '\u001b[0m');
});
To start (restart) reading cards, use nfc.start()
.
To pause reading cards, use nfc.pause()
.
To stop this script, press control+C. By this, Python process will be killed at the same time.
To use this script with other than SONY Pasori RC-S380, it may be necessary to modify reader.py
and add options to the parameter of constructor.
const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId({scriptPath: __dirname, scriptFile: 'new-reader.py'}).start();
License
MIT