第3章 AMQ Online のモノのインターネット (IoT)


重要

AMQ Online のモノのインターネット (IoT) 機能は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされません。また、機能的に完全ではない可能性があるため、Red Hat はテクノロジープレビュー機能を実稼働環境に実装することは推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

3.1. IoT の使用開始

次の情報では、AMQ Online IoT 機能を設定および管理する方法について説明します。

3.1.1. IoT 接続の概念

モノのインターネット (IoT) 接続機能により、AMQ Online を使用してデバイスを管理し、バックエンドアプリケーションと接続できます。一般的な IoT アプリケーションでは、デバイスには通常のメッセージングアプリケーションとは異なる要件があります。開発者は、通常利用可能な任意のアドレスとセキュリティー設定を使用する代わりに、IoT サービスを使用して、デバイスの ID とセキュリティー設定を明示的に処理し、IoT 空間でよく使用される複数のプロトコルをサポートして、一貫性を持ったサポートを提供して、必要なデバイス通信パターンをサポートします。

重要な概念の 1 つは デバイスレジストリー です。これは、開発者がデバイスを登録して認証情報を提供するために使用します。これらの認証情報を使用すると、デバイスは、サポートされているプロトコルの 1 つ (HTTP、MQTT、LoRaWAN、および SigFox) を使用して プロトコルアダプター に接続できます。接続すると、デバイスは、次のメッセージングセマンティクスのいずれかを使用して、バックエンドアプリケーションからメッセージを送受信できます。

  • Telemetry: デバイスが非永続データをバックエンドアプリケーションに送信できるようにするため、メッセージは multicast アドレスタイプを使用して送信されます。このオプションは、重要でないセンサーの読み取り値を送信する場合に最適です。
  • Events: デバイスが永続的なデータをバックエンドアプリケーションに送信できるようにするため、queue アドレスタイプを使用してメッセージが送信されます。このオプションは、アラートや通知など、より重要なデバイスデータを送信する場合に最適です。

バックエンドアプリケーションは、コマンド メッセージをデバイスに送信することもできます。コマンドを使用して、デバイスでアクションをトリガーできます。例としては、設定プロパティーの更新、ソフトウェアコンポーネントのインストール、アクチュエーターの状態の切り替えなどがあります。

3.1.2. YAML バンドルを使用した AMQ Online のインストール

AMQ Online をインストールする最も簡単な方法は、定義済みの YAML バンドルを使用することです。

手順

  1. cluster-admin 権限を持つユーザーとしてログインしてます。

    oc login -u system:admin
    Copy to Clipboard Toggle word wrap
  2. (オプション) amq-online-infra 以外のプロジェクトにデプロイする場合は、次のコマンドを実行し、後続の手順で amq-online-infra を置き換える必要があります。

    sed -i 's/amq-online-infra/my-project/' install/bundles/amq-online/*.yaml
    Copy to Clipboard Toggle word wrap
  3. AMQ Online をデプロイするプロジェクトを作成します。

    oc new-project amq-online-infra
    Copy to Clipboard Toggle word wrap
  4. ダウンロードしたリリースファイルの場所にディレクトリーを変更します。
  5. amq-online バンドルを使用してデプロイします。

    oc apply -f install/bundles/amq-online
    Copy to Clipboard Toggle word wrap
  6. (オプション) サンプルプランとインフラストラクチャー設定をインストールします。

    oc apply -f install/components/example-plans
    Copy to Clipboard Toggle word wrap
  7. (オプション) サンプルのロールをインストールします。

    oc apply -f install/components/example-roles
    Copy to Clipboard Toggle word wrap
  8. (オプション) 標準 認証サービスをインストールします。

    oc apply -f install/components/example-authservices/standard-authservice.yaml
    Copy to Clipboard Toggle word wrap
  9. (オプション) Service Catalog 統合をインストールします。

    oc apply -f install/components/service-broker
    oc apply -f install/components/cluster-service-broker
    Copy to Clipboard Toggle word wrap

3.1.3. IoT サービスのインストール

AMQ Online で IoT 機能の使用を開始するには、まず IoT サービスをインストールする必要があります。

手順

  1. (オプション) amq-online-infra 以外のプロジェクトにデプロイする場合は、次のコマンドを実行し、後続の手順で amq-online-infra を置き換える必要があります。

    sed -i 's/amq-online-infra/my-project/' install/preview-bundles/iot/*.yaml
    Copy to Clipboard Toggle word wrap
  2. IoT バンドルをデプロイします。

    oc apply -f install/preview-bundles/iot
    Copy to Clipboard Toggle word wrap
  3. MQTT プロトコルアダプターの証明書を作成します。テスト目的で、自己署名証明書を作成できます。

    ./install/components/iot/examples/k8s-tls/create
    oc create secret tls iot-mqtt-adapter-tls --key=install/components/iot/examples/k8s-tls/build/iot-mqtt-adapter-key.pem --cert=install/components/iot/examples/k8s-tls/build/iot-mqtt-adapter-fullchain.pem
    Copy to Clipboard Toggle word wrap

    スクリプトを呼び出すときに環境変数 NAMESPACE を設定して、deploy スクリプトがキーと証明書をインストールする namespace をオーバーライドできます。以下に例を示します。

    NAMESPACE=my-namespace ./install/components/iot/examples/k8s-tls/deploy
    Copy to Clipboard Toggle word wrap
    注記

    クラスターが localhost で実行されていない場合には、外部クライアント (MQTT など) が適切なサービスに適切に接続できるように、証明書を作成するときにクラスターのホスト名を指定する必要があります。以下に例を示します。

    CLUSTER=x.x.x.x.nip.io install/components/iot/examples/k8s-tls/create
    Copy to Clipboard Toggle word wrap
  4. (オプション) PostgreSQL サーバーをインストールし、データベースを作成します。

    oc apply -f install/components/iot/examples/postgresql/deploy
    Copy to Clipboard Toggle word wrap

    すでに PostgreSQL インスタンスがあり、それにアクセスするユーザーでデータベースを作成した場合は、この手順を省略できます。

  5. データベーススキーマを適用します。

    作成したデータベースインスタンスで次の SQL ファイルを実行する必要があります。設定によっては、データベース管理者権限が必要になる場合があります。

    • install/components/iot/examples/postgresql/create.sql
    • install/components/iot/examples/postgresql/create.devcon.sql

    データベースに接続された psql コマンドを使用して、SQL ファイルを実行できます。以下は、前の手順で説明したように PostgreSQL をインストールしたときに、コンテナー内から psql を実行する方法の例を示しています。

    oc exec -ti deployment/postgresql -- bash -c "PGPASSWORD=user12 psql device-registry registry" < install/components/iot/examples/postgresql/create.sql
    oc exec -ti deployment/postgresql -- bash -c "PGPASSWORD=user12 psql device-registry registry" < install/components/iot/examples/postgresql/create.devcon.sql
    Copy to Clipboard Toggle word wrap
  6. IoT インフラストラクチャー設定の例をインストールします。

    oc apply -f install/components/iot/examples/iot-config.yaml
    Copy to Clipboard Toggle word wrap

3.1.4. IoT プロジェクトの作成

IoT サービスをインストールしたら、IoT プロジェクトを作成します。

手順

  1. メッセージングテナントとしてログインします。

    oc login -u developer
    Copy to Clipboard Toggle word wrap
  2. 管理対象 IoT プロジェクトを作成します。

    oc new-project myapp
    oc create -f install/components/iot/examples/iot-project-managed.yaml
    Copy to Clipboard Toggle word wrap
  3. リソースの準備が整うまで待ちます。

    oc get addressspace iot
    oc get iotproject iot
    Copy to Clipboard Toggle word wrap
    注記

    Phase フィールドに両方のリソースの Ready ステータスが表示されていることを確認します。

  4. メッセージングコンシューマーユーザーを作成します。

    oc create -f install/components/iot/examples/iot-user.yaml
    Copy to Clipboard Toggle word wrap

3.1.5. IoT デバイスの作成

IoT サービスをインストールして IoT プロジェクトを作成したら、監視するデバイス用の IoT デバイスを作成できます。

3.1.5.1. 新しいデバイスの登録

新しいデバイスを作成するには、最初にデバイスを登録する必要があります。

手順

  1. デバイスレジストリーホストをエクスポートします。

    export REGISTRY_HOST=$(oc -n amq-online-infra get routes device-registry --template='{{ .spec.host }}')
    Copy to Clipboard Toggle word wrap
  2. デバイスレジストリーアクセストークンをエクスポートします。

    export TOKEN=$(oc whoami --show-token)
    Copy to Clipboard Toggle word wrap

    このトークンは、デバイスレジストリー管理 API に対する認証に使用されます。

  3. 定義された ID でデバイスを登録します (この例では 4711 を使用します)。

    curl --insecure -X POST -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" https://$REGISTRY_HOST/v1/devices/myapp.iot/4711
    Copy to Clipboard Toggle word wrap
  4. (オプション) 追加の登録情報を指定する必要がある場合は、次のように行います。

    curl --insecure -X POST -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" --data-binary '{
    	"via": ["gateway1"]
    }' https://$REGISTRY_HOST/v1/devices/myapp.iot/4711
    Copy to Clipboard Toggle word wrap

3.1.5.2. デバイスのユーザー名とパスワード認証情報の設定

新しいデバイスを登録したら、デバイスのユーザー名とパスワード認証情報を設定する必要があります。

手順

  1. デバイスの認証情報を追加します。

    curl --insecure -X PUT -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" --data-binary '[{
    	"type": "hashed-password",
    	"auth-id": "sensor1",
    	"secrets": [{
    		"pwd-plain":"'hono-secret'"
    	}]
    }]' https://$REGISTRY_HOST/v1/credentials/myapp.iot/4711
    Copy to Clipboard Toggle word wrap

3.1.6. Eclipse Hono コマンドラインクライアントのインストール

手順

  1. Eclipse Hono コマンドラインクライアント をダウンロードします。
  2. メッセージングエンドポイント証明書を取得します。

    oc -n myapp get addressspace iot -o jsonpath={.status.caCert} | base64 --decode > tls.crt
    Copy to Clipboard Toggle word wrap
  3. メッセージングエンドポイントのホストとポートをエクスポートします。

    export MESSAGING_HOST=$(oc get -n myapp addressspace iot -o jsonpath='{.status.endpointStatuses[?(@.name=="messaging")].externalHost}')
    export MESSAGING_PORT=443
    Copy to Clipboard Toggle word wrap

3.1.7. telemetry コンシューマーの開始

たとえば、センサーの読み取り値などの telemetry データをデバイスからクラウドに送信できます。これを行うには、最初に顧客アプリケーションを実行して telemetry コンシューマーを開始する必要があります。

手順

  1. 顧客アプリケーションを実行して、telemetry を受信します。

    java -jar hono-cli-*-exec.jar --hono.client.host=$MESSAGING_HOST --hono.client.port=$MESSAGING_PORT --hono.client.username=consumer --hono.client.password=foobar --tenant.id=myapp.iot --hono.client.trustStorePath=tls.crt --message.type=telemetry
    Copy to Clipboard Toggle word wrap

3.1.8. HTTP を使用した telemetry の送信

HTTP プロトコルを使用して、デバイスからクラウドに telemetry を送信できます。

手順

  1. HTTP プロトコルを使用して telemetry を送信します。

    curl --insecure -X POST -i -u sensor1@myapp.iot:hono-secret -H 'Content-Type: application/json' --data-binary '{"temp": 5}' https://$(oc -n amq-online-infra get routes iot-http-adapter --template='{{ .spec.host }}')/telemetry
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat