| | 3章Armadillo のセットアップ を完了している場合は Armadillo を起動すると、自動的に Node-RED コンテナが起動します。
Node-RED への接続には 「ネットワークに接続する」 で取得した IP アドレスを使用します。 パソコンの Web ブラウザから、http://<ipアドレス>:1880/ にアクセスしてください。 Node-RED には大きく3つの領域があります。
パレット
使用可能なコアノード、カスタムノードの一覧を表示します。
ワークスペース
Node-RED では一つのアプリケーションの流れをフローという単位で表します。
ワークスペース上にノードを繋げてフローを作成します。
パレットから必要なノードをワークスペースにドラッグ、ドロップで配置します。
サイドバー
選択したノードの情報や、デバッグメッセージを表示します。
4.2. Node-RED コンテナのログを表示するパソコンの Web ブラウザから、http://<ipアドレス>:1880/node-red.log にアクセスすると Node-RED コンテナのログが表示されます。 このログファイルは /var/app/rollback/volumes/node-red/log に保存されています。ログのサイズが 5MB を超えると新しいログファイルに移行します。
古いログファイルを表示したい場合は、http://<ipアドレス>:1880/node-red.log.1 にアクセスしてください。 4.3. Node-RED で利用可能なノードの一覧3章Armadillo のセットアップ でインストールした Node-RED コンテナには Node-RED のコアノードの他にインストールされているカスタムノードがあります。
インストール済のカスタムノードは以下になります。
Dashboard ノード
Dashboard を表示するノードです。
exit ノード
Node-RED を終了するためのノードです。
GPIO in, GPIO out ノード
GPIO 入力、出力を行うノードです。
falling edge, rising edge, hysteresis ノード
GPIO 入力の立ち上がりエッジ、立ち下がりエッジ、もしくは両方の検出を行うノードです。
modbus ノード
RS485 を用いたModbus 通信用のノードです。以下のノードが使用可能です。ただし、modbus-flex-server ノードは使用不可となっています。
modbus-response, modbus-read, modbus-getter, modbus-flex-getter, modbus-write, modbus-flex-write,
modbus-server, modbus-queue-info, modbus-flex-connector, modbus-io-config, modbus-response-filter, modbus-flex-sequencer ノード
exec queue ノード
exec を複数記載できるノードです。
credentials ノード
設定内容を暗号化して保持するためのノードです。
AWS ノード
AWS サービスを利用するためのノードです。暗号化が不要な場合は、AWS IoTData ノードを使用してデバイスシャドウの操作が可能です。
Node-RED では一つのアプリケーションの流れをフローという単位で表します。
各ノードを使用したフローの作成方法について紹介します。 ここでは、LED を1秒間隔で点滅するフローを作成します。すべて Node-RED のコアノードを使用します。
Armadillo-IoT ゲートウェイ A6E の LED は以下がありますが、今回対象にするのはアプリケーション LED です。
アプリケーション LED の場所については 「インターフェースレイアウト」 をご確認ください。 アプリケーション LED は /sys/class/leds/app/brightness ファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。
0 を書き込むと消灯、0 以外の値 (1~255) を書き込むと点灯します。 表4.1 LED 信号配列 部品番号 | 名称(色) | 説明 |
---|
SYS | システムLED(緑) | 電源(VCC_3.3V)の入力状態を表示、i.MX6ULLのUART2_CTS_Bピン(GPIO1_IO22)に接続
(Low: 消灯、High: 点灯) | APP | アプリケーションLED(緑) | アプリケーションの状態を表示、i.MX6ULLのUART2_RTS_Bピン(GPIO1_IO23)に接続
(Low: 消灯、High: 点灯) | WWAN | ワイヤレスWAN LED(緑) | LTE通信の状態を表示、i.MX6ULLのUART1_RX_DATAピン(GPIO1_IO17)に接続
(Low: 消灯、High: 点灯) |
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は2秒間隔で実行します。
名前: LED Blink
繰り返し: 指定した時間間隔
時間間隔:2秒
-
[trigger] ノードをドラッグ、ドロップします。
[trigger] ノードのプロパティを編集します。
[trigger] は 1 を送信して1秒待機後、0 を送信します。これにより点滅動作を実現します。
送信データ:1
送信後の処理:指定した時間待機
1秒
再送信データ:0
-
[LED Blink] ノードの右側にある端子をクリックし、[trigger] ノードの左側の端子を選択して放します。
-
[write file] ノードをドラッグ、ドロップします。
[write file] ノードのプロパティを編集します。
/sys/class/leds/app/brightness ファイルへ [trigger] からの送信データを書き込みます。
ファイル名: /sys/class/leds/app/brightness
動作: ファイルを上書き
文字コード: デフォルト
名前: APP LED
-
[trigger] ノードの右側にある端子をクリックし、[APP LED] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[APP LED] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。アプリケーション LED が1秒毎に点滅を繰り返す動きをすれば成功です。
ここでは、 Armadillo-IoT ゲートウェイ A6E の CPU の測定温度を1秒間隔で取得するフローを作成します。全て Node-RED のコアノードを使用します。
/sys/class/thermal/thermal_zone0/temp ファイルの値を読み出すことによって測定温度を取得することができます。
温度はミリ°C の単位で表示されるため、°C 単位への変換も行います。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は1秒間隔で実行します。
繰り返し: 指定した時間間隔
時間間隔: 1秒
-
[read file] ノードをドラッグ、ドロップします。
[read file] ノードのプロパティを編集します。
/sys/class/thermal/thermal_zone0/temp ファイルの値を読み出します。
ファイル名: /sys/class/thermal/thermal_zone0/temp
出力形式: 文字列
文字コード: デフォルト
名前: CPU temp
-
[Get CPU temp] ノードの右側にある端子をクリックし、[CPU temp] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
CPU の測定温度がミリ°C の単位のため、°C の単位へ変換します。
msg.payload で渡された値を 1000 で割り、msg.payload に戻します。
名前: CPU temp calc
コード:
msg.payload = msg.payload / 1000;
return msg;
-
[CPU temp] ノードの右側にある端子をクリックし、[CPU temp calc] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[CPU temp calc] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。デバッグメッセージに1秒毎に CPU の測定温度が表示されます。
ここでは、 接点入力の入力レベルを1秒間隔で取得するフローを作成します。
Node-RED のコアノードのほかに GPIO in ノードを使用します。
Armadillo-IoT ゲートウェイ A6E の CON6 にある接点入力を使用します。入力レベル 0 は LOW レベル、1 は HIGH レベルを表わします。
接点入力の場所については 「インターフェースレイアウト」 をご確認ください。 表4.2 CON6 信号配列(接点入力関連) ピン番号 | ピン名 | I/O | 説明 |
---|
3 | COM | In | 接点入力プラスコモン | 4 | DI1 | In | 接点入力1 | 5 | DI2 | In | 接点入力2 |
DI ピンは GPIO として制御可能であり、対応する GPIO 番号を次に示します。 表4.3 接点入力に対応する CON6 ピン番号 ピン番号 | ピン名 | GPIOチップ | GPIO番号 |
---|
4 | DI1 | gpiochip5 | 0 | 5 | DI2 | gpiochip5 | 1 |
| |
---|
接点入力に何も接続していない(開放状態)場合、取得できる入力レベルは 1 (HIGH レベル)となります。 |
接続に関する注意事項は以下です。 表4.4 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
Armadillo-IoT ゲートウェイ A6E の接点入力インターフェースはフォトカプラで絶縁されています。
そのため、フォトカプラを駆動させるために5V以上の電圧を印加する必要があります。
外部電源を用いてフォトカプラを駆動させる場合の接続方法について以下に示します。 例として DI1 ピンからの入力レベルを取得するフローを作成します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は2秒間隔で実行します。
名前: Get DI1
繰り返し: 指定した時間間隔
時間間隔:1秒
-
[GPIO in] ノードをドラッグ、ドロップします。
[GPIO in] ノードのプロパティを編集します。
Device:gpiochip5
Type:Digital pin
Pin: 0
Name:DI1
-
[Get DI1] ノードの右側にある端子をクリックし、[DI1] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[DI1] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。デバッグメッセージに 1秒毎に DI1 ピンの入力レベルが表示されます。
何も接続してない場合であれば常に 1 が表示されます。
ここでは、 接点出力の出力レベルを1秒毎に HIGH レベルと LOW レベルを切り替えるフローを作成します。
Node-RED のコアノードのほかに GPIO out ノードを使用します。
Armadillo-IoT ゲートウェイ A6E の CON6 にある接点出力を使用します。
出力レベル 0 は LOW レベル、1 は HIGH レベルを表わします。
接点出力の場所については 「インターフェースレイアウト」 をご確認ください。 表4.5 CON6 信号配列(接点出力関連) ピン番号 | ピン名 | I/O | 説明 |
---|
6 | DO1A | - | 接点出力1A | 7 | DO1B | - | 接点出力1B | 8 | DO2A | - | 接点出力2A | 9 | DO2B | - | 接点出力2B |
DO ピンは GPIO として制御可能であり、対応する GPIO 番号を次に示します。 表4.6 接点出力に対応する CON6 ピン番号 ピン番号 | ピン名 | GPIOチップ | GPIO番号 |
---|
6 | DO1A | gpiochip5 | 2 | 7 | DO1B | gpiochip5 | 2 | 8 | DO2A | gpiochip5 | 3 | 9 | DO2B | gpiochip5 | 3 |
接続に関する注意事項は以下です。 表4.7 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
Armadillo-IoT ゲートウェイ A6E の接点出力インターフェースはフォトカプラで絶縁されています。
そのため、フォトカプラを駆動させるために5V以上の電圧を印加する必要があります。
外部電源を用いてフォトカプラを駆動させる場合の接続方法について以下に示します。 例として DO1 ピンの出力レベルを制御するフローを作成します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は2秒間隔で実行します。
名前: Set DO1
繰り返し: 指定した時間間隔
時間間隔: 2秒
-
[trigger] ノードをドラッグ、ドロップします。
[trigger] ノードのプロパティを編集します。
送信データ:1
送信後の処理:指定した時間待機
1秒
再送信データ:0
-
[GPIO out] ノードをドラッグ、ドロップします。
[GPIO out] ノードのプロパティを編集します。
Device:gpiochip5
Type:Digital (0/1)
Pin: 2
Name:DO1
-
[Set DO1] ノードの右側にある端子をクリックし、[DO1] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[DO1] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。1秒毎に DO1 ピンの出力レベルが HIGH レベルと LOW レベルで切り替わります。
4.4.5. 接点入力の入力レベルの立ち上がりエッジを検出するここでは、 接点入力の入力レベルの立ち上がりエッジを検出するフローを作成します。
Node-RED のコアノードのほかに rising edge ノードを使用します。
Armadillo-IoT ゲートウェイ A6E の CON6 にある接点入力と接点出力を使用します。
入力レベル、出力レベルの 0 は LOW レベル、1 は HIGH レベルを表わします。
接点入力、接点出力の場所については 「インターフェースレイアウト」 をご確認ください。 例として DI2 ピンの立ち上がりエッジを取得するフローを作成します。
また、立ち上がりエッジ検出のためにループバック接続を行います。
接続に関する注意事項は以下です。 表4.8 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
CON6 にある接点入力、接点出力のピンを次に示します。 表4.9 CON6 信号配列(接点入力、出力関連) ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VIN | In | 入力電圧 | 2 | GND | In | GND | 3 | COM | In | 接点入力プラスコモン | 4 | DI1 | In | 接点入力1 | 5 | DI2 | In | 接点入力2 | 6 | DO1A | - | 接点出力1A | 7 | DO1B | - | 接点出力1B | 8 | DO2A | - | 接点出力2A | 9 | DO2B | - | 接点出力2B |
DI ピンと DO ピンは GPIO として制御可能であり、対応する GPIO 番号を次に示します。 表4.10 接点入力、出力に対応する CON6 ピン番号 ピン番号 | ピン名 | GPIOチップ | GPIO番号 |
---|
4 | DI1 | gpiochip5 | 0 | 5 | DI2 | gpiochip5 | 1 | 6 | DO1A | gpiochip5 | 2 | 7 | DO1B | gpiochip5 | 2 | 8 | DO2A | gpiochip5 | 3 | 9 | DO2B | gpiochip5 | 3 |
Armadillo-IoT ゲートウェイ A6E の接点入力、出力インターフェースはフォトカプラで絶縁されています。
そのため、フォトカプラを駆動させるために5V以上の電圧を印加する必要があります。 ループバック接続を用いて DO2 ピンの出力レベルを変更して、DI2 ピンで立ち上がりエッジを検出します。
必要なピン接続は以下です。 ・VIN ピン - COM ピン
・GND ピン - DO2B ピン
・DI2 ピン - DO2A ピン -
はじめに DI2 ピンの立ち上がりエッジを検出するフローを作成します。
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。
名前: Get DI2
繰り返し: 指定した時間間隔
時間間隔:0.1秒
-
[GPIO in] ノードをドラッグ、ドロップします。
[GPIO in] ノードのプロパティを編集します。
Device:gpiochip5
Type:Digital pin
Pin: 1
Name:DI2
-
[Get DI2] ノードの右側にある端子をクリックし、[DI2] ノードの左側の端子を選択して放します。
-
[rising edge] ノードをドラッグ、ドロップします。
[rising edge] ノードのプロパティを編集します。
Name: notify rising edge
Threshold: 0
-
[DI2] ノードの右側にある端子をクリックし、[notify rising edge] ノードの左側の端子を選択して放します。
-
[change] ノードをドラッグ、ドロップします。
[change] ノードのプロパティを編集します。
名前: notification
ルール: 値の置換 msg.payload
検索する文字列: 1
置換後の文字列: notify!
-
[notify rising edge] ノードの右側にある端子をクリックし、[notification] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
-
[notification] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
次に DO2 ピンの出力レベルを変更するフローを追加します。[Get DI2] の下に [inject] ノードをドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。
名前: Output LOW
msg.payload: 0
繰り返し: なし
-
[Output LOW] の下に [inject] ノードをドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。
名前: Output HIGH
msg.payload: 1
繰り返し: なし
-
[GPIO out] ノードをドラッグ、ドロップします。
[GPIO out] ノードのプロパティを編集します。
Device:gpiochip5
Type:Digital (0/1)
Pin: 3
Name:DO2
-
[Output LOW] ノードの右側にある端子をクリックし、[DO2] ノードの左側の端子を選択して放します。
[Output HIGH] ノードの右側にある端子をクリックし、[DO2] ノードの左側の端子を選択して放します。
[DO2] ノードの左側は二つのノードが繋がっている状態になります。
-
画面右上の [デプロイ] を押します。
[Output LOW] を押した後に [Output HIGH] を押した場合に、立ち上がりエッジを検出して "notify!" がサイドバーのデバッグメッセージに表示されます。
4.4.6. RS-485 modbus RTU 読み出しを行うここでは、 RS-485 を使用した Modubus RTU 読み出し用フローを作成します。
Node-RED のコアノードのほかに modbus-client ノード、Modbus-Read ノード、 modbus-response ノードを使用します。
Armadillo-IoT ゲートウェイ A6E の CON6 にある RS485 を使用します。
RS-485 シリアルインターフェースのデバイスファイルは、/dev/ttymxc4 を使用します。
RS-485 の場所については 「インターフェースレイアウト」 をご確認ください。 表4.11 CON6 信号配列(RS-485関連) ピン番号 | ピン名 |
---|
10 | DATA+ | 11 | DATA- | 12 | GND |
-
機能
-
最大データ転送レート : 5Mbps
-
半二重対応
-
RS-485 シリアルインターフェースのデバイスファイルは、/dev/ttymxc4 を使用します。
終端抵抗 120Ω の ON/OFFをスイッチ (SW3) で切り替えることができます、設定方法は以下をご確認ください。 -
-
終端抵抗 120Ω がONになります。
-
-
終端抵抗 120Ω がOFFになります。
| |
---|
終端はRS485の信号線の最遠端で行います。
Armadillo-IoT ゲートウェイ A6E が最遠端になる場合は終端抵抗をONにしてください。 |
接続に関する注意事項は以下です。 表4.12 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
RS-485通信対応デバイスとの接続方法について以下に示します。 今回は以下のRS-485通信対応デバイスを想定した場合の設定内容となります。
実際に動作確認する場合は、使用するRS-485通信対応デバイスの設定に変更してください。 ユニットID: 1
通信プロトコル: Modbus RTU
ボーレート: 9600
読み出しアドレス: 0x00
ファンクションコード: 1 -
パレットから [Modbus-Read] ノードをワークスペースにドラッグ、ドロップします。
-
[Modbus-Read] ノードのプロパティを編集します。
先に Server を設定する必要があります。[新規に modbus-client を追加] の右隣の編集ボタンを押して [modbus-client] を作成します。
名前: RS485 slave device
Type: Serial
Serial port: /dev/ttymxc4
Serial type: RTU
Baud rate: 9600
Unit-Id: 1
[Modbus-Read] ノードのプロパティを編集します。
名前: slave device
トピック:
Unit-Id:
FC: FC 1:Read Coil Status
Address: 0
Quantity: 1
Poll Rate: 1 Second(s)
Server: RS485 slave device
-
[Modbus-Response] ノードをドラッグ、ドロップします。
[slave device] ノードの右側にある端子をクリックし、[Modbus-Response] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。読み出しに成功すると1秒毎に読みだした値が更新され [Modbus-Response] ノードの下に表示されます。
4.4.7. CPU の測定温度のグラフをダッシュボードに表示する「CPU の測定温度を取得する」 で取得した CPU 温度をダッシュボードにグラフとして表示するフローを作成します。
サイドバーの右端にある三角形のボタンを押し、[ダッシュボード] を選択します。
[ダッシュボード] 編集画面が表示されることを確認します。
[+タブ] ボタンを押して [Tab1] を追加します。
[Tab1] プロパティを編集します。
名前: Armadillo
アイコン: dashboard
[Armadillo] タブが追加されました。
名前: Armadillo
アイコン: dashboard
[Armadillo] 横の [+グループ] ボタンを押して [Group1] を追加します。
名前: Armadillo
アイコン: dashboard
[Group1] プロパティを編集します。
名前: Group 1
タブ: Armadillo
種類:
幅: 15
□グループ名を表示する
[chart] ノードをワークスペースにドラッグ、ドロップします。ダッシュボード編集画面の [Group1] グループに追加されたことを確認します。
[chart] ノードのプロパティを編集します。
グループ: [Armadillo] Group 1
サイズ: 自動
ラベル: CPU temp
種類: 折れ線グラフ
X軸: 直近1時間
X軸ラベル: HH:mm:ss
Y軸: 最小 20 最大 50
凡例: 非表示 補完: 直線
[CPU temp calc] ノードの右側にある端子をクリックし、[CPU temp] ノードの左側の端子を選択して放します。
画面右上の [デプロイ] を押します。ダッシュボード編集画面の [テーマ] タブの右側にある四角に矢印が重なったボタンを選択すると、ダッシュボードが表示されます。
-
ダッシュボードの CPU 温度のグラフは一秒毎に更新されます。
ここでは、外部プログラムを実行しその結果を取得するフローを作成します。
外部プログラムは [exec] ノードで実行することができます。
ここでの外部プログラムとはシステムコマンドやユーザー自身が作成したプログラムのことを指します。 例として date コマンドを実行するフローを作成します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[exec] ノードをドラッグ、ドロップします。
[exec] ノードのプロパティを編集します。
コマンド: date
引数: なし
-
[indect] ノードの右側にある端子をクリックし、[exec] ノードの左側の端子を選択して放
します。
-
[debug] ノードをドラッグ、ドロップします。
[exec] ノードの右側の一番上にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと [exec] ノードに設定した
date コマンドが実行され標準出力の結果が
デバッグメッセージに表示されます。
[exec] ノードの右の端子は上からそれぞれ「標準出力」「標準エラー出力」「返却コード」となっており、
取得したい出力によって使い分けることができます。 ここでは、 Node-RED を任意のタイミングで終了するフローを作成します。
Node-RED のコアノードのほかに exit ノードを使用します。 | |
---|
Node-RED 終了後、Node-RED を再起動するためには Armadillo-IoT ゲートウェイ A6E の電源を再投入する必要があります。 |
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします
[inject] ノードのプロパティを編集します。
名前: Finish Node-RED
繰り返し: なし
-
[exit] ノードをドラッグ、ドロップします。
[exit] ノードのプロパティを編集します。
Name: exit
Exit code: 0
[Finish Node-RED] ノードの右側にある端子をクリックし、[exit] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。[Finish Node-RED] ノードの左側にあるボタンを押すと Node-RED が終了します。
Node-RED に関するユーザデータは /var/app/rollback/volumes/node-red/root に保存されます。
当ディレクトリを削除した場合はユーザデータは全て削除されます。
この場合 Node-RED のブラウザからインストールしたカスタムノードは削除されます。 4.6. AWS へデバイス情報を送信するフローを作成するArmadillo-IoT ゲートウェイ A6E から AWS サービスへデバイス情報を送信するための一連のフローについて説明します。
デバイス状態の送信には AWS IoT Device Shadow サービスを利用します。 | |
---|
この機能を使用するには、バージョン 1.1.0 以上の Node-RED コンテナが必要です。 |
手順を以下に示します。 最初に AWS 上で作業が必要です。 -
AWS アカウントの作成
-
IAM ユーザーの作成
-
デバイスデータエンドポイントの取得
以下は Node-RED 上で操作します。 -
デバイス証明書を取得するフローの作成
-
デバイスを登録するフローの作成
-
AWS IoT ポリシーを作成するフローの作成
-
デバイス証明書を登録するフローの作成
-
ポリシーをアタッチするフローの作成
ここまでの手順はデバイス登録のために一度のみ実行する必要があります。
もし、デバイスを誤って削除してしまった場合や、登録した証明書の期限が切れた場合などがあれば、
再度実行する必要があります。 AWS IoT Device Shadow サービスを利用して、デバイスシャドウを制御します。
本ドキュメントでは、暗号化したデバイスシャドウを用いることで、デバイス状態についてよりセキュアに通信します。
デバイスシャドウを制御するフローについては、以下になります。 -
デバイスシャドウを取得するフローの作成
-
デバイスシャドウを更新するフローの作成
-
デバイスシャドウを削除するフローの作成
AWS IAM (Identity and Access Management) は、AWS リソースへのアクセスを安全に管理するためのウェブサービスです。
IAM により、誰を認証(サインイン)し、誰にリソースの使用を承認する(アクセス許可を持たせる)かを管理することができます。 本章では以下の手順について説明します。 -
IAM ユーザーの作成
-
IAM ユーザーにポリシーの設定
-
IAM ユーザーのアクセスキーの作成
4.6.2.2. IAM ユーザーにポリシーを設定する作成した AWS IAM ユーザには AWS IoT Device Shadow サービスを利用するために必要な許可を与える必要があります。
必要なポリシーについては 公式のドキュメント を参照してください。
以下はポリシーの例です。ポリシー名については任意の名前を与えてください。 4.6.2.3. IAM ユーザーのアクセスキーを作成する作成した AWS IAM ユーザのアクセスキーを作成します。AWS IAM ユーザーのアクセスキーの管理については
公式のドキュメント を参照してください。
作成したアクセスキーとシークレットキーについては、
AWS IoT Device Shadow サービスの利用のため Node-RED のノードに設定する必要があるため、無くさないでください。
以上で AWS 上で操作が必要な手順については終了です。 4.6.3. デバイスデータエンドポイントを取得するデバイスシャドウの取得・更新・削除にはデバイスデータエンドポイントを使用します。
デバイスデータエンドポイントの取得方法は 公式のドキュメント を参照してください。 4.6.4. デバイス証明書を取得するフローの作成Armadillo Base OS 搭載機器は、標準でセキュアエレメントを搭載しており、対応した暗号化方式の認証鍵や証明書を安全に保存・利用することが可能です。
EdgeLock SE050 は IoT アプリケーション向けのセキュアエレメントです。 フラッシュメモリを内蔵しており、保存された秘密鍵を外部に露出することなく暗号処理に利用できます。 セキュアエレメントは I2C デバイスとして認識されます。
製品によって I2C バスが異なるためご注意ください。
Armadillo-IoT ゲートウェイ A6E で使用する I2C バスを 表4.13「I2C デバイス」 に示します。 表4.13 I2C デバイス I2C バス | I2C デバイス |
---|
アドレス | デバイス名 | | 1(I2C2) | 0x48 | SE050(セキュアエレメント) |
このフローでは秘密鍵とデバイス証明書を EdgeLock SE050 より取得して、/var/app/rollback/volumes/node-red/cert に保存します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[exec] ノードをドラッグ、ドロップします。
[exec] ノードのプロパティを編集します。
コマンド: se05x_getkey 0xF0000111 /cert/device_cert.pem /dev/i2c-1:0x48
引数: チェックなし
出力: コマンド終了時 - execモード
名前: デバイス証明書の取得
-
[inject] ノードの右側にある端子をクリックし、[デバイス証明書の取得] ノードの左側の端子を選択して放します。
-
もう一つ [exec] ノードをドラッグ、ドロップします。
[exec] ノードのプロパティを編集します。
コマンド: ls /cert
引数: チェックなし
出力: コマンド終了時 - execモード
名前: ファイルの確認
-
[デバイス証明書の取得] ノードの右側にある端子をクリックし、
[ファイルの確認] ノードの左側の端子を選択して放します。
-
もう一つ、[inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[exec] ノードをドラッグ、ドロップします。
[exec] ノードのプロパティを編集します。
コマンド: se05x_getkey 0xF0000110 /cert/key.pem /dev/i2c-1:0x48
引数: チェックなし
出力: コマンド終了時 - execモード
名前: リファレンスキーの取得
-
二つ目の [inject] ノードの右側にある端子をクリックし、
[リファレンスキーの取得] ノードの左側の端子を選択して放します。
-
[リファレンスキーの取得] ノードの右側にある端子をクリックし、
[ファイルの確認] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[ファイルの確認] ノードの右側の一番上にある端子をクリックし、
[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角をそれぞれ押すと、コマンドの実行結果結果がデバッグメッセージに表示されます。
下記ファイルが出力されていれば取得に成功しています。
実行に成功した場合は /var/app/rollback/volumes/node-red/cert/ にデバイス証明書が保存されています。 AWS IoT Device Shadow サービスを利用するため、AWS IoT Core にデバイス(モノ)を登録する必要があります。
今回モノの名前はデバイスのシリアルナンバー(例: 001234567890)を使用します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[credentials] ノードをドラッグ、ドロップします。
[credentials] ノードのプロパティを編集します。[追加] ボタンを押して値を追加します。
private のステータスが [文字列] のままだと内容が表示されたままのため、確認後は [hidden] に変更するのを推奨します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.user>>で取得したアクセスキー
to: [msg.] aws_access_key
private: [hidden] <<sct.development.aws.user>>で取得したシークレットキー
to: [msg.] aws_secret_key
private: [文字列] リージョン(例: ap-northeast-1)
to: [msg.] aws_iot_region
private: [hidden] IoT Core REST API エンドポイント(例: iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_iot_host
-
[inject] ノードの右側にある端子をクリックし、[接続情報の登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイス登録の引数設定
コード:
msg.payload = msg.aws_access_key + ":" + msg.aws_secret_key
+ " " + msg.aws_iot_region
+ " " + msg.aws_iot_host;
-
[接続情報の登録] ノードの右側にある端子をクリックし、
[デバイス登録の引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: デバイス登録
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
AWS_ACCESS="$1"
AWS_REGION="$2"
ENDPOINT="$3"
URI=/things/${AT_SERIAL_NUMBER}
curl \
--cacert /cert/AmazonRootCA1.pem \
--user "${AWS_ACCESS}" \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
--request POST -v \
-d "{}" \
"https://${ENDPOINT}${URI}"
-
[デバイス登録の引数設定] ノードの右側にある端子をクリックし、
[デバイス登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイス名の取得
コード:
var res = JSON.parse(msg.payload);
msg.payload="thingName:" + res.thingName;
return msg;
-
[debug] ノードをドラッグ、ドロップします。
[デバイス名の取得] ノードの右側の端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと登録したモノの名前がデバッグメッセージに表示されます。
表示されたモノの名前がデバイスシャドウの対象になります。 4.6.6. AWS IoT ポリシーを作成するフローの作成登録したモノに対して AWS IoT Device Shadow サービスを利用するための許可を与える必要があります。
そのため、必要な AWS IoT ポリシーを作成してアタッチする必要があります。
まず、ポリシーを新しく作成します。
「デバイスを登録するフローの作成」 で作成した [接続情報の登録] ノードを使用します。
[接続情報の登録] ノードのプロパティに [ポリシー名] を追加します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.user>>で取得したアクセスキー
to: [msg.] aws_access_key
private: hidden: <<sct.development.aws.user>>で取得したシークレットキー
to: [msg.] aws_secret_key
private: [文字列] リージョン(例: ap-northeast-1)
to: [msg.] aws_iot_region
private: [hidden] IoT Core REST API エンドポイント(例: iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_iot_host
private: [hidden] ポリシー名(例: node-red-thing-policy)
to: [msg.] aws_policy_name
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: ポリシー登録の引数設定
コード:
msg.payload = msg.aws_access_key + ":" + msg.aws_secret_key
+ " " + msg.aws_iot_region
+ " " + msg.aws_iot_host
+ " " + msg.aws_policy_name;
-
[接続情報の登録] ノードの右側にある端子をクリックし、
[ポリシー登録の引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: 新しいポリシーの作成
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
AWS_ACCESS="$1"
AWS_REGION="$2"
ENDPOINT="$3"
POLICY_NAME="$4"
URI=/policies/${POLICY_NAME}
curl \
-H "Content-type: application/json" \
--cacert /cert/AmazonRootCA1.pem \
--user "${AWS_ACCESS}" \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
-d '{"policyDocument": "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Action\": \"iot:*\",\"Resource\": \"*\"}]}"}' \
--request POST -v \
"https://${ENDPOINT}${URI}"
-
[ポリシー登録の引数設定] ノードの右側にある端子をクリックし、
[新しいポリシーの作成] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: ポリシー名の取得
コード:
var res = JSON.parse(msg.payload);
msg.payload = "policyName:" + res.policyName;
return msg;
-
[新しいポリシーの作成] ノードの右側にある端子をクリックし、
[ポリシー名の取得] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[ポリシー名の取得] ノードの右側の端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すとポリシー作成の結果がデバッグメッセージに表示されます。
すでに登録済みの場合は undefined になります。 4.6.7. デバイス証明書を登録するフローの作成登録したデバイスのデバイス証明書を登録します。
「デバイスを登録するフローの作成」 で作成した [接続情報の登録] ノードを使用します。 -
パレットから [function] ノードをワークスペースにドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイス証明書登録の引数設定
コード:
msg.payload = msg.aws_access_key + ":" + msg.aws_secret_key
+ " " + msg.aws_iot_region
+ " " + msg.aws_iot_host;
return msg;
-
[接続情報の登録] ノードの右側にある端子をクリックし、
[デバイス証明書登録の引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: デバイス証明書の登録
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
AWS_ACCESS="$1"
AWS_REGION="$2"
ENDPOINT="$3"
URI=/certificate/register-no-ca
CERT=$(cat /cert/device_cert.pem | sed -z 's/\n/\\n/g')
curl \
-H "Content-type: application/json" \
--cacert /cert/AmazonRootCA1.pem \
--user "${AWS_ACCESS}" \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
-d "{\"certificatePem\":\"${CERT}\",\"status\":\"ACTIVE\"}" \
--request POST -v \
"https://${ENDPOINT}${URI}"
-
[デバイス証明書登録の引数設定] ノードの右側にある端子をクリックし、
[デバイス証明書の登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: 証明書 ID の取得
コード:
var res = JSON.parse(msg.payload);
msg.payload = "certificateArn:" + res.certificateArn;
return msg;
-
[デバイス証明書の登録] ノードの右側にある端子をクリックし、
[証明書 ID の取得] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[証明書 ID の取得] ノードの右側の端子をクリックし、
[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すとデバイス証明書の登録結果がデバッグメッセージに表示されます。
実際は使用しているリージョン名と、アカウントID が含まれます。
すでに登録済みの場合は undefined になります。 4.6.8. AWS IoT ポリシーをデバイスにアタッチするフローの作成「AWS IoT ポリシーを作成するフローの作成」 で作成したポリシーをデバイスにアタッチします。
「デバイスを登録するフローの作成」 で作成した [接続情報の登録] ノードを使用します。
[接続情報の登録] ノードのプロパティに、
「デバイス証明書を登録するフローの作成」 で取得した [証明書ID] を追加します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.user>>で取得したアクセスキー
to: [msg.] aws_access_key
private: [hidden] <<sct.development.aws.user>>で取得したシークレットキー
to: [msg.] aws_secret_key
private: [文字列] リージョン(例: ap-northeast-1)
to: [msg.] aws_iot_region
private: [hidden] IoT Core REST API エンドポイント(例: iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_iot_host
private: [hidden] 証明書ID (例: arn:aws:iot:ap-northeast-1:00000000:cert/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
to: [msg.] aws_cert_arn
-
パレットから [function] ノードをワークスペースにドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: ポリシーをアタッチするための引数設定
コード:
msg.payload = msg.aws_access_key + ":" + msg.aws_secret_key
+ " " + msg.aws_iot_region
+ " " + msg.aws_iot_host
+ " " + msg.aws_policy_name
+ " " + msg.aws_cert_arn;
return msg;
-
[接続情報の登録] ノードの右側にある端子をクリックし、
[ポリシーをアタッチするための引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: ポリシーを証明書にアタッチ
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
AWS_ACCESS="$1"
AWS_REGION="$2"
ENDPOINT="$3"
POLICY_NAME="$4"
CERT_ARN="$5"
URI=/target-policies/${POLICY_NAME}
curl \
-H "Content-type: application/json" \
--cacert /cert/AmazonRootCA1.pem \
--user "${AWS_ACCESS}" \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
-d "{\"target\":\"${CERT_ARN}\"}" \
--request PUT -v \
"https://${ENDPOINT}${URI}"
-
[ポリシーをアタッチするための引数設定] ノードの右側にある端子をクリックし、
[ポリシーを証明書にアタッチ] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: 証明書をデバイスにアタッチ
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
AWS_ACCESS="$1"
AWS_REGION="$2"
ENDPOINT="$3"
POLICY_NAME="$4"
CERT_ARN="$5"
URI=/things/${AT_SERIAL_NUMBER}/principals
curl \
-H "x-amzn-principal:${CERT_ARN}" \
--cacert /root/AmazonRootCA1.pem \
--user "${AWS_ACCESS}" \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
--request PUT -v \
"https://${ENDPOINT}${URI}"
[ポリシーをアタッチするための引数設定] ノードの右側にある端子をクリックし、
[証明書をデバイスにアタッチ] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すとデバイスにポリシーがアタッチされます。
4.6.9. デバイスシャドウを取得するフローの作成デバイスが登録されている場合、デバイスシャドウが取得可能です。
対象とするデバイスは 「デバイスを登録するフローの作成」 で取得した thingName を使用します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[credentials] ノードをドラッグ、ドロップします。
[credentials] ノードのプロパティを編集します。[追加] ボタンを押して値を追加します。
private のステータスが [文字列] のままだと内容が表示されたままのため、確認後は [hidden] に変更するのを推奨します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.device_data_endpoint>> で取得したデバイスデータエンドポイント(例: aaaaaaaa.iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_device_endpoint
-
[inject] ノードの右側の端子をクリックし、[接続情報の登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ取得のための引数設定
コード:
msg.payload = msg.aws_device_endpoint;
return msg;
-
[接続情報の登録] ノードの右側の端子をクリックし、[デバイスシャドウ取得のための引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: 暗号化を使用したデバイスシャドウの取得
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
ENDPOINT="$1"
URI=/things/${AT_SERIAL_NUMBER}/shadow
curl --tlsv1.2 \
--cacert /cert/AmazonRootCA1.pem \
--key /cert/key.pem \
--cert /cert/device_cert.pem \
--request GET \
"https://${ENDPOINT}:8443${URI}"
-
[デバイスシャドウ更新のための引数設定] ノードの右側の端子をクリックし、
[暗号化を使用したデバイスシャドウの取得] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ内容の取得
コード:
var res = msg.payload.match(/\{.*\}/);
msg.payload = res[0];
return msg;
-
[暗号化を使用したデバイスシャドウの取得] ノードの右側の端子をクリックし、
[デバイスシャドウ内容の取得] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[デバイスシャドウ内容の取得] ノードの右側の端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと取得したデバイスシャドウの内容がデバッグメッセージに表示されます。
デバイスシャドウが作成されていない場合は "No shadow exists with name: 001234567890" のように表示されます。
4.6.10. デバイスシャドウを更新するフローの作成デバイスシャドウを更新します。
対象とするデバイスは 「デバイスを登録するフローの作成」 で取得した thingName を使用します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。
名前: デバイスシャドウ内容
msg.payload: { "state": {"desired": {"message": "success" }}}
-
[credentials] ノードをドラッグ、ドロップします。
[credentials] ノードのプロパティを編集します。[追加] ボタンを押して値を追加します。
private のステータスが [文字列] のままだと内容が表示されたままのため、確認後は [hidden] に変更するのを推奨します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.device_data_endpoint>> で取得したデバイスデータエンドポイント(例: aaaaaaaa.iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_device_endpoint
-
[inject] ノードの右側の端子をクリックし、[接続情報の登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ更新のための引数設定
コード:
msg.payload = "\'" + msg.payload + "\'"
+ " " + msg.aws_device_endpoint;
return msg;
-
[接続情報の登録] ノードの右側の端子をクリックし、[デバイスシャドウ取得のための引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: 暗号化を使用したデバイスシャドウの更新
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
MESSAGES="$1"
ENDPOINT="$2"
URI=/things/${AT_SERIAL_NUMBER}/shadow
curl --tlsv1.2 \
--cacert /cert/AmazonRootCA1.pem \
--key /cert/key.pem \
--cert /cert/device_cert.pem \
--request POST -v \
-d "${MESSAGES}" \
"https://${ENDPOINT}:8443${URI}"
-
[デバイスシャドウ更新のための引数設定] ノードの右側の端子をクリックし、
[暗号化を使用したデバイスシャドウの更新] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ内容の取得
コード:
var res = msg.payload.match(/\{.*\}/);
msg.payload = res[0];
return msg;
-
[暗号化を使用したデバイスシャドウの更新] ノードの右側の端子をクリックし、
[デバイスシャドウ内容の取得] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[デバイスシャドウ内容の取得] ノードの右側の端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと更新したデバイスシャドウの内容がデバッグメッセージに表示されます。
4.6.11. デバイスシャドウを削除するフローの作成デバイスシャドウを削除します。
対象とするデバイスは 「デバイスを登録するフローの作成」 で取得した thingName を使用します。 -
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[credentials] ノードをドラッグ、ドロップします。
[credentials] ノードのプロパティを編集します。[追加] ボタンを押して値を追加します。
private のステータスが [文字列] のままだと内容が表示されたままのため、確認後は [hidden] に変更するのを推奨します。
Name: 接続情報の登録
Values:
private: [hidden] <<sct.development.aws.device_data_endpoint>> で取得したデバイスデータエンドポイント(例: aaaaaaaa.iot.ap-northeast-1.amazonaws.com)
to: [msg.] aws_device_endpoint
-
[inject] ノードの右側の端子をクリックし、[接続情報の登録] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ削除のための引数設定
コード:
msg.payload = msg.aws_device_endpoint;
return msg;
-
[接続情報の登録] ノードの右側の端子をクリックし、[デバイスシャドウ削除のための引数設定] ノードの左側の端子を選択して放します。
-
[exec queue] ノードをドラッグ、ドロップします。
[exec queue] ノードのプロパティを編集します。
名前: 暗号化を使用したデバイスシャドウの削除
コマンド: bash $file
Queue: 1
Debug Mode: ✓
Append msg.payload: ✓
構文: Shell
内容:
ENDPOINT="$1"
URI=/things/${AT_SERIAL_NUMBER}/shadow
curl --tlsv1.2 \
--cacert /cert/AmazonRootCA1.pem \
--key /cert/key.pem \
--cert /cert/device_cert.pem \
--request POST -v \
-d "${MESSAGES}" \
"https://${ENDPOINT}:8443${URI}"
-
[デバイスシャドウ削除のための引数設定] ノードの右側の端子をクリックし、
[暗号化を使用したデバイスシャドウの削除] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
名前: デバイスシャドウ内容の取得
コード:
var res = msg.payload.match(/\{.*\}/);
msg.payload = res[0];
return msg;
-
[暗号化を使用したデバイスシャドウの更新] ノードの右側の端子をクリックし、
[デバイスシャドウ内容の取得] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[デバイスシャドウ内容の取得] ノードの右側の端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと削除したデバイスシャドウの内容がデバッグメッセージに表示されます。
デバイスシャドウがすでに削除されている場合は "No shadow exists with name: 001234567890" のように表示されます。
| |
| | | |
| |