Node.js에서 BLE을 다루는 패키지의 noble과 noble-device로 비공식 SDK 같은 것을 만들어 보자.
소개
요 전날 JavaScript에서 FlowerPower를 사용하는 기사를 썼습니다.
자바스크립트에서 방의 식물을 모니터링합니다. Parrot Flower Power를 Node.js에서 제어
메이커측이 SDK를 공개하고 있지 않아도, BLE 디바이스는 BLE 제어용의 정보만 알면 제어하는 것도 가능하게 됩니다.
그래서 noble과 noble-device를 사용하여 SDK 등의 구현을 추구하려고합니다.
noble
Node.js에서 BLE을 처리하는 패키지. 설명을 보면 central로 동작합니다.
참고 : 단 6 라인! 가장 쉽게 iBeacon의 전파를 "발신"하는 방법
참고 : Mac이나 Linux에서 node를 사용하여 iBeacon을 만드는 것은 무엇입니까?
noble-device
noble을 감싸고 사용하기 쉽게 해주는 패키지.
noble-device를 내부적으로 이용하는 패키지
다양한 디바이스의 비공식 SDK적인 것이 noble과 noble-device를 사용해 만들어지고 있습니다.
PlayBulb을 사용해보십시오.
이러한 구현을 바탕으로 PlayBulb Candle 이라는 전자 촛불을 제어하는 SDK를 만들어 보겠습니다.
참고 : Go에서 BLE 제어로 PLAYBULB Candle의 조작을 해본다
단순화하고 싶기 때문에 우선
[A]色を変えるメソッド
와 [B]名前を変えるメソッド
를 구현해 보았습니다.playbulb.js
var util = require('util');
var NobleDevice = require('noble-device');
var SERVICE_UUID = 'ff02'; //キャンドル制御自体のService
var COLOR_CHARA_UUID = 'fffc'; //[A]キャンドルの色のCharacteristic
var NAME_CHARA_UUID = 'ffff'; //[B]名前情報のCharacteristic
function PlayBulb(peripheral) {
NobleDevice.call(this, peripheral);
this.name = peripheral.advertisement.localName;
}
NobleDevice.Util.inherits(PlayBulb, NobleDevice);
PlayBulb.SCAN_UUIDS = [SERVICE_UUID];
//[A]色を変えるメソッド
PlayBulb.prototype.setColor = function(color, callback) {
var data = new Buffer('00'+color, 'hex');
this.writeDataCharacteristic(SERVICE_UUID, COLOR_CHARA_UUID, data, callback);
};
//[B]名前を変えるメソッド
PlayBulb.prototype.setName = function(name, callback) {
var data = new Buffer(name);
this.writeDataCharacteristic(SERVICE_UUID, NAME_CHARA_UUID, data, callback);
};
module.exports = PlayBulb;
소스 코드의 [A][B]의 기능과 UUID는 마지막 기사 에도 기재되어 있습니다.
FlowerPower의 구현을 모방합니다.
setColor
이나 setName
라는 메소드를 만들고 있고, 내부에서 writeDataCharacteristic
라는 메소드를 실행하고 있습니다.writeDataCharacteristic
에 Service의 UUID와 사용하고 싶은 기능의 Characteristic의 UUID, 입력치를 주는 것으로 BLE 디바이스에 명령을 보낼 수 있습니다.센서등 데이터를 취득하는 것만의 경우는
readDataCharacteristic
(을)를 똑같이 사용하는 것으로 값 취득을 할 수 있습니다.사용해보기
.discover
등의 메소드는 noble 측에서 미리 설정되어 있는 메소드입니다.연결 후
setColor
를 호출합니다.setColor.js
var PlayBulb = require('./playbulb');
console.log('PLAYBULBを探しています...');
PlayBulb.discover(function(pb){
console.log('PLAYBULB:'+pb.name+'を見つけました。接続中です...');
pb.connectAndSetup(function(err){
if(err) return;
console.log('接続しました。');
//色を変更
pb.setColor(process.argv[2],function(hoge){
console.log(hoge);
});
});
});
$ node app.js ff0000
등으로 실행하면 촛불이 붉게 빛납니다.
이것도 어제 기사를 참조하십시오.
요약
Bluetooth Code의 정보조차 주울 수 있으면, 마음대로 SDK같은 것을 만들 수 있는 것을 알았습니다.
우선 PlayBulb은 좀 더 만져보고 싶습니다.
BLE 개발할 수 있으면 여러가지 가능성 퍼지네요!
noble, bleno, noble-device 등의 리포지토리는 필수 체크입니다.
그럼
Reference
이 문제에 관하여(Node.js에서 BLE을 다루는 패키지의 noble과 noble-device로 비공식 SDK 같은 것을 만들어 보자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/62624b473f827958fd54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)