LoginSignup
2
1

More than 1 year has passed since last update.

Node-REDで1からWebAPIを作るまでの最短チュートリアル

Last updated at Posted at 2022-10-27

Node-REDとは

APIやオンラインサービス、デバイスなどの機能を繋げてアプリケーションを作成していくオープンソースのプラットフォーム。ブラウザ上のエディタのマウス操作によって処理フローを作成することができる。

node-red1.png

この記事の対象者

  • Node-REDの使い方を1から学びたい人。
  • 他のデバイスやシステムからRaspberryPiのGPIOを簡単に制御したい人。
  • IoTデバイスの開発を考えている人。

今回の学習に必要なもの

  • Rapsberry Pi(zero系でも可能)
  • OSが入ったmicroSDカード
  • ジャンパ線
  • LED
  • ブレッドボード

Node-REDのインストール&起動

  1. Node-REDの導入

     $ sudo apt install nodered
     $ update-nodejs-and-nodered 
    
  2. GPIO操作用のPythonライブラリの導入

     sudo apt update && sudo apt install python-rpi.gpio
    
  3. Node-REDの起動

     sudo node-red-start
    

    ※本来Node-REDはsudoが不要ですが、今回はGPIOの操作に権限が必須のためsudoで起動します。

  4. ブラウザで以下のURLを開く

     http://{実機のIPアドレス}:1880
    
    • Node-RED編集画面

    node-red2.png

Node-REDの基本操作確認

ノード

Node-REDフロー上にある処理を指す。ワイヤーで複数のノードを結合することで連続的な処理を指示できる。

Screen Shot 2022-10-27 at 23.25.41.png

基本的な作成手順

  1. Node-REDをブラウザで開く。
  2. パレットからノードを取り出し、エディタ上に並べる。
  3. ノード同士をワイヤーで繋げる。
  4. デプロイボタンを押す。

処理フローの作成

  1. 左側のノード一覧の「input」から「inject」を取り出し、フロー上に設置する。

node-red3.png

  1. 設置した「inject」ノードをダブルクリックし、以下のようにプロパティを変更後Doneを押下する。
項目 設定内容
Payload String
Node_RED TEST

node-red4.png

node-red5.png

  1. ノード一覧の「output」から「debug」ノードを取り出し、フロー上に設置する。

node-red6.png

  1. 設置した2つのノードをLinkノードで接続する。

    node-red7.png

  2. 右上の「Deploy」ボタンを押下し、「Successsfully deployed」が表示されることを確認する。

    node-red8.png

  3. 設置した「inject」ノードの左端をクリックすると、デバッグウィンドウに「inject」から送られた値が表示される。

    ※デバッグウィンドウが表示されていない場合はエディタ右端から展開する。

    node-red_debug.png

解説

  • 今回「inject」ノードに設定した値は、文字列型の値としてmsg.Payloadに格納されている。このノードは入力として働くため、変数の値は接続した先のノードへ送られる。

    node-red9.png

  • デフォルトのdebugノードはmsg.Payloadを表示するようになっており、入力から送られた値がデバッグウィンドウに表示される。

    node-red11.png

GPIO制御

injectノードからLEDを点灯・消灯する。

  • 以下のように電子部品を接続しておく。

kairo.png

kairo2.png

  1. 3つのノードを以下のように設置し、デプロイする。

    node-red12.png

  • injectノード

    項目 設定内容
    Payload Boolean
    Trueまたはfalse

node-red13.png

  • RPI-GPIO(output)ノード

    項目 設定内容
    Pin GPIO04 - 7
    Type Digital output

node-red14.png

  1. 「true」側のinjectノードをクリックすると、GPIOに接続されたLEDが点灯されることを確認する。

GPIOから入力を検知する

  • 以下のように電子部品を接続しておく。

    kairo3.png

  1. 2つのノードを以下のように設置し、デプロイする。

node-red15.png

  • RPI-GPIO(input)ノード

    項目 設定内容
    Pin GPIO08 - 14
    Register pulldown

node-red16.png

  1. スイッチを押下しGPIOのピンに入力すると、デバッグウィンドウに値が表示されることを確認する。

    node-red17.png

WebAPI化

WebAPIからNode-REDを呼び出し、メッセージを返す処理を作ります。

  1. ノードを以下のように設置し、デプロイする。

    node-red18.png

  • httpノード

    node-red19.png

    項目 設定内容
    Method GET
    URL /test
  • functionノード

    node-red20.png

コード

msg.payload = "テスト";
return msg;
  • http responseノード

    設定不要(デフォルトでmsg.payloadを返すようになっているため)。

  1. ブラウザで以下のURLを開く。

     http://{実機のIPアドレス}:1880/test
    

functionノードで設定した「テスト」が表示されたら成功。

browser1.png

(応用編)WebAPIでLEDを制御する

  1. ノードを以下のように設置し、デプロイする。

node-red21.png

  • httpノード

    項目 設定内容
    Method GET
    URL /onと/off
  • functionノード

ONメッセージ

msg.payload = "ON"
return msg;

OFFメッセージ

msg.payload = "OFF"
return msg;

true返却

msg.payload = true
return msg;

false返却

msg.payload = false
return msg;
  • RPI-GPIO(output)ノード

    項目 設定内容
    Pin GPIO04 - 7
    Type Digital output
  • http responseノード

    設定不要

  1. ブラウザで以下のURLを開く。

    • ONのパターン
     http://{実機のIPアドレス}:1880/on
    

    「ON」が表示され、LEDが点灯する。

    node-red22.png

    • OFFのパターン
     http://{実機のIPアドレス}:1880/off
    

    「OFF」が表示され、LEDが消灯する。

    node-red23.png

(参考)Node-REDの追加ノード

  • node-red-contrib-alexa-home-skill

    Alexaと連携が可能になるノード。

    node-red24.png

  • node-red-contrib-slack

    slackと連携が可能になるノード。

    node-red25.png

2
1
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
2
1