Help us understand the problem. What is going on with this article?

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

はじめに

オムロン環境センサを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
を書き換えてご利用ください

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away