3.6.2.3. MQTT プロトコルを使用したコマンドの受信

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

手順

  1. MQTT クライアントを使用して、コマンドを受信するために MQTT トピックにサブスクライブします。

    mosquitto_sub -v -d -h $(oc -n amq-online-infra get routes iot-mqtt-adapter --template='{{ .spec.host }}') -p 443 -u 'sensor1@myapp.iot' -P hono-secret -t command/+/+/req/# -i 4711 --cafile install/components/iot/examples/k8s-tls/build/iot-mqtt-adapter-fullchain.pem
  2. カスタマーアプリケーションを実行して、ID が 4711 のデバイスにコマンドを送信します。

    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 --device.id=4711 --spring.profiles.active=command
  3. コマンドの名前、ペイロード、およびコンテンツタイプを入力するための指示に従います。以下に例を示します。

    >>>>>>>>> Enter name of command for device [4711] in tenant [myapp.iot] (prefix with 'ow:' to send one-way command):
    ow:setVolume
    >>>>>>>>> Enter command payload:
    {"level": 50}
    >>>>>>>>> Enter content type:
    application/json
    
    INFO  org.eclipse.hono.cli.app.Commander - Command sent to device

    クライアントは MQTT メッセージでコマンドを受け取ります。

    Client 4711 received PUBLISH (d0, q0, r0, m0, 'command///req//setVolume', ... (13 bytes))
    command///req//setVolume {"level": 50}