ステップ
1: IoT Connect Gateway を設定する
ここでは、パソコンのブラウザ上で「Swagger」を利用して API コマンドを利用する場合
を例としてご説明します。Arcstar Universal One モバイル SIM を利用しての通信となりま
す。
1. 証明書ファイルの用意
○ AWS IoT Core のモノの設定の際に得られた以下の証明書ファイルを準備 ■ プライベートキー:(ランダム文字列)-private.pem.key
■ このモノの証明書:(ランダム文字列)-certificate.pem.crt ■ AWS IoT のルート CA:Amazon ルート CA1 など
2. Swagger にアクセスする
○ Swagger URL: https://api.icgw.ntt.com/api/index.html
3. 認証 Token を作成する
○ [POST] /api/v1/users/credentials を開く
○ Request body 欄に以下を追加 { "userName": "お客様のユーザ名", "password": "お客様のパスワード" } ○ [Execute] を押すと token が作成される
※curl で送信したいユーザは、 [Execute] 押下後 curl 欄に表示されるコマン
4. 作成した Token を使用し、Authorize を実施する
○ [Authorize] を押す
○ Value 欄に「Bearer(半角スペース)」を入力して 2 で作成した token を貼 り付け、 [Authorize] を押す
プロトコル変換設定(
MQTT/AWS IoT の場合)
上記のAuthorize を実施したあと、下記手順を Swagger 上で実施して設定を行います。
(設定を実施する際にはToken 情報が付加されている必要があります。)
1. 新規グループを作成し、SIM をグループへ追加する
○ [POST] /api/v1/groups を開き、 [Try it out] を押す
○ Request body 欄に以下を追加し、 [Execute] を押す
*は必須項目
項目 説明
name * 任意のグループ名
sims * 本グループに追加するSIM の IMSI 番号
Request 例: { "name": "グループ1", "sims": [ "44010123456789"] } Response 例: { "id": "5fd19167c653f932439cc9ca", "name": "グループ1",
"userId": "5fd19166c653f932439cc9c9", "sims": ["44010123456789"], "protocolConversion": [] } → 作成したグループの ”id” を取得
2. AWS IoT の認証情報を作成する
○ [POST] /api/v1/authentications/{type} を開き、 [Try it out] を押す
項目 説明
type x.509-credentials
○ Request body 欄に以下を追加し、[Execute]を押す
*は必須項目 項目 説明 name 任意の認証情報名 description 任意の設定概要 privateKey * (ランダム文字列)-private.pem.key ※下記参照 rootCaCertificate * AmazonRootCA1.pem など ※下記参照 tlsCertificate * (ランダム文字列)-certificate.pem.crt ※下記参照
---BEGIN PRIVATE
KEY---\nxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxx xxxxxxxxxxxxxxxxxxxxxxxx\n---END PRIVATE KEY---
Request 例:
{
"name": "AWS certificate", "description": "testing",
KEY---\nMIIEo(省略)---END RSA PRIVATE KEY---",
"rootCaCertificate": "---BEGIN CERTIFICATE---\nMIIDW(省 略)---END CERTIFICATE---",
"tlsCertificate": "---BEGIN CERTIFICATE---\nMIIDQ(省略)---END CERTIFICATE---"
}
Response 例:
{
"description": "testing",
"privateKey": "---BEGIN RSA PRIVATE KEY---\nMIIEo(省略)---END RSA PRIVATE KEY---",
"rootCaCertificate": "---BEGIN CERTIFICATE---\nMIIDW(省 略)---END CERTIFICATE---",
"tlsCertificate": "---BEGIN CERTIFICATE---\nMIIDQ(省略)---END CERTIFICATE---",
"id": "7a1dc7ad-f395-498a-9d84-a3916449d4a9", "name": "AWS certificate",
"type": "x.509-credentials" }
→ 作成した認証情報の “id” を取得
3. グループに対してプロトコル変換設定を追加する
○ [POST] /api/v1/groups/{groupId}/pconv/{pconvType}/{serviceType} を開き、 [Try it out] を押す
○ groupId、pconvType、serviceType に以下を入力 項目 説明 groupId 「1. 新規グループを作成し、SIM をグループへ追加す る」で取得したGroup ID pconvType mqtt serviceType standard-mqtt ○ Examples プルダウンで「Standard MQTT」を選択し、 Request body 欄に以下を追加し [Execute] を押す
*は必須項目
項目 説明
name * 任意のプロトコル変換設定名
プロトコル変換設定を有効化する場合はtrue を設定する serviceType * standard-mqtt
protocol * 'mqtts'
host * AWS IoT Core の [設定] >デバイスデータエンドポイント
に記載されているエンドポイント
(ランダム文字列)-xxxxxxxxxxxxx.amazonaws.com
port * 8883
authenticationId 「2. AWS IoT の認証情報を作成する」で取得した Authentication ID
customSubfolder 任意の文字列 ※下記参照
topicImsi true または false(デフォルト:true)
トピックにIMSI を追加する場合は true を設定する
※下記参照
topicImei true または false(デフォルト:false)
トピックにIMEI を追加する場合は true を設定する
※下記参照
topicMsisdn true または false(デフォルト:false)
トピックにMSISDN を追加する場合は true を設定する
※下記参照
topicDeviceName true または false(デフォルト:false)
トピックにDeviceName を追加する場合は true を設定す る ※下記参照 デバイスから送信するトピックはユーザがcustomSubfolder に入力した任意 の文字列に、true に設定したヘッダが追加され、以下の形で送信される。そ の際、 {} 内は実際の SIM 情報に置き換えられる。 ユーザが送信するトピック: /device/test/
IoT Connect Gateway から送信するトピック:
/device/test/{custom
subfolder}/{IMSI}/{IMEI}/{MSISDN}/{DeviceName}
■ データ間は ”/” でつなげる(最大 7 階層) ■ ヘッダの設定が無効化されている場合、パラメータ自体がなくなる /device/test/{custom subfolder}/{IMSI}/{MSISDN}/{DeviceName} ■ ヘッダの設定が有効化されているが、データが存在しない場合、デー タの値をNA とする /device/test/{custom subfolder}/{IMSI}/NA/{MSISDN}/{DeviceName} Request 例: { "name": "AWS HTTP", "entrypoint": { "path": "/aws-test/publish" }, "destination": { "host": "(ランダム文字列)-ats.iot.ap-northeast-1.amazonaws.com", "path": "/topics/test-topic", "authenticationId": "{awsIotAuthenticationId}", "serviceType": "aws-iot" } } Request 例: { "enabled": true, "name": "AWS MQTT", "destination": { "serviceType": "standard-mqtt", "protocol": "mqtts", "host": "(ランダム文字列)-ats.iot.ap-northeast-1.amazonaws.com", "port": 8883, "authenticationId": "7601e778-912a-44a0-9b4c-2bbbb1758080" } } Response 例: { "destination": { "serviceType": "standard-mqtt", "protocol": "mqtts", "host": "(ランダム文字列)-ats.iot.ap-northeast-1.amazonaws.com",
"port": 8883, "username": null, "password": null, "passthrough": false, "authenticationId": "50de82c6-6977-442f-b991-b2849127f93a" }, "options": { "topicImsi": true, "topicImei": false, "topicMsisdn": true, "topicDeviceName": false }, "id": "8a4790d4-1e60-4a73-81c9-9213b2c9e89f", "type": "mqtt", "name": "AWS MQTT", "enabled": true }
ステップ
2: IoT Connect Gateway を使用して
AWS IoT にデータを送信する
1. サブスクライブ
送信したデータを確認するために、使用するトピックをAWS IoT コンソールの [テ スト] よりサブスクライブしておきます。 ○ ここでは例として”iot/topic/#”というトピックを使用 ※この画面は後ほどデータの確認に使用するので、そのまま開いておく2. デバイスの準備
当ガイドでは、Mosquitto のクライアントを利用します。Raspbian であれば、下記
コマンドでインストール可能です。 ※当ガイドでは、Mosquitto v1 を使用
sudo apt-get install mosquitto-clients
3. デバイスからデータを送信する
○ デバイスからクラウドへデータを送信 ○ 送信先:an1.icgw.ntt.com
送信例:
pi@raspberrypi: ~ $ mosquitto_pub -d -h an1.icgw.ntt.com -t "iot/topic" -m "Hello world" -i "myDevice"
Received CONNACK
Sending PUBLISH (d0, q0, r0, m1, 'iot/topic', ... (12 bytes))
上記のコマンドの通り、IoT Connect Gateway の設定を行ったグループに属
するIoT SIM で接続されているデバイスからは、証明書を指定することなく
AWS IoT へデータ送信を行うことができる。
※IoT Connect Gateway を使用しない場合は、以下のように証明書ファイル
$ mosquitto_pub --cafile rootCA.pem \ --cert cert.pem \
--key thing-private-key.pem \
-h (ランダムな値)--ats.iot.ap-northeast-1.amazonaws.com -p 8883 \
-q 1 -d -t iot/topic -i "myDevice" -m "Hello world"
4. データを確認する
○ 先ほどサブスクライブ設定した画面に戻ると、送信したデータが確認できるステップ
3: AWS IoT からのデータを受信する
次に、クラウドからデバイスへデータを送信します。1. デバイスからサブスクライブ
○ 使用するデバイスからトピックをサブスクライブしておく。ここでは例とし て ”iot/topic” というトピックを使用 ○ 接続先:an1.icgw.ntt.compi@raspberrypi: ~$ mosquitto_sub -d -h an1.icgw.ntt.com -i "myDevice" -t "iot/topic"
Client myDevice sending CONNECT Client myDevice received CONNACK
Client myDevice sending SUBSCRIBE (Mid: 1, Topic: iot/topic, QoS: 0)
Client myDevice received SUBACK Subscribed (mid: 1): 0
2. データ送信
○ AWS IoT コンソールの [テスト] > [トピックに公開する] よりメッセージを送
{
"message": "Hello from AWS IoT" }
デバイスの方にメッセージが届き、下記のように表示される
Client myDevice received PUBLISH (d0, q0, r0, m0, 'iot/topic', ... (37 bytes))
{
"message": "Hello from AWS IoT" }