Nasal Pathway Melodrama

    node-nfcpy-id
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.1 • Public • Published

    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

    • v6.10.2 or later

    Python version

    • v2.7.x

    Operation System

    • Raspbian
    • macOS

    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);
     
      // card.type is the same value as that of nfcpy.
      // 2: Mifare
      // 3: FeliCa
      // 4: Mifare (DESFire)
      console.log('Card Type: ' + card.type);
    });
     
    // If the `mode` is `loop` or `non-loop`, event will occur when the card is removed
    nfc.on('touchend', () => {
      console.log('Card was away.');
    });
     
    nfc.on('error', (err) => {
      // standard error output (color is red)
      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);
    });
     
    // If the `mode` is `loop` or `non-loop`, event will occur when the card is released
    nfc.on('touchend', () => {
      console.log('Card was away.');
     
      // Card reading will start five seconds after the card is released
      setTimeout(() => {
        nfc.start();
      }, 5000);
    });
     
    nfc.on('error', (err) => {
      // standard error output (color is red)
      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) => {
      // standard error output (color is red)
      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;
     
    // Put the modified Python script in the same directory.
    const nfc = new NfcpyId({scriptPath: __dirname, scriptFile: 'new-reader.py'}).start();
     
    // If the file name of the modified Python script is `reader.py`, `scriptFile` can be omitted.
    // const nfc = new NfcpyId({scriptPath: __dirname}).start();

    License

    MIT

    Install

    npm i node-nfcpy-id

    DownloadsWeekly Downloads

    24

    Version

    0.1.1

    License

    MIT

    Last publish

    Collaborators

    • mascii