ESP8266をオレオレLINE Botと直結したら

ステート管理がやりやすかった話

Masayuki Sugahara (ぺんた @plageoj)

ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

最近 Node-RED にはまりました

IFTTT 等と違って、困ったら自力でコードを書いて解決できるので
迷わない!

LINE Bot を作るのも楽ちん!
気軽にオレオレBotを作って遊べるようになりました。

Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

LINE Bot はステート管理が面倒

  • サーバーサイドでセッションをもつ必要がある

  • セッションのためだけに DB 用意するの…?

  • そもそもオレオレBotなのにそこまでの機能いる…?

Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

LINE Bot はステート管理が面倒

  • サーバーサイドでセッションをもつ必要がある

  • セッションのためだけに DB 用意するの…?

  • そもそもオレオレBotなのにそこまでの機能いる…?

どうせ自分しか使わないんだから、
デバイス側にやらせればよくね?

Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

IoT デバイスと LINE Bot を連携させる

あんまり遅いと返事ができないので、WebHook を活用。
image.png

Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

デバイス側は…

ESP8266 + Arduino フレームワーク。

#include <WebSocketsClient.h>
void wsEvent(WStype_t type, uint8_t *payload, size_t length){
  switch (type){
  case WStype_TEXT:
    String command = String((char *)payload);
    if (command.startsWith("LLOAD")){

ソースコードは GitHub で見られます!

Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

方針

  • Arduino のグローバル変数でステートを保持してしまう
  • Node-RED はただパススルーするだけ
  • あとは WebSocket でがんばる
  • デバイスをリセットすればBotが初期状態になる
  • デバイスの電源が切れるとBotから返事が来なくなる
     → 死活監視になります(笑)
  • 複数人で同時に使ったらどうなるかは運次第
Masayuki Sugahara (ぺんた @plageoj)
ESP8266をオレオレLINE Botと直結したらステート管理がやりやすかった話

センシング・モニタリングに
役立ててみてください

Masayuki Sugahara (ぺんた @plageoj)