下流方向制御の概要

IoTデータ制御機能を提供するソフトウェアモジュールにおいては、そのプロセス間通信においてUNIXドメインソケットを使用しています。下流方向制御もUNIXドメインソケットを用いて動作します。
下流方向制御はPD Repeaterが対応する送信先の内、MQTTプロトコルに対応したクラウドサービスとPD Exchange(pd_ex)、PH社独自仕様WEBサーバー(pd_web) 並びに TCP(ltcp)接続に対応します。
MQTTプロトコルとTCP接続においては、送受(パブ/サブ)兼用の常時接続状態で動作し、PD Exchangeについては定期的に制御メッセージが無いかポーリングを行います。
PH社独自仕様WEBサーバーにおいては、データ送信時の応答メッセージを下流方向への制御メッセージとして扱います。
上流(クラウド)からの制御メッセージはPD Repeaterを介しUNIXドメインソケットにより PD Handler Modbus Client 等の下流のソフトウェアモジュールへ転送されます。
下流のソフトウェアモジュールはデータの送信に用いるUNIXドメインソケットによりPD Repeaterを介しクラウドへ制御結果を返します。

制御メッセージはJSON文字列を想定していますが、クラウド側の制御要件としてペイロードに載せられない情報、MQTTにおいてはトピック、PD ExchangeにおいてはコマンドID、PH社独自仕様WEBサーバーにおいては応答ヘッダー、TCP接続においてはポート番号が必要となる場合が考えられるため、PD Repeaterから下流のソフトウェアモジュールへの制御メッセージの転送においては、これらの情報と制御メッセージのハッシュ値(MD5)を付加しています。
制御メッセージのハッシュ値は、下流のソフトウェアモジュールが制御結果を返す際に、どの制御メッセージに対する応答なのか明確にすることを想定したものです。

MQTTプロトコルで接続されるクラウドを例に下流方向制御の流れを説明します。

  1. 制御メッセージのハッシュ値(MD5)を計算しておきます。
  2. MQTTプロトコルにより制御メッセージをパブリシュします。
  3. 制御メッセージを受け、制御メッセージのハッシュ値(MD5)を計算します。
  4. クラウドID(PD Repeater上の便宜上の番号)、制御メッセージのハッシュ値(MD5)、トピックと共に制御メッセーを下流のソフトウェアモジュールに転送します。
  5. 制御メッセージに従って処理を行います。
  6. 処理結果と共に制御メッセージのハッシュ値(MD5)を応答メッセージに載せて返します。
  7. MQTTプロトコルにより制御メッセージをパブリシュします。
  8. 応答メッセージ上のハッシュ値(MD5)と(1)で計算したハッシュ値(MD5)を比較することで、どの制御メッセージに対する応答であるかを明確にすることができます。