LoginSignup
0
0

obniz x Node-REDで停止処理

Last updated at Posted at 2024-05-10

obnizをNode.jsでコードを書いて使う時は、基本的に毎回プログラムを起動してシャットダウンしてが行われますが、Node-REDの場合Node.jsのプロセスは起動し続ける仕様なため、プログラムの起動ではなく接続の解除を行って停止を行うという仕様になっています。

obnizノードを使ってプログラムの接続解除に使えるフローを置いておきます。

コピペ参照用

[{"id":"cb1d6d3a.017e1","type":"debug","z":"b3ffc87e7885414e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":320,"wires":[]},{"id":"11a346f0.5a4c19","type":"obniz-function","z":"b3ffc87e7885414e","obniz":"","name":"obnizの処理を停止","code":"msg.payload = \"close\";\nawait obniz.wait(1000); \nobniz.close();\n\nreturn msg;","x":310,"y":280,"wires":[["cb1d6d3a.017e1"]]},{"id":"76e43759.3dff68","type":"inject","z":"b3ffc87e7885414e","name":"停止処理フロー","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":240,"wires":[["11a346f0.5a4c19"]]}]

使い方が分かる人は↑をコピーして使いましょう。

スクリーンショット 2024-05-14 13.09.21.png

使い方

最初は以下の手順で処理の停止をしてみると良いと思います。

1. JSONの読み込み

まずはこちらのJSON形式の文字列を読み込みます。

[{"id":"cb1d6d3a.017e1","type":"debug","z":"b3ffc87e7885414e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":320,"wires":[]},{"id":"11a346f0.5a4c19","type":"obniz-function","z":"b3ffc87e7885414e","obniz":"","name":"obnizの処理を停止","code":"msg.payload = \"close\";\nawait obniz.wait(1000); \nobniz.close();\n\nreturn msg;","x":310,"y":280,"wires":[["cb1d6d3a.017e1"]]},{"id":"76e43759.3dff68","type":"inject","z":"b3ffc87e7885414e","name":"停止処理フロー","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":240,"wires":[["11a346f0.5a4c19"]]}]

右上のメニューから読み込み > JSON貼り付け

グレー、水色、緑のノードが連なっているもの(フロー)が読み込まれました。

2. "obnizの処理を停止"ノードにIDを設定

obnizの処理を停止と書いているノードをダブルクリックして設定を開き、自身が使っている停止させたいobnizのobniz IDを選択します。

読み込んで保存(デプロイ)を押して保存します。

うまくいくとobnizの処理を停止のノードがconnected状態になります。

スクリーンショット 2024-05-11 2.23.51.png

3. "停止処理フロー"のボタンを押して停止

グレーの"停止処理フロー"の左側のボタンを押すと接続が解除されて赤色のdisconnectedの表示になります。

obniz Board側はQRコードとobniz IDが表示されていれば成功です。

スクリーンショット 2024-05-11 1.37.43.png

中身を少し解説

"obnizの処理を停止"のノードをダブルクリックで開くと中身を見ることができます。

公式ドキュメントにあるclose関数というものを実行しています。

https://docs.obniz.com/ja/reference/common/connection/reset

msg.payload = "close";
await obniz.wait(1000); 
obniz.close();

return msg;

これでobnizの接続を解除してNode-REDからのプログラムを停止してくれます。

ちなみにmsg.payloadに"close"という文字を入れているので、デバッグコンソールにも"close"という文字が表示されます。

(closeのイベントを待って正確に渡したい気持ちもしますね、現状だとcloseがうまくできなくてもデバッグコンソールにはcloseと表示されると思います)

0
0
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
0
0