このトピックでは、デバイスのブロードキャスト通信機能を実装するためにLink SDK for CのAPI操作を呼び出す方法について説明します。 この例では、という名前のサンプルコードファイルです。/demos/mqtt_broadcast_demo.cが使用されます。
背景情報
手順
クライアントを初期化します。
詳細については、「手順1: クライアントの初期化」をご参照ください。
必要な機能を設定します。
詳細については、「手順2: 機能の設定」をご参照ください。
接続を確立します。
詳細については、「手順3: 接続の確立」をご参照ください。
オプションです。 製品のすべてのデバイスにブロードキャストメッセージを送信する場合、デバイスはaiot_mqtt_sub関数を呼び出して指定されたトピックをサブスクライブする必要があります。
サンプルコード:
{ char * sub_topic = "/broadcast/a18wP ******/test"; res = aiot_mqtt_sub(mqtt_handle, sub_topic, NULL, 1, NULL); if (res < 0) { printf("aiot_mqtt_sub failed, res: -0x % 04X\n", -res); return -1; } }パラメーター:
パラメーター
例
説明
sub_topic
/ブロードキャスト /a18wP ****** /テスト
ブロードキャストメッセージが送信されるトピック。 形式:
/broadcast/${productKey}/<カスタムフィールド>この例のパラメータ:a18wP ******はデバイスのProductKeyです。testはカスタムフィールドを示します。
詳細については、「トピック」をご参照ください。
ブロードキャストメッセージを受信します。
デバイスがIoT Platformに接続された後、IoT PlatformのPubBroadcast操作を呼び出して、デバイスにブロードキャストメッセージを送信できます。
重要スロットリングを防ぐために、1分あたり最大で1つのブロードキャストメッセージを送信することを推奨します。
詳細については、「ブロードキャストメッセージ」をご参照ください。
デバイスは、ブロードキャストメッセージを受信するためにaiot_mqtt_recv関数を呼び出す。 次に、コールバック関数を呼び出して必要な操作を実行します。
この例では、demo_mqtt_default_recv_handlerという名前のコールバック関数が使用され
。ブロードキャストメッセージを処理するコールバック関数を定義します。
トピック形式に基づいて、メッセージがブロードキャストメッセージであるかどうかを確認します。
製品のすべてのオンラインデバイスにブロードキャストメッセージを送信する場合、デバイスはブロードキャストトピックをサブスクライブする必要はありません。 各デバイスがブロードキャストメッセージを受信した後、ブロードキャストトピック形式に基づいてメッセージがブロードキャストメッセージであるかどうかを確認できます。 ブロードキャストトピックの形式は
/sys/${productKey}/${deviceName}/broadcast/request/${MessageId}です。カスタムブロードキャストトピックをサブスクライブするすべてのデバイスにブロードキャストメッセージを送信する場合、デバイスはトピックをサブスクライブする必要があります。 カスタムブロードキャストトピックの形式は、
/broadcast/${productKey}/<custom field>です。
ビジネス要件に基づいて、コールバックの処理ロジックを指定できます。 この例では、ブロードキャストメッセージが印刷される。
void demo_mqtt_default_recv_handler(void * handle, const aiot_mqtt_recv_t * packet, void * userdata) { switch (packet->type) { …… …… ケースAIOT_MQTTRECV_PUB: { printf("pub, qos: % d, topic: %.* s\n", packet->data.pub.qos, packet->data.pub.topic_len, packet->data.pub.topic); printf("pub, payload: %.* s\n", packet->data.pub.payload_len, packet->data.pub.payload); /* TODO: ブロードキャストメッセージを印刷する * / } break; …… …… default: { } } }
接続を閉じます。
詳細については、「手順8: IoT Platformからデバイスを切断する」をご参照ください。
プログラムを終了します。
詳細については、「ステップ9: プログラムを終了する」をご参照ください。