You dont have javascript enabled! Please enable it!
FIWARE

FIWARE と Node-RED で作るバスロケ・システム (クラウド編)

この記事では、FIWARE と Node-RED を使って、クラウド上にバスロケ・システムを作成する方法を紹介します。ローカル・マシンに作成したい場合は、こちらを参照ください。

node-red-contrib-letsfiware-NGSI とは

node-red-contrib-letsfiware-NGSI は、Node-RED から FIWARE へのアクセスを可能にするカスタム・ノードです。MIT License のオープンソースとして、以下の URLで公開しています。

次のカスタム・ノードで構成されています。

このカスタームノードのいくつかを使用して、バスロケ・システムを作成します。

完成イメージ

Web ブラウザからバス等の車両の位置を確認することができます。

FIWARE 基盤の構築

FIWARE Big Bang を使って、クラウドに Keyrock, Orion, Node-RED が動作する FIWARE 基盤 (インスタンス) を構築します。

最初に、FIWARE Big Bang のソースコードを取得します。

curl -sL https://letsfiware.jp/fi-bb | bash

Keyrock, Orion, Node-RED のサブドメインを決めて、それらを DNS に登録します。次に、config.sh にサブドメイン名の設定を追加します。以下は設定例です。

letsfiware.sh コマンドで環境構築を開始します。パラメータには、ドメイン名と IP アドレスを指定します。以下は、ドメイン名が big-bang.letsfiware.jp の場合です。環境に合わせて、置き換えてください。

./letsfiware.sh big-bang.letsfiware.jp 192.168.1.1

Node-RED でフローを作成

環境構築が完了したら、Node-RED にログインして、フローを作成します。

GTFS Realtime 情報を取得するフロー

GTFS Realtime 車両位置 (VehiclePosition) の情報を取得して、Orion Context Broker にエンティティを作成・更新するフローを作成します。inject, NGSI GTFS Realtime, NGSI Batch update の3種類のノードを接続した、次のフローです。

inject ノードの設定

inject ノードに、GTFS Realtime 車両位置情報が取得できる、適切な URL を設定します。URL は、msg.palyload に String 型として設定します。また、適切な間隔で車両位置情報を取得できるよう、interval を設定します。

Open APIs node の設定

次に、NGSI Bach update node から Open APIs node の設定を行います。NGSI Bach update node の設定を開き、Context Broker の右側の鉛筆アイコンをクリックすると、Open APIs node の設定が開きます。

次の例は、ドメインが big-bang.letsfiware.jp の場合の設定例です。

Broker Endpoint には、Orion Context Broker のサブドメインを設定します。IdM Type は、Tokenproxy を選択します。IdM Endpoint には、Orion Context Broker のサブドメインを、Username, Password には適切な値を設定します。

車両を表示するフロー

Orion Context Broker からサブスクリプションのノーティフィケーションを受信して、worldmap ノードに車両を表示するフローを作成します。http in, http response, NGSI to worldmap, worldmap の4種類のノードを接続した、次のフローです。

worldmap ノードのインストール

worldmap ノードがインストールされていない場合、Node-RED の画面右上のハンバーガーメニューから「パレットの設定 (Manage palette)」を選択し、さらに「インストール (install)」タブを選択します。ノード検索に「node-red-contrib-web-worldmap」を入力して、ノードをインストールします。

http in ノードの設定

http in ノードの設定を開き、Method を 「POST」に、URL を「/notify」に設定します。この設定で、https://node-red.big-bang.letsfiware.jp/notify が、サブスクリプションのノーティフィケーションを受信するエンドポイントになります。

http response ノードの設定

http in ノードの設定を開き、Status code に 204 を設定します。

フローのデプロイ

作成した2つのフローをデプロイします。

デプロイは、Node-RED の画面の右上にある「Deploy」ボタンを押下します。

サブスクリプションの作成

最後の、Orion Context Broker にサブスクリプションを作成します。サブスクリプションは、車両の位置が変化したときに、Node-RED の http in ノードにノーティフィケーションを送信するものです。サブスクリプションは NGSI Go で簡単に作成できます。コマンドラインから次のパラメータを持つコマンドを実行します。––host パラメータは、環境に合わせて、適切な値に変更してください。

ngsi create subscription ––idPattern “.*” ––url https://node-red.big-bang.letsfiware.jp/notify ––host orion.big-bang.letsfiware.jp

作成したサブスクリプションは、次のコマンドで確認できます。

ngsi list subscriptions ––host orion.big-bang.letsfiware.jp ––pretty

コマンドを実行すると、次のような結果 (例) が表示されます。

バスロケ・ダッシュボードの表示

worldmap ノードのエンドポイント (/worldmap) の https://node-red.big-bang.letsfiware.jp/worldmap/ を開くと、地図が表示されます。車両が運行されている地域に移動すると、次のような画面が表示されます。また、車両の位置が定期的に更新されていることを確認できるはずです。

FIWARE と Node-RED で作るバスロケ・システム (ローカル・マシン編)この記事では、FIWARE と Node-RED を使って、バスロケ・システムをローカル・マシンに作成する方法を紹介します。クラウド上に...
WebARENA Indigo に FIWARE インスタンスを作成 (Ubuntu 20.04)AWS, Auzre 等のクラウドサービスの VM にコマンド一発で、FIWARE 環境を作成します。...