IoT Edgeゲートウェイの新しいプレビュー版では、1つのモジュールがInvokeDeviceMethodAsyncを介して別のモジュールでメソッドを呼び出すことができます。これは、デバイスIDとモジュールIDをパラメータとして取り、おそらくEdgeに通話のルーティング方法を伝えます。同じゲートウェイ内で呼び出す場合、device idパラメータはIoT Edgeハブ内のゲートウェイインスタンスのデバイスIDである必要があります。モジュールIDは、IoTエッジからゲートウェイにプッシュダウンされたモジュールのインスタンスのモジュールIDでなければなりません。それらのIDをハードコードするのは簡単ですが、明らかに望ましくないでしょう。ハードコードされた値をロード時にモジュールによって読み取られる設定ファイルに置くことができます。これは問題は少ないが理想的ではありません。文法的に必要な値をプロで見つけたり読み込んだりする方法はありますか?デプロイメントのjson configsは、デプロイメント時にインスタンスIDを取り込むための変数置換などをサポートしていますか?IoT Edgeモジュールインスタンスが別のモジュールのメソッドを呼び出すために必要なIDを検出するための推奨される方法は何ですか?
答えて
IoTエッジデバイスのモジュールによるメソッド呼び出しの一般的なシナリオは、IoTエッジゲートウェイデバイスに接続された同じデバイスまたはダウンストリームデバイス上の他のモジュールからテレメトリメッセージを受信し、メッセージの内容に基づいてテレメトリメッセージを受信することです送信者モジュールまたはデバイス上のメソッドを呼び出して、何らかの変更を示すことを決定します(たとえば、デバイスが過熱していることを示すメッセージがある場合、モジュールはファンの速度を遅くするメソッドなどを呼び出します)。
このようなシナリオでは、モジュールはメッセージ自体から送信者モジュールのデバイスIDとモジュールIDを取得できます。メッセージオブジェクトには、この情報を提供する次のプロパティがあります。 ConnectionDeviceId ConnectionModuleId
私が解決しようとしているシナリオは、要求メッセージを作成することでそのようにすることができますが、受信側でメソッドを呼び出すのが自然だと感じています。たとえば、デバイスが接続するたびにデータベースからの情報を必要とする10個のモジュールがある場合は、必要なクエリメソッドを定義するDBモジュールを作成することが理にかなっています。その後、各モジュールは、DBモジュール上でGetInformationを呼び出していくらかの情報を必要としました。私のシナリオでは、私はデバイスIDがゲートウェイIDを指すようにモジュール間で同じだと思うが、私はまだターゲットモジュールのインスタンスIDが必要になります –
私は現在好ましい方法はないと思います。あなたは基本的に3つのオプションがありますが、私はそれらの2つについて言及します。あなたはモジュールを定義すると、私は個人的にオプション1を選択するであろうモジュール
にプロパティとしてモジュールツイン経由でプッシュすることができますモジュール
createOptions
セクションでEnv
を使用して
- 展開マニフェストの作成時に-idを指定すると、環境変数を特定のモジュールに注入することもできます。マニフェストのオプションを作成します。
モジュール通信がいくつかのドメインルールに基づいて変更されますが、私のプロジェクトでこれが真であるユースケースを見つけることができなかった場合、方法2を選択します。
私はコメントとして回答しますが、評判はありません。
- 1. Rubyで別のモジュールで定義されたメソッドを呼び出す方法は?
- 2. 別のキーボードをレンダリングするためにsetInputViewメソッドを呼び出す方法
- 3. ES6 Reactコンポーネント内でメソッドを再利用するための推奨される方法は何ですか?
- 4. ユーザープロファイル機能を推奨するためのテーブルコードデザインが必要
- 5. 出力ストリームをフリンクするためにタイプヒントを与える非推奨の方法は何ですか?
- 6. アプリの起動後初めてメソッドが呼び出された場合、そのメソッドを判別する最も簡単な方法は何ですか?
- 7. これは、cx_oracleのユニコードまたは非ユニコードのバージョンがインストールされているかどうかを検出するための推奨方法ですか?
- 8. 別のモジュールからメソッドを呼び出す方法
- 9. デジタル署名が必要なWebメソッドを呼び出すために必要なもの
- 10. モジュラーCアプリケーションを作成するための推奨方法は何ですか?
- 11. モジュールがロードされたときにメソッドを呼び出す方法は?
- 12. これは、あるメソッドが別のメソッドを呼び出す方法ですか?
- 13. SlickGridをスタイルするために推奨されるアプローチは何ですか?
- 14. TensorFlowにサマリーライターの複数のランを格納するために推奨される方法は何ですか?
- 15. glMatrixModeを呼び出すたびにglLoadIdentityを呼び出す必要があるのはなぜですか?
- 16. 大きなsproutcoreプロジェクトを編成するための推奨される方法は何ですか?
- 17. EclipseのJUnitにHamcrestを統合するための推奨される方法は何ですか?
- 18. RESTfulコントローラからPDFにプレーンテキストを出力するための推奨された方法
- 19. Ajax呼び出しを検出するためのInternet Explorerアドオン
- 20. JenkinsのCheckstyleを有効にするために推奨される方法は何ですか?
- 21. 多くのストリーミングデータをデータベースに保存するために推奨される方法は何ですか?
- 22. datetimeオブジェクトをミリ秒のunixタイムスタンプに変換するために推奨される方法は何ですか?
- 23. ボックスを表すために推奨されるクラスは何ですか?
- 24. メソッドを呼び出すための良いJavaデザインとは何ですか?
- 25. ImmutableJS Recordの複数のフィールドを更新するための推奨される方法は何ですか?
- 26. sprintfが呼び出されるたびにmy_functionを呼び出す方法は?
- 27. webrtc:PCObserver#onAddStreamが呼び出しのアップグレードのために呼び出されない
- 28. Junitメソッド呼び出しがスプリングインジェクションのために失敗する
- 29. Webアプリケーションに非システムPerlを使用するための推奨される方法は何ですか?
- 30. APIキーと秘密をUWPアプリケーションに保存するための推奨される方法は何ですか?
モジュールの「構成」と考えることができますか?もしそうであれば、モジュールのツインにこの情報を設定してデプロイメントを作成することができます。その後、モジュールはツイートを取得するために 'GetTwinAsync'を呼び出すので、メソッド呼び出しをどこに指示するかを知ることができます。 Docker経由でコンテナに環境変数を注入する方法もあります。 – Raj