本記事では、クラウド上の FIWARE 基盤に IoT デバイスから測定データを定期的に送信したり、FIWARE 基盤から IoT デバイスを制御したり、する方法を紹介します。
本記事を含め、次の複数の記事から構成されています。
- FIWARE Big Bang と M5Stack による FIWARE 対応 IoT システムの構築
- MQTT に対応した FIWARE 基盤の構築
- MQTT に対応した IoT デバイス (センサ) の作成とセンサ・データの送信
- MQTT に対応した IoT デバイス (アクチュエータ) の作成とデバイス制御
- MQTT の通信チャネルのセキュア化
FIWARE 基盤の構築
FIWARE Big Bang を使って、クラウドに Keyrock, Orion, IoT Agent for the Ultralight 2.0, Mosquitto, Node-RED が動作する FIWARE 基盤 (インスタンス) を構築します。
最初に、クラウド上の仮想マシンのパブリック IP アドレスを確認し、Keyrock, Orion, IoT Agent, Mosquitto, Node-RED のサブドメインを決めて、DNS に登録します。なお、本記事では、独自ドメインとして、big-bang.letsfiware.jp を使って、説明を進めます。ご自身の環境に合わせて、ドメインを置き換えてください。
keyrock.big-bang.letsfiware.jp
orion.big-bang.letsfiware.jp
iotagnet-ul.big-bang.lesfiware.jp
mosquitto.big-bang.letsifware.jp
node-red.big-bang.letsifware.jp
dig コマンド等で、DNS に登録したサブドメインの名前解決ができることを確認してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ dig orion.big-bang.letsfiware.jp ; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> orion.big-bang.letsfiware.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20699 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;orion.big-bang.letsfiware.jp. IN A ;; ANSWER SECTION: orion.big-bang.letsfiware.jp. 360 IN CNAME big-bang.letsfiware.jp. big-bang.letsfiware.jp. 347 IN A 192.168.1.1 ;; Query time: 4 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Sat Jan 14 00:00:00 UTC 2023 ;; MSG SIZE rcvd: 87 |
次に、FIWARE Big Bang のソースコードを取得します。
curl -SL https://letsfiware.jp/fi-bb | bash
config.h にサブドメイン名の設定を追加します。以下は設定例です。
# Set a sub-domain name of Keyrock
KEYROCK=keyrock
# Set a sub-domain name of Orion
ORION=orion
# Set a sub-domain name of IoT Agent for UltraLight 2.0
IOTAGENT_UL=iotagent-ul
# Set a sub-domain name of Mosquitto
MOSQUITTO=mosquitto
# Use MQTT (Port 1883). (true or false) Default: false
MQTT_1883=true
# Set a sub-domain name of Node-RED
NODE_RED=node-red
MQTT_1883 に true を設定してポート1883を有効にします。MQTT over TLS (ポート8883) は、デフォルトで有効です。
letsfiware.sh コマンドで環境構築を開始します。パラメータには、ドメイン名とパブリック IP アドレスを指定します。
./letsfiware.sh big-bang.letsfiware.jp 192.168.1.1
環境の確認
環境構築が完了したら、設定値を確認しておきます。
管理者ユーザ名とパスワード
以下のコマンドで、管理者ユーザ名とパスワードを確認します。
make admin
1 2 3 4 5 |
$ make admin ./config/script/admin.sh IDM: https://keyrock.big-bang.letsfiware.jp User: admin@big-bang.letsfiware.jp Password: aZ8vMzYqJlbJZBPL |
サブドメイン名
以下のコマンドで、サブドメイン名を確認します。
make subdomains
1 2 3 4 5 6 7 8 9 |
$ make subdomains ./config/script/subdomains.sh KEYROCK=keyrock.big-bang.letsfiware.jp ORION=orion.big-bang.letsfiware.jp WIRECLOUD=wirecloud.big-bang.letsfiware.jp NGSIPROXY=ngsiproxy.big-bang.letsfiware.jp NODE_RED=node-red.big-bang.letsfiware.jp IOTAGENT_UL=iotagent-ul.big-bang.letsfiware.jp MOSQUITTO=mosquitto.big-bang.letsfiware.jp |
MQTT 関連の設定値
以下のコマンドで、MQTT 関連の設定値を確認します。MQTT Broker に接続するためのユーザ名とパスワード等が分かります。
make mqtt
1 2 3 4 5 6 7 8 9 |
$ make mqtt ./config/script/mqtt.sh MOSQUITTO=mosquitto.big-bang.letsfiware.jp MQTT_USERNAME=fiware MQTT_PASSWORD=OHUvmoB7ai7e5QDq MQTT_1883=true MQTT_TLS=true MQTT_PORT=1883 MQTT_TLS_PORT=8883 |
Orion の設定値
以下のコマンドで、Orion の NGSI Go 関連の設定値を確認します。
ngsi broker get –host orion.big-bang.letsfiware.jp –clearText
1 2 3 4 5 6 7 |
$ ngsi broker get --host orion.big-bang.letsfiware.jp --clearText brokerHost https://orion.big-bang.letsfiware.jp ngsiType v2 IdmType tokenproxy IdmHost https://keyrock.big-bang.letsfiware.jp/token Username admin@big-bang.letsfiware.jp Password aZ8vMzYqJlbJZBPL |
IoT Agent の設定値
以下のコマンドで、IoT Agent の NGSI Go 関連の設定値を確認します。FIWARE Serviceが openiot、FIWARE ServicePathが / であることが分かります。
ngsi server get –host iotagent-ul.big-bang.letsfiware.jp –clearText
1 2 3 4 5 6 7 8 9 |
$ ngsi server get --host iotagent-ul.big-bang.letsfiware.jp --clearText serverType iota serverHost https://iotagent-ul.big-bang.letsfiware.jp FIWARE-Service openiot FIWARE-ServicePath / IdmType tokenproxy IdmHost https://keyrock.big-bang.letsfiware.jp/token Username admin@big-bang.letsfiware.jp Password aZ8vMzYqJlbJZBPL |
システムの健全性の確認
Orion の健全性の確認
Orion にアクセスしてバージョンを取得できることを確認します。
ngsi version –host orion.big-bang.letsfiware.jp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ ngsi version --host orion.big-bang.letsfiware.jp { "orion" : { "version" : "3.8.0", "uptime" : "0 d, 11 h, 9 m, 25 s", "git_hash" : "18d3634afeb366c62af90b9219c5ffac8e894cad", "compile_time" : "Thu Jan 12 12:06:24 UTC 2023", "compiled_by" : "root", "compiled_in" : "bb473a3d4230", "release_date" : "Thu Jan 12 12:06:24 UTC 2023", "machine" : "x86_64", "doc" : "https://fiware-orion.rtfd.io/en/3.8.0/", "libversions": { "boost": "1_74", "libcurl": "libcurl/7.74.0 OpenSSL/1.1.1n zlib/1.2.12 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3", "libmosquitto": "2.0.15", "libmicrohttpd": "0.9.73", "openssl": "1.1", "rapidjson": "1.1.0", "mongoc": "1.23.1", "bson": "1.23.1" } } } |
IoT Agent の健全性の確認
IoT Agent にアクセスしてバージョンを取得できることを確認します。
ngsi version –host iotagent-ul.big-bang.letsfiware.jp
1 2 |
$ ngsi version --host iotagent-ul.big-bang.letsfiware.jp {"libVersion":"2.24.0","port":"4041","baseRoot":"/","version":"1.24.0"} |
システムの健全性が確認できれば、構築は終了です。
次のステップ
次のステップでは、センサを持つ IoT デバイス を作成して、MQTT を使って、クラウドの FIWARE 基盤に測定データを送信します。