11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NodejsでInkbird IBS-TH1 (BLE温湿度センサー) から温度湿度情報を得る

Last updated at Posted at 2019-01-12

はじめに

Bluetooth(BLE)で飛ばせる温度計としてAmazonで売ってるInkbird IBS-TH1 mini のデータを、RasberryPIからnodejsを使って読み取ってみました。

開発環境

  • Central: Rasberry Pi3 B+ (Raspbian)
  • Peripheral: Inkbird IBS-TH1 mini
  • nodejs: v8.15.0 + noble

データフォーマット

こちら参照しました。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ほどありますが、問題なく受信できています。
キャプチャ.JPG

終わりに

本体内蔵のデータロガーを使うとバッテリー消耗が早いようなので、あらかじめスマホアプリでデータログ間隔を最長の30分に設定しておくとよいようです。CR2032で1ヶ月以上駆動しています。

11
11
2

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
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?