これまでのおさらい
- Raspberry piにNode.jsをインストールする
- Node.jsでrequestモジュールを使ってHTTPリクエストを実行する
- Node.jsでIFTTTのWebhooksを使う(requestモジュール利用)
今回のお話
- Raspberry Piで、Node.jsからobnizを利用する。
- obnizでBME280センサーを動かす。
- BME280センサーで気温、湿度、気圧のデータを取得したら、IFTTTを使って、Google スプレッドシートにデータを書き込む。
順番にやっていきます。
Raspberry Piで、Node.jsからobnizを利用する
obnizをインストール
npm install obniz
Node.jsからObnizを使うには
constObniz=require("obniz");
BME280センサーを動かす
コードは、このページを参考にしました。
https://karaage.hatenadiary.jp/entry/2019/10/23/073000
10KΩの抵抗を2つ入れています。
Obnizと接続します。
Obnizのディスプレイにデータを表示してみます。
Obnizの番号はマスクしています。
constObniz=require("obniz");// デバイスに接続varobniz=newObniz("****-****");//Obnizの番号を指定obniz.onconnect=asyncfunction(){varbme280=obniz.wired("BME280",{vio:0,vcore:1,gnd:2,csb:3,sdi:4,sck:5,sdo:6});awaitbme280.applyCalibration();awaitbme280.setIIRStrength(1);val=awaitbme280.getAllWait();//obniz画面表示obniz.display.clear();obniz.display.print("temperature:"+val.temperature.toFixed(1))//気温obniz.display.print("humidity:"+val.humidity.toFixed(1))//湿度obniz.display.print("pressure:"+val.pressure.toFixed(1))//気圧}
これでObnizでBME280センサーのデータ取得ができました。
Obnizの画面に、気温、湿度、気圧が表示されていると思います。
BME280センサーで気温、湿度、気圧のデータを取得したら、IFTTTを使って、Google スプレッドシートにデータを書き込む。
IFTTT経由でGoogle スプレッドシートにデータを書き込みます。
コードを追加しています。
1回データを書き込んだら、Obnizの接続を切っています。
// デバイスに接続constObniz=require("obniz");// デバイスに接続varobniz=newObniz("****-****");//Obnizの番号を指定varwebclient=require("request");obniz.onconnect=asyncfunction(){constifttt_event="Record";//イベント名constifttt_secret_key="あなたのキーを書く";//キーconstIFTTT_URL_GoogleSheets='https://maker.ifttt.com/trigger/'+ifttt_event+'/with/key/'+ifttt_secret_key;constbme280=obniz.wired("BME280",{vio:0,vcore:1,gnd:2,csb:3,sdi:4,sck:5,sdo:6});awaitbme280.applyCalibration();awaitbme280.setIIRStrength(1);val=awaitbme280.getAllWait();//obniz画面表示obniz.display.clear();obniz.display.print("temperature:"+val.temperature.toFixed(1))//気温obniz.display.print("humidity:"+val.humidity.toFixed(1))//湿度obniz.display.print("pressure:"+val.pressure.toFixed(1))//気圧//送信データ作成constp1=val.temperature.toFixed(1);constp2=val.humidity.toFixed(1);constp3=val.pressure.toFixed(1);//IFTTTリクエストwebclient.post({url:IFTTT_URL_GoogleSheets,headers:{"content-type":"application/json"},body:JSON.stringify({'value1':p1,'value2':p2,'value3':p3})},function(error,response,body){console.log(body);});obniz.close();//Obniz切断}
実行してみます。
pi@raspberrypi:~/myapp $node BME280.js
Congratulations! You've fired the Record event
Congratulations! の行が表示されたら、成功です。
Google スプレッドシートを確認すると、取得したデータが記録されています。
今回はここまで。