Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@notitle420

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

More than 1 year has passed since last update.

はじめに

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

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
notitle420
IoTとかプロジェクションマッピングとか農業とか
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?