LoginSignup
7
7

More than 5 years have passed since last update.

Raspi + EXPLORE-NFCをNode.js制御してWebへつなげる

Posted at

EXPLORE-NFCというRasPiで使えるNFCリーダーです。

Node.js経由で制御するこちらのライブラリが上手く動かなかったので、中身をいじってみました。

このへんです。

node_modules/explorenfc/index.js
//省略
  read: function(cb){
    // exec: spawns a shell.
    child_process.exec(binary, function(error, stdout, stderr){
      // TODO, parse the output from the board
      // If it looks like this could be what we want
      var result = processLines(stdout);
      if(result){
        cb(result);
      }else{
        cb(stdout);
      }
    });
  },

//省略

stdoutの中身をそのまま出力してます。

サンプルコードを編集して以下のサンプルを作りました。

nfc.js
'use strict'

const nfc = require("explorenfc");

nfc.init("/usr/bin/explorenfc-basic");
nfc.read((nfcEvent) => {
  if(nfcEvent){
    let tmp = nfcEvent.split('\r\n');
    let nfcdata = {};
    nfcdata.Manufacturer = tmp[2].split(':')[1];
    nfcdata.CID = tmp[3].split(':')[1];
    nfcdata.IC = tmp[4].split(':')[1];
    console.log(nfcdata);
  }else{
    console.log("no NFC Event");
  }
});

実行

$ node nfc.js
{ Manufacturer: ' \t0114',
  CID: ' \t01149615C010',
  IC: ' \t0401' }

こんな感じでnfcの情報がnfcdataに入ってます。

おまけ、MilkcocoaでWebとつなげる

Milkcocoaについては使い方は調べてみてください。

nfc.js
'use strict'

const nfc = require("explorenfc");
const MilkCocoa = require('milkcocoa');
const milkcocoa = new MilkCocoa('<id>.mlkcca.com');
const ds = milkcocoa.dataStore('mydatastore');

nfc.init("/usr/bin/explorenfc-basic");
nfc.read((nfcEvent) => {
  if(nfcEvent){
    let tmp = nfcEvent.split('\r\n');
    let nfcdata = {};

    nfcdata.Manufacturer = tmp[2].split(':')[1];
    nfcdata.CID = tmp[3].split(':')[1];
    nfcdata.IC = tmp[4].split(':')[1];
    console.log(nfcdata);
    ds.push(nfcdata); //Milkcocoaに情報を保存
    ds.send({flag:1}); //Milkcocoaに情報を送信
  }else{
    console.log("no NFC Event");
  }
});
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7