はじめに
やりたいこと
- ラズパイにあるローカルのNode-REDとbluemixにあるクラウドのNode-REDを連携させたい
- コールバックのドメインが必要な場合や、外出先から入りたい場合があり、ローカルだけに片寄ができないんです。。。
Node-REDのまとめ記事
動作環境
- ローカル
- RaspberryPi : 3
- raspbian : 9.8
- Node-RED: v19.4
- サーバ
- Node-RED : v20.5
本編
プロトコル
今の所どんなプロトコルでもよいのですが、3種類を検証しました。
- http(get)
- http(post)
- websocket
基本的に、Node-REDはWebサーバの機能を持つので、サーバ側にクライアント側が接続しにいくイメージです。
http(get)
- サーバのフロー
- クライアントのフロー
補足
- サーバ側はURLを設定し、クライアントに返すデータをfunctionノードでmsg.payloadに詰めます
- クライアント側は、単純にGETでURLを叩きます
http(post)
- サーバのフロー
- クライアントのフロー
補足
- サーバはgetと同じく、URLを設定し、クライアントに返すデータをfunctionノードでmsg.payloadに詰めます
- クライアント側はサーバに送りたいデータをmsg.payloadに詰めてからPOSTで呼び出します
websocket
- サーバのフロー
- クライアントのフロー
補足
- サーバはURLを設定し、種類=待ち受けでWSの設定を行います。
- クライアントは、種類=接続でwsの設定をします
- 図の構成にすると、クライアント側のデータが一周回ってクライアントに帰ってきてデバッグノードから出力されました。
- サーバ側は一周回りませんでした。
結論
- どれを使っても非常に簡単でした!!
- bluemixはsecure通信ですが、特に何もしなくても(プロトコルとしてhttpsやwssにするだけで)動作しました