M5Stick-CでLINEにうんこできた通知を送る

今回は雑な企画。M5Stick-CとLINEをつなぐ方法を解説するために、ウンコをした時間をLINEに記録していきます。

参考にしたサイト

LINE Notifyに登録

こちらの記事を参考にLINE Notifyのトークンを取得してメモしておきます。

コード書き込み

以下のコードのうちSSID,PASSWORD,TOKENの3つをご自分の環境に合わせて書き換えて、書き込んでみてください。

#include <ssl_client.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include "M5StickC.h"
#include "M5Display.h"

const char* ssid = "SSID";
const char* password = "PASSWORD";
void wifiConnect() {
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);  // Wi-Fi接続
  while (WiFi.status() != WL_CONNECTED) {  // Wi-Fi 接続待ち
    delay(100);
    Serial.printf(".");
  }
  Serial.println("\nwifi connect ok");
}
void send(String message) {
  const char* host = "notify-api.line.me";
  const char* token = "eLuWCV97I20zpVmt1C1Hs4LDMy79q0VJgfk9LYI4jZW";
  WiFiClientSecure client;
  Serial.println("Try");
  //LineのAPIサーバに接続
  if (!client.connect(host, 443)) {
    Serial.println("Connection failed");
    return;
  }
  Serial.println("Connected");
  //リクエストを送信
  String query = String("message=") + message;
  String request = String("") +
               "POST /api/notify HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Authorization: Bearer " + token + "\r\n" +
               "Content-Length: " + String(query.length()) +  "\r\n" + 
               "Content-Type: application/x-www-form-urlencoded\r\n\r\n" +
                query + "\r\n";
  client.print(request);

  //受信終了まで待つ 
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    Serial.println(line);
    if (line == "\r") {
      break;
    }
  }

  String line = client.readStringUntil('\n');
  Serial.println(line);
}

void setup() {
  M5.begin();
  M5.Axp.ScreenBreath(9);
  setCpuFrequencyMhz(80);
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  wifiConnect();
  M5.Lcd.setTextSize(2);
}

void loop() {
  M5.update();
  M5.Lcd.setCursor(0,40);
  if (M5.BtnA.wasPressed()){ //ボタンA(真ん中の大きいボタン)が押された時は正常な便
    send("GOOD UNKO EJECTION CONFIRMED");
    M5.Lcd.println("unko notify sent");
    delay(1000);
    M5.Lcd.fillScreen(BLACK);
  }
  if (M5.BtnB.wasPressed()){//ボタンB(側面のボタン)が押された時は下痢
    send("WARNING! DIARRHEA!");
    M5.Lcd.println("unko notify sent");
    delay(1000);
    M5.Lcd.fillScreen(BLACK);
  }

}

これでLINEへ通知を送れました。当然この方法を使って、その他の通知が可能です。
センサーの値や人感センサーに反応したときにLINEに送れればいいかもしれませんね!

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です