信頼性の低いネットワーク接続を備えたデバイスを特徴とする今後のプロジェクトに AWS IoT を検討しています。要件の 1 つは、コマンドをデバイスに送信することです。コマンドは確実に配信 (ACK) される必要があり、コマンドが後で完了したときに、デバイスも成功/失敗を通知する必要があります。AWS が永続的なセッションをサポートしていないことを考えると、MQTT トピックにコマンドを発行するだけではメッセージが確実に配信されないようです。これは正しいですか?
私たちは、デバイス シャドウの「望ましい」状態内のコマンドの配列にコマンドを突っ込むことについて推測してきました。次に、デバイスは、シャドウの「報告済み」状態でコマンドを複製することによってコマンドの受信を確認し、「報告済み」状態のコマンド内の結果フィールドを設定することによって成功/失敗を報告できます。
AWS IoT の経験が不足していることを考えると、これは正気のアプローチのように思えますか? または、誰かがもっときちんとしたものを見ることができますか? これに関する厄介な点の 1 つは、シャドウが完了したコマンドを蓄積することです。これはおそらく、シャドウを適切なサイズに保つために、完了したコマンドを削除する何らかのハウスキーピングが最終的に必要になることを意味します。
最後に、帯域幅の使用がどれほど巧妙であるかを知っている人はいますか? 私のサーバーが「望ましい」状態の奥深くにネストされた 100 個の要素の配列に要素を追加した場合、実際にどのくらいのデータがネットワーク上を流れますか? 同様に、デバイスが要素を「報告済み」状態に移動したとき。