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");
}
});