BOSCH社 温湿度・気圧センサBME280用node.jsパッケージnpmに出来
オシゴトでは10年前のロートルなWeb制作環境にぶっこまれてセッションも知らないとか言いだしたのでさすがに黙っていられずいろいろ口出していたら技術力底上げの担当みたいなのになって言わなきゃよかった的なことになっていて、このままじゃ全然自分の技術つかんのよなーとか思って「わたし何でもできます」だと東京だとほんとに転職できねえのなとか実感しつつしこしこ実家のほうで使うIoT機器でも作んべかなと思っていまして、
秋月電子で売っている温湿度・気圧センサっていうのが、¥1,080 なのに3種類のセンシングできて便利ってんで、買ってみたわけですよ。
秋月電子の。1,080円
akizukidenshi-ogp-injector.dtpwiki.jp
スイッチサイエンスの。1,620円
このセンサ、ガリレオ7でもストロベリーリナックスでも売っていますね。
そんで、こんだけあちこちで売られているセンサーなんだから、node.js で動かす作例ぐらいあるだろうと思って探したがなかった。Pythonの作例ならいっぱいあるわけですが、いまさらPythonもないわけです。 require('child_process').execSync;
とかすればPythonをチャイルドプロセスで動かせるんでしょうけれども嫌なのです。Adafruitのライブラリがそんな構成になっている(node-adafruit-bme280)。
そこで、npm を散々探したら、node-bmp-280
という温度と気圧の2種類をとれるセンサ用のモジュールがあったので、改造して、node-bme-280
という名前で npm
にアップロードしておきました。なんだこれ、npm
は簡単すぎて CPAN
よりもカオスな感じがするぞ!
node-bme280
インストールするには、
$ npm i node-bme280 --save
でいけます。サンプルプログラムとして、
var BME280 = require('node-bme280'); var barometer = new BME280({address: 0x76}); barometer.begin(function(err) { if (err) { console.info('error initializing barometer', err); return; } console.info('barometer running'); setInterval(function() { barometer.readPressureAndTemparature(function(err, pressure, temperature, humidity) { console.info( 'temp:', temperature.toFixed(2), '℃ pressure:', (pressure / 100).toFixed(2), 'hPa hum:', humidity.toFixed(2), '%' ); }); }, 1000); });
実行結果
pi@raspberrypi:~/testapp $ node bme280.js barometer running temp: 32.62 ℃ pressure: 1005.20 hPa hum: 69.35 % temp: 32.59 ℃ pressure: 1005.17 hPa hum: 69.34 % temp: 32.59 ℃ pressure: 1005.21 hPa hum: 69.34 % temp: 32.58 ℃ pressure: 1005.22 hPa hum: 69.34 % temp: 32.58 ℃ pressure: 1005.21 hPa hum: 69.34 % temp: 32.57 ℃ pressure: 1005.20 hPa hum: 69.34 % temp: 32.56 ℃ pressure: 1005.20 hPa hum: 69.34 % temp: 32.54 ℃ pressure: 1005.18 hPa hum: 69.34 % temp: 32.55 ℃ pressure: 1005.22 hPa hum: 69.34 % temp: 32.55 ℃ pressure: 1005.22 hPa hum: 69.34 % temp: 32.53 ℃ pressure: 1005.23 hPa hum: 69.34 % temp: 32.52 ℃ pressure: 1005.20 hPa hum: 69.33 %
て感じです。我が家は熱いですね。
あと、この手のセンサのやつは、校正できないっつーのがつらいかも。Python版の出力値と近いところが出ているから可とした。
これがあると、こんなのを作れるぞ!
ボッシュの温度湿度気圧センサBME280取り付けた 電源ポート基板に取り付けるの忘れたw 鞄に入れてロードテストする pic.twitter.com/CCgcdYqv6o
— CL (@CLCLCL) August 2, 2016
これバッテリー駆動でどこからでもGPSと温度・湿度・気圧を DynamoDB
に送り続けるやつ。
Raspberry Piにログ記録しないから電源いきなり切ってもOKな気がする。
journald
のログのやつは、どうすっかな、 /var/run/systemd/journal
ってSDカードのボリューム上だな。確か OverlayFS
使えるからそれで tmpfs
で作ったRAMディスクのボリュームを /var/run/systemd/journal
に重ねてしまえばいいんじゃないかなーとか思っているんだけど、甘いかな?