クラウド(GCP)との接続

preMSMに搭載されたセンサのデータをGateway経由でクラウドに上げて、いつでもどこでもセンサデータを確認できる。そして、必要であれば、preMSMのIOポートを介して接続された機器のON/OFFをクラウド経由で制御するというシステムの構築をGCP(Google Cloud Platform)を使って行います。

1. GCP上にNode-REDの立上げ

1-1. Google Cloud Platformへ接続

gmailのアカウントを持っていれば、簡単にGCPに繋がります。

Google Cloud Platformのページにアクセスします。Googleのアカウントを聞いてくるので入力して入ってください。

図1-1. Google Cloud Platformの導入画面

設定に関しては、画面等の情報が古いですが、「これから始めるGCP(GCE) 安全に無料枠を使い倒せ」を参考にしてください。

2022年2月10日の時点で、新規利用者には$300のクレジットがもらえるので、$300までは、費用が掛からずにいろいろ試せます。

また、Google Cloud Platformには、無料枠があります。その範囲内であれば、上記のクレジットが無くなっても、費用が掛かることなく利用できます。

図1-2. Google Cloud Platformのホーム画面(コンソール画面)

図1-2のようなGoogle Cloud Platformのホームページ(コンソール画面)に入れたら、次にプロジェクトの設定を行います。

1-2. プロジェクトの設定

まず、プロジェクトを作成する必要があります。GCP上ではプロジェクトごとに管理されます。

Google Cloud Platformのページの上にあるプロジェクトのボタンをクリックして、プロジェクト選択画面を表示します。

図1-3. プロジェクトのボタンをクリック

表示されたプロジェクト選択画面に、プロジェクト名を入力して、作成ボタンを押して、プロジェクトを作成します。コンソール画面に、プロジェクト情報が表示されます。

図1-4.新しいプロジェクトの作成

1-3. GCP上でNode-REDを実行

上記で作ったプロジェクト内でNode-REDを実行します。Node-REDの実行に関しては、「GCP で Node-RED によるローコード プログラミングが可能に」の「Node-REDのインストール」の項目を参考にします。

1-3-1. VMの作成

上記のHPに従って、Compute EngineにVMインスタンスを設定します。画面左側のメニューから[Compute Engine]を選んで、出てくるメニューから[VMインスタンス]を選びます。

図1-5. VMインスタンスを選択

VMインスタンスの設定画面が出てきますので、上のメニューから[インスタンスの作成]を選んでクリックします。

図1-6.新しいVMインスタンスの作成

新規に作成するインスタンスに関する情報の設定が面が出てきます。① 名称の記載、② マシンタイプの選択を行います。マシンタイプの選択を変えると、右上に出てくる③費用の見積金額が変わります。2022年2月時点で、e2-micro(1個のvCPUコア, 1GBメモリ)が無償範囲のVMインスタンスです。さらに設定項目がありますので、④下にスクロールします。

 

図1-7.VMインスタンスの設定(1)

下にスクロールすると「コンテナ」という項目が出てきます。①[DEPLOY CONTAINER]のボタンをクリックしてください。すると、右側から設定が面が現れます。一番上の②「コンテナイメージ」に[nodered/node-red]と入力して、③ 選択ボタンを押して閉じます。④下にスクロールして「作成」ボタンをクリックして完了です。

図1-8.VMインスタンスの設定(2)

以上で、VM上で、Node-REDが実行されました。次に、GoogleのHPの記述に従って、ファイアウォールの設定を行います。

1-3-2. ファイアウォールの設定

GoogleのHPの「Node-REDの実行」の項目の最後に、以下の記述があります。

「VM が開始されると Node-RED が実行されます。Node-RED を使用するには、ブラウザから Node-RED に接続する必要があります。Node-RED は、ポート 1880 でリッスンします。デフォルトの VPC ネットワーク ファイアウォールは、意図的に受信リクエストを制限します。つまり、ポート 1880 へのリクエストは拒否されることになります。次のステップでは、Node-RED ポートでネットワークへの接続を許可します。なお、開発用に無制限にアクセスできるように Node-RED を公開しないでください。代わりに、ブラウザが提示する IP アドレスからの上り(内向き)のみを許可するようにファイアウォール ルールを定義します。Google で「my ip address」を検索すると、ブラウザで使用している IP アドレスを見つけることができます。」

これに従って、ファイアウォールの設定を行い、ローカルマシンから、GCP上のNode-REDのエディタ画面が開けるように設定します。ファイアウォールの設定をしないと、GCP上のNode-REDのエディタ画面は開けません。

逆に、ファイアウォールの設定を満たせば、複数の機器からアクセスが可能になります。

例えば、ファイアウォールのIPアドレスととして、WiFiルータのアドレスを設定した場合、このルータにぶら下がっている機器からはアクセスが可能になります。

例えば、同じWiFiルータの下にいるGatewayとPCとiPhoneがあった場合。

  1. GatewayからHTTPで1880ポートを使って、preMSMのデータをGCPのNode-REDに送る。
  2. PCで、GCPのNode-REDのエディタを起動し、フローを修正する。
  3. iPhoneでダッシュボードで送られたデータを確認する

ということが可能になります。このIPアドレスを増やせば、公衆回線からiPhoneでダッシュボード画面の確認も可能です。

クラウドを使うことで、「いつでも、どこでものIoT」の本領が発揮できると期待できます。

1-3-2-1. IP Addressの取得

GoogleのHPに書かれているように、あるIPアドレスからのアクセスのみ許可するようにファイアウォールを設定します。そのために、IPアドレスを調べる必要があります。ここでいうIPアドレスは、WiFiで使用している192.168.xxx.yyyではなくて、プロバイダ経由でインターネットに出ているアドレスになります。調べる方法として2つ紹介します。

    1. GoogleのHPに書かれているように、[my ip address]で検索すると、いくつかページが見つかります。

               図1-9.IPアドレスの確認(1)
  1. WiFiルータのメンテナンスページで確認する。

               図1-10.IPアドレスの確認(2)
1-3-2-2. ファイアウォールの設定

GCPのコンソール画面の左のメニューを下に下がり、[VPCネットワーク]を見つけます。その[VPCネットワーク]を選び、出てきたメニューの中から、[ファイアウォール]を選択します。

図1-11 ファイアウォール設定画面の表示

ファイルウォールの設定画面が表示されますので、画面上のメニューの中から[ファイアウォールルール]を選択します。

図1-12 ファイアウォール設定画面

「ファイアウォール ルールの作成」が表示されます。 このページでいくつかファイアウォールに関して設定を行います。

まず、このルールに名前を付けます。名前の欄に、①名前を入力します。そのあと、②下にスクロールします。

図1-13 ファイアウォール ルール作成画面(1)

「ソースフィルタ」の項目に、「1-3-2-1. IP Addressの取得」で調べたIPアドレスを入力します。このIPアドレスからのアクセスのみを受け付けます。

つぎに、「プロトコルとポート」の項目の設定を行います。TCPにチェックを入れ、ポート番号を1880に設定します。

最後に、「作成」ボタンを押して完了です。

図1-14 ファイアウォール ルール作成画面(2)

1-3-3. GCP上のNode-REDエディタの設定

以上で、GCP上にNode-REDが実行され、ローカルからアクセスが可能になりました。

1-3-3-1. GCP側のNode-RED IPアドレス

GCP上のNode-REDのエディタにアクセスしてみます。ファイアウォールで設定したIPアドレスの範囲にあるGatewayやPCからエディタにアクセスします。その際の、GCP側のIPアドレスは、「VM の外部パブリック IP アドレス」です。その値は、以下のように調べます。

  1. コンソールの[Compute Engine]の欄にある[Compute Engineに移動]をクリック:図1-15
  2. VMインスタンスの情報画面が表示されます。Node-REDを実行したVMインスタンスの外部IPアドレスの部分に、外部IPアドレスが記載されています。このアドレスにアクセスします。

例えば、Google のHPの例では、http://35.192.185.114:1880

図1-15 GCPのコンソール画面

図1-16 VMインスタンス情報画面

1-3-3-2. GCP ノードのセットアップ

上で調べたIP アドレスにアクセスすることで、Node-REDのエディタ画面が表示されます。通常のNode-REDのエディタとして使用できます。

図1-17 Node-REDのエディタ画面

GCPの良いところは、GCPの機能を使用するためのノードがいくつか用意されていることです。代表的なノードをパレット管理で読み込んでおきます。

エディタ画面の右上のデプロイボタンの横にある三本線をクリックします。するとメニューが表示されます。その中から、「パレットの管理」をクリックします。

すると、パレットのユーザー設定画面が出てきますので、①「ノードを追加」のタブを選択します。次に虫眼鏡が書かれている②検索窓に「node-red-contrib-google-cloud」と入力します。入力したノードが出てきたら、③ノードを追加ボタンを押して、ノードをインストールします。ノードの詳細は、node-red-contrib-google-cloudのGitHubページを確認ください。

図1-18 GCPノードのインストール

図1-19 インストールされたGCP用ノード(node-red-contrib-google-cloud)のノード群

2. GCP Node-REDの活用例

GCP上のNode-REDとローカルのGatewayやPC、スマホとの連携例を示します。

2-1. preMSMデータのGCP上でのダッシュボード表示

preMSMに搭載した環境センサや照度センサなどの情報をGateway上のNode-REDを経由してGCP上のNode-REDに送信します。そして、GCP上のNode-RED上でダッシュボード表示します。

ローカルからGCP側への送信は非常に簡単です。クラウドを意識することなく、http requestとhttp inノードで送信と受信ができます。

2-1-1. preMSMデータのGCPへの送信

GatewayからGCPへは、HTTPを使って送信しています。ファイアウォールで、「ソースIPアドレス」と「プロトコルとポート」を設定しました。プロトコル:TCP、ポート:1880としたので、HTTPノードに先のIPアドレスにポート番号1880で送信します。具体的なノードは、http request ノードを使用しています。図2-1、図2-2にGateway側のNode-RED画面とhttp requestの設定画面を示します。

図2-1. ローカルGateway側Node-REDフロー

図2-2. http requestノードの編集画面

2-1-2. preMSMデータのGCPでの受信

ローカルのGatewayから送られてきたデータですが、GCP側では、http inで受けています。そして、ダッシュボードへデータを送るとともに、http outで返事を返しています。

図2-3と図2-4に、GCP側のNode-REDのフローとhttp inの設定画面を示します。

図2-3 GCP側のNode-RED フロー

図2-4 http inノードの編集画面

2-1-3. GCP上のダッシュボードのPC上での表示

GCP上のダッシュボード画面をローカルPC上で表示させた結果を図2-5に示します。

図2-5 GCP上のダッシュボードをPC上に表示

■ ダッシュボードの表示のさせ方

ダッシュボードの表示のさせ方は、2通りある。これらは、GCPでも同じです。

1) http://(VMの外部IP):1880/でエディタ画面を開いておいてから、以下のように画面上でダッシュボードを表示する方法

a. エディタ画面の右上の▼をクリックするとメニューが現れる

図2-6 ダッシュボードの表示のさせ方(1)

b. 現れたメニューから、Dashboardを選ぶ

 

図2-7 ダッシュボードの表示のさせ方(2)

c. 最後に右上の□をクリックする

図2-8 ダッシュボードの表示のさせ方(3)

2) http://(VMのがい部IP):1880/ui/でダイレクトに開く方法

ブラウザのIP入力窓で、http://(VMのがい部IP):1880/ui/と入力する。

例) http://35.192.185.114:1880/ui/

2-1-4. GCP上のダッシュボードのスマホでの表示

「1-3-2. ファイアウォールの設定」で説明したように、スマホでも、WiFi接続で、ダッシュボードを見に行けば(http://(VMのがい部IP):1880/ui/と入力すれば)、ダッシュボードは表示されます(図2-9の左側)。公衆回線である4Gでつなごうとすると、このままではつながりません。ファイアウォールのソースIPに、スマホのIPを追加する必要があります。

  • スマホでmy ip address を調べて、そのアドレスをファイアウォールに設定する。

これを行えば、スマホからダッシュボードは見ることができるようになります(図2-9の右側)。

 

図2-9 スマホ(iphone)でのGCP上のダッシュボードの表示

2-2. GCP上のダッシュボードからGatewayへの制御指示送信

遠方に出かけているときに、ダッシュボードでpreMSMのセンサー情報を見ていて、急遽、機器の設定をON/OFFさせたり、変更させたりしたくなる場合があります。そのような場合に、ダッシュボードの画面に設定されたボタンや数値入力窓から支持をだせると便利です。

ダッシュボードのボタンを押すと、Gatewayに対して、ONしなさい、OFFしなさいという信号を送信する実験を行いました。GCPノードのPubsubノードを使用します。

2-2-1. GCP側のNode-REDフロー

GCP側のNode-REDフローを、図2-10に示します。青枠が窓の開閉ボタンです。ダッシュボード上でボタンとして表示されます。赤枠が、ボタンが押されたときに出力されるコマンドをPublishするPubsub out ノードです。

図2-10 GCP側のコマンド送信フロー

ダッシュボード上のボタンを押したときにPublishされるコマンドを表示した図を、図2-11に示します。ONとOFFを繰返して押した結果、ONとOFFが繰り返されてPublishされています。

図2-11 Publishされたコマンド

2-2-2. Gateway側のNode-REDフロー

Gateway側のNode-REDフローを図2-12に示す。

図2-12 Gateway側のNode-REDフロー

2-2-3. コマンドの送受信実験結果

コマンドの送受信実験の結果を図2-13に示す。