LoginSignup
11
2

More than 3 years have passed since last update.

enebular と LINE Things で懐にやさしい IoT

Last updated at Posted at 2019-12-08

この記事は 「enebular Advent Calendar 2019」の 9 日目の記事です。
# そして 11/28 開催の enebular developer meetup で登壇した内容です。

背景的な何か

2 年前に作った、仮想マシンの稼働状況や電源操作を手元で行えるようにした ESP8266 製の仮想マシン用物理電源ボタン🤔、これを今の技術スタック&違う切り口で作ってみました。

# 参考ですが、当時作成した仮想マシン用物理電源ボタンの概要図です。

image.png
アイコンはアレなのですが、2 年前の話ですのでご容赦を🙇‍♂️

今回作ったもの

enebular と LINE Things を使って出社/退社を検知し、仮想マシンの電源を制御してみました。
# タイトルの「懐にやさしい」は、仮想マシンの料金が節約できる、、、てことで。。。

材料

  • enebular
    • LINE Bot
    • 仮想マシンの電源を制御する
  • LINE Things
    • ESP32 製
    • LINE Things Starter for ESP32 ベース
      • 追加したコードは、定期的に BLE Notification を出すだけ
    • 職場に設置
      • Wi-Fi 不要
  • 仮想マシン
    • 今回の制御対象
    • Azure VM

こんな風に動く

ざっくりとこんな感じ。

出社時

image.png

  1. LINE Things からの BLE Notification がスマホの LINE アプリと LINE Platform を経由して、LINE Bot である enebular に到達
  2. enebular の Flow で、VM の電源が入っていなければ、電源オン。

退社時

image.png

  1. LINE Things からの BLE Notification が enebular に届かなくなる
  2. 一定時間 (例えば 5 分とか) enebular へ BLE Notification が届かなければ、VM の電源オフ

enebular で作成した LINE bot フロー

全体像はこのような感じです。
image.png

頑張ったところ

Function ノードの徹底排除

Function ノードの多用は、Node-RED のアンチ パターンの 1 つ です。
なので、今回徹底的に排除して、Change ノードに置き換えました。
# 結果 Change ノードだらけになって、やや複雑です。。。

サブ フローの使用

image.png

REST API の実行とその前準備、後処理などは決まった処理になるので、サブ フローとして切り出してみました。
Node-RED に触れてから 4 年くらいは経つのですが、サブ フローの存在を初めて知りました😅

LINE ボットとしてのユーザーとのインタラクション

実は、仮想マシンの電源オフ時は、一度 LINE アプリを介してユーザーに確認を入れています。
その確認で電源オフまでの時間を延長したり、即電源オフにしたり、一定時間無視されたら強制オフにしたり、と割と頑張って表現してみました。

作ってみて思うこと

enebular/Node-RED に代表されるビジュアル プログラミングで、↑みたいに変に頑張りすぎると、今回フローみたいに、一見何が何だかわからないフローになってしまいます。
ビジュアル プログラミングで表現するためには、できるだけシンプルなプログラムを考える、何か別の脳みそが必要なのかもしれないですね。。。

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2