LoginSignup
7
7

More than 3 years have passed since last update.

BLEセンサデータをM5stackで取得しGASに投げる

Posted at

はじめに

オムロン環境センサをESPで取得したものの、繋いだだけで何もしてなかったのでM5stackとGASで見える化してみました

使ったもの

M5stack
GAS

BLEでセンサデータを取得

これについてはこちらの記事を参考にしてください
ESP32からBLEでオムロン環境センサ(2JCIE-BL)に繋ぐ

WiFi接続

WiFiライブラリをインクルードして使うだけです。特に特別なことはしません

#include <WiFi.h>
Serial.println("WIFI_START");
WiFi.setAutoConnect(false);
WiFi.setAutoReconnect(false);
WiFi.disconnect();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
}

HTTP POST

HTTPClient.hを使いました
root証明書が必要なのでこちらを参考に発行してください

GASで受け取る

こんな感じで書きましたdoPostで受けているだけです。


function doPost(e) {
  // シート取得

  var postjsonString = e.postData.getDataAsString();
  var postdata = JSON.parse(postjsonString);
  var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());

  var temp = null;
  var humid = null;
  var pres = null;
  var shodo = null;
  var hukai = null;
  var meyasu;

  var date_time = null;

  if(postdata.shodo != undefined){
  var sheet = ss.getSheetByName("シート1");
  // データ入力
  temp = postdata.temp;
  humid = postdata.humid;
  pres = postdata.pres;
  shodo = postdata.shodo;
  hukai = ( 0.81 * temp ) + ( 0.01 * humid * ( 0.99 * temp - 14.3 ) ) + 46.3 ;
  if(hukai >= 85 ){
    var meyasu = "暑くてたまらない";
  }else if(hukai >= 80 ){
    var meyasu = "暑くて汗がでる";
  }else if(hukai >= 75 ){
    var meyasu = "やや暑い";
  }else if(hukai >= 70 ){
    var meyasu = "暑くない";
  }else if(hukai >= 65 ){
    var meyasu = "快適";
  }


  date = new Date();
  date_time =  Utilities.formatDate(date, 'JST', 'yyyy年M月d日 H時m分s秒')
  sheet.appendRow([date_time,temp,humid,pres,shodo,hukai,meyasu]);  


  var output = ContentService.createTextOutput();
  output.setMimeType(ContentService.MimeType.JSON);
  output.setContent(JSON.stringify({ message: "success!" }));

  return output;
}

M5stack側でアプリケーションのURLを指定してPOSTしてあげます。

メモリ不足

BLE、WIFI,httpsを使うとメモリ不足でM5stackが死にました。なので以下のような流れにしました

BLEでデータ取得→BLE系のメモリ解放→WiFi接続→Httpsポスト→シャットダウン

BLEDevice::deinit(true);

をするとBLE系のメモリを解放し、BLEを無効にできます
ESP.restart();

をすると再起動がかかります

開発したコード

以下に開発したコードをあげておきます
https://github.com/notitle420/m5Stack_omron_ble_http_post
root_ca
SensorAddr
ssid
password
path
を書き換えてご利用ください

7
7
0

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