この記事はenebular Advent Calendar 2019の1日目です。
素敵なクリスマスになるようにがんばって書きます。
#enebular x クリスマス
最初にenebularときいて思いつくのは星雲鎖ですよね。
星雲鎖と書いてネビュラチェーン。
アンドロメダ瞬の必殺技ですね。
今回はサンタクロース捕獲装置としてenebular chainを作ってみました。
#仕組み
侵入者に対してはやはり窓際対策が有効と思われます。
窓が開く → 警報
これで行きましょう。
#システム概要
enebularはFirebaseやTwitter連携がカンタンという噂なので、その辺りを使ってみます。
- enebular chainにM5StickCを取り付けて加速度を得ます。
- 加速度から得た窓の開け閉め情報をコード(0,1)でFirebaseに送ります。
- Firebaseの情報を定期的にenebularで取り寄せます。
- 窓が開いている情報が得られたらTwitterに通知します。
#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メールが来なくて時間切れでした。。
#enebular chain テスト
窓の開け閉めを一往復するとデバッグ画面がcodeをキャッチ
*Twitterできなかったのでデバッグのみです。
#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年でした。
みなさんありがとうございます。
こたつみかんより感謝をこめて
もりけん