enebular chainでサ○タを捕獲する作戦

この記事は[enebular Advent Calendar 2019](https://qiita.com/advent-calendar/2019/enebular)の1日目です。

素敵なクリスマスになるようにがんばって書きます。

#enebular x クリスマス
最初にenebularときいて思いつくのは星雲鎖ですよね。
星雲鎖と書いてネビュラチェーン。
アンドロメダ瞬の必殺技ですね。

今回はサンタクロース捕獲装置としてenebular chainを作ってみました。

#仕組み
侵入者に対してはやはり窓際対策が有効と思われます。

**窓が開く　→　警報**

これで行きましょう。
![enebularchain_kousou.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/1d48f475-b180-992c-794c-bb2f167a70bf.jpeg)
#システム概要
enebularはFirebaseやTwitter連携がカンタンという噂なので、その辺りを使ってみます。

- enebular chainにM5StickCを取り付けて加速度を得ます。
- 加速度から得た窓の開け閉め情報をコード(0,1)でFirebaseに送ります。
- Firebaseの情報を定期的にenebularで取り寄せます。
- 窓が開いている情報が得られたらTwitterに通知します。
![enebularchain_system.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/3f112f32-8609-37bd-f9c6-2a2a252557d8.jpeg)

#Firebaseの設定

こちらの記事を参考にしました！
https://blog.enebular.com/firebase/m5stack-firebase-enebular-collaboration/

#M5SticC
上記記事のFirebaseとM5Stackのやり取りの部分に加えて、M5StickCに搭載されている加速度センサMPU6886について記載してます。

窓が開いた場合にaccYが大きくなるようにしました。
accYがしきい値を越えた時にFirebaseのデータを書き換えることにしました。
＊面倒なので時間で勝手に戻るようにしました。

```
#include <M5StickC.h>
#include <IOXhop_FirebaseESP32.h>
#include <WiFi.h>

#define WIFI_SSID "XXXXXXXX"
#define WIFI_PASSWORD "XXXXXXXX"
 
#define FIREBASE_DATABASE_URL "XXXXXXX"

float accX = 0;
float accY = 0;
float accZ = 0;
float gyroX = 0;
float gyroY = 0;
float gyroZ = 0;
float temp = 0;

void setup() {
  // put your setup code here, to run once:
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(40, 0);
  M5.Lcd.println("<<GUARD>>");
  M5.Lcd.setCursor(0, 15);
  M5.Lcd.println("  X       Y       Z");
  M5.MPU6886.Init();

    // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
 
  // WiFi Connected
  Serial.println("\nWiFi Connected.");
  Serial.println(WiFi.localIP());
  M5.Lcd.println("WiFi Connected.");
  M5.Lcd.println("");
   
  Firebase.begin(FIREBASE_DATABASE_URL);
  Firebase.stream("/M5Stack/message", [](FirebaseStream stream) {
    String eventType = stream.getEvent();
    eventType.toLowerCase();
      
    Serial.print("event: ");
    Serial.println(eventType);
    if (eventType == "put") {
      String path = stream.getPath();
      String data = stream.getDataString();
      Serial.print("data: ");
      Serial.println(stream.getDataString());
    }
  });
 
  Firebase.setString("/M5Stack/message", "start");

}

int i = 0;

void loop() {
  M5.MPU6886.getAccelData(&accX,&accY,&accZ);
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.printf("%.2f   %.2f   %.2f",accX * 1000,accY * 1000,accZ * 1000);
  M5.Lcd.setCursor(140, 45);

  delay(100);

    if(accY*1000 > 400) {

    // Firebaseへ送信
    Firebase.setInt("/M5Stack/status", 0);
 
    delay(5000);

    // Firebaseへ送信
    Firebase.setInt("/M5Stack/status", 1);

    delay(1000);
  }

  }
```
#enebular
Firebaseから来たコードにSwitchをフィルタ代わりにしてTwitterに繋ぎこみました。

FirebaseもTwitterも**連携が超簡単**でした！
なんかアカウント入れてログインするだけ、みたいな簡単さです。
＊残念ながらTwitterはConfirmationメールが来なくて時間切れでした。。

![enebularchain_flow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/1cf6533a-0158-cce5-32a2-12d14d458137.jpeg)

#enebular chain テスト

ドアが閉まっていると
![IMG_20191201_182243.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/a75b2e27-d74d-813b-aae1-be14959a5cdc.jpeg)

accYが245くらい
![IMG_20191201_182302.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/5a93c252-bd21-f50e-cef2-51b9628892df.jpeg)


ドアが開くと
![IMG_20191201_182320.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/e67d2b82-62e8-9667-a24f-d12a6f71341e.jpeg)

accYが440くらい
![IMG_20191201_182311.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/ab3ed15a-3436-b5f2-ce0b-bd3610e59f43.jpeg)

窓の開け閉めを一往復するとデバッグ画面がcodeをキャッチ
*Twitterできなかったのでデバッグのみです。
![enebularchain_code.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491945/1e2cebe9-215f-3b64-5917-d493d4a9dbd6.jpeg)

#enebular chainできました！

enebular x Firebase x M5StickC でサンタクロース侵入検出装置 enebular chain が完成しました。

enebular chain でサンタクロースの侵入にすぐに気づけますね！
侵入者とはいえサンタクロース、日頃の感謝を伝えるなり、お茶を差し入れるなり平和的なコミュニケーションを望みます。

#まとめと振り返り
- enebular で簡単に侵入者検出装置ができる！
- enebular の連携はログインレベルで超簡単！Firebase使える！
- M5StickC は小さいのに偉い！
- ArduinoJsonのバージョン注意
- Twitter連携はenebular側は簡単だけど、Twitter側のレスポンスがなんか、、、
- Noodl使い忘れた！

Advent Calendar初参戦でしたが楽しいですね！
でもこのへんで許してください。

今年の6月にIoTをいじり始めて半年が経ちましたが、それこそ星雲のごとく多くの出会いに恵まれて大変充実した2019年でした。
みなさんありがとうございます。

こたつみかんより感謝をこめて
もりけん