Nodejs에서 Inkbird IBS-TH1 (BLE 온습도 센서)에서 온도 습도 정보 얻기
소개
Bluetooth(BLE)로 날리는 온도계로서 Amazon에서 팔고 있는 Inkbird IBS-TH1 미니의 데이터를 RasberryPI에서 nodejs를 사용하여 읽어 보았습니다.
개발 환경
데이터 형식
여기 참조했습니다. 9바이트의 데이터가 전송되고 있어 1, 2바이트가 온도, 3, 4바이트가 습도 데이터, 8바이트째가 배터리 잔량인 것 같습니다.
코드
inkbird.js
const INKBIRD_ADDR = 'xx:xx:xx:xx:xx:xx'; //IBS-TH1のアドレス
const INTERVAL = 5 * 60 * 1000; //5分おきにスキャン
var noble = require('noble');
noble.on('stateChange', function(state) {
if (state === 'poweredOn') {
noble.startScanning();
} else {
noble.stopScanning();
}
});
noble.on('scanStart', function() {
console.log('scanStart');
});
noble.on('scanStop', function() {
console.log('scanStop');
});
noble.on('discover', function(peripheral) {
var buf = peripheral.advertisement.manufacturerData;
if( peripheral.address == INKBIRD_ADDR){
var t = buf.readInt16LE(0) / 100;
var h = buf.readInt16LE(2) / 100;
var b = buf[7];
console.log('[discover IBS-TH1] temp:' + t + ' degree, humidity:' + h + '%, battery:' + b + '%\n');
noble.stopScanning();
}
});
setInterval(function() {
console.log('Start scanning..');
noble.startScanning();
}, INTERVAL);
실행
$ sudo node inkbird.js
scanStart
[discover IBS-TH1] temp:16.47 degree, humidity:45.78%, battery:14%
scanStop
현재는 냉장고 내의 온도 기록에 사용하고 있습니다. 냉장고 내에서 RaspberryPI까지 10m 정도 있습니다만, 문제없이 수신할 수 있습니다.
끝에
본체 내장의 데이터 로거를 사용하면 배터리 소모가 빠르기 때문에, 미리 스마트폰 앱으로 데이터 로그 간격을 최장의 30분으로 설정해 두면 좋은 것 같습니다. CR2032로 1개월 이상 구동하고 있습니다.
Reference
이 문제에 관하여(Nodejs에서 Inkbird IBS-TH1 (BLE 온습도 센서)에서 온도 습도 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bon_dentetsu/items/87ed6c65640b5ba11e5c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)