トップサービス導入事例強み開発ブログよくある質問会社案内 お問い合わせ
Dev Blog

RaspberryPi + Node-RED

RaspberryPiに接続したセンサーからの値をSlackに通知するのはできたので、今度はSlackからRaspberryPiに指示を送ってみたい。 そうすることで、RaspberryPiを遠隔操作ができ、エアコン点けたり、LEDライト点けたり、写真撮ったりが可能。

■実現イメージ 方法は多々あるであろうがNode-REDを採用。 処理の内容をプログラムを書くのではなく、処理のテンプレートを繋げて定義し(JSON形式)、デプロイするだけなのが手軽でよい。

(1)Slackから通知を受け取り、mqttを送信するフローを作成し、デプロイ (2)mqttを受信し、受信内容(payload)からGPIOに接続したLEDライトをon・offするフローを作成し、デプロイ

通常は(1)はサーバで、(2)はRaspberryPiになるが、 今回は技術調査なので、便宜上(1)(2)のフローの両方をもRaspberryPiにデプロイした。

■準備

  • SlackのAPPで「BOTS」を追加し、トークンを取得しておく
  • RaspberryPiにnvmをインストールし、nodeのバージョンを「10.17.0」にした
  • npmをインストール
  • node-redをインストール
  • node-red-contrib-slack、node-red-node-pi-gpio をインストール

■結果

  • slackから「1」を送信。点いた。
SlackからのON指示でLEDライトが点灯した様子
  • slackから「0」を送信。消えた。
SlackからのOFF指示でLEDライトが消灯した様子

■感想

  • その他の方法として「enebular+AWSIoT」を使ったり、Slackで入力を受け取りhookの設定でサーバにPOSTしたり・・という方法も試してみたが、今回試した方法が一番簡単であった。 今回はLEDライトで試してみたが、赤外線送信機をつければエアコン・照明・テレビの操作ができ、スマートホームができそう。

  • 各所に配置したデバイスから一斉に観測データを報告させるとか可能。カメラがあれば画像もアップさせる。

  • enebular+AWSIoTを使ってみて、それぞれのサービスの理解が深まった。