Skip to Content
IoT アプリ開発外部HMIの埋め込み

外部HMIの埋め込み

多くの産業機械は、ローカルWebサーバーを通じて独自のHMI(ヒューマン・マシン・インターフェース)を提供しています。このガイドでは、Embedウィジェット、nginxリバースプロキシ、リモートアクセストンネルを使用して、これらのHMIをIronFlock UIからアクセス可能にする方法を説明します。

基本例:単一マシン

最もシンプルなケースは、エッジデバイスのローカルネットワークからHMI Webサーバーに到達可能な単一のCNCマシン(またはPLC、カメラなど)です — 例えば 192.168.1.50:8080

1. マシンアドレスをアプリパラメータとして設定

アプリパラメータを使用して、ユーザーがマシンのローカルHMIアドレス(例:192.168.1.50:8080)を設定できるようにします。これにより、アドレスはハードコードされず、デバイスインストールごとに設定できます。

2. エッジコードにnginxリバースプロキシを追加

アプリのDockerセットアップに、設定されたマシンアドレスを読み取り、エッジデバイスの固定ポート(例:localhost:3000)に転送するシンプルなnginxコンテナを含めます。エッジコードはアプリパラメータを読み取り、それに応じてnginxを設定します。

3. ポートテンプレートで固定ポートを定義

ポートテンプレートで、nginxがリッスンするポートを宣言します:

# .ironflock/port-template.yml ports: - name: CNC Machine HMI port: 3000 main: false

ポートは固定(動的に割り当てられない)でなければなりません。リモートアクセスポートは実行時に追加できず、リリース時に定義され、インストールごとに設定されるためです。

port-template.ymlでポートを宣言することで、プロジェクト管理者はアプリ設定でCNCマシンへのリモートアクセスを有効または無効にできます。アプリがデバイスに初めてインストールされる際、ユーザーはインストール設定でこのポートへのリモートアクセスを明示的に許可する必要があります。これはセキュリティ機能です — リモートアクセスはデフォルトでは有効になっていません。

HMIにアクセスするユーザーはローカルのノートPCにいて、エッジデバイスのネットワーク上にはいないため、ここではリモートアクセスが必要です。IronFlockのトンネル技術は、ユーザーのブラウザからエッジデバイスの転送ポートまでの安全な接続を作成します。

4. ボードにEmbedウィジェットを追加

UI Builderで、デバイスのリモートアクセストンネルアドレスのポート3000を指すEmbedウィジェットを追加します。CNCマシンの元のHMIがIronFlockボード内に直接表示されます。

この基本的なセットアップにより、デバイスごとに単一マシンのHMIへのリモートアクセスが可能になります — VPNもファイアウォール変更も不要です。


応用:デバイスあたり複数のマシン

エッジデバイスが複数のマシンに接続されている場合、パスベースルーティングを使用して、すべてのHMIを単一の転送ポートで提供するようにパターンを拡張できます。

1. データバックエンドテーブルにマシンアドレスを保存

データバックエンドに、ローカルWebサーバーアドレスと転送パスを含む各マシンの詳細を追跡するテーブルを追加します:

# .ironflock/data-template.yml data: tables: - tablename: machines maintainLatestFlagFor: ['machine_id'] columns: - id: tsp dataType: timestamp - id: machine_id dataType: string - id: name dataType: string - id: local_hmi_address dataType: string - id: forwarded_hmi_path dataType: string

2. nginxで複数のマシンをルーティング

nginxを設定して、同じ固定ポートの下で各マシンを別々のパスでリバースプロキシします。例えば、192.168.1.50:8080localhost:3000/cnc1/に、192.168.1.51:8080localhost:3000/cnc2/に転送します。これらの転送パスをmachinesテーブルに保存し、ボードが各HMIの場所を把握できるようにします。

基本例と同じ固定ポートとポートテンプレートが適用されます — 1つのポートが異なるパスですべてのマシンに対応します。

3. ページベースナビゲーション付きEmbedウィジェットを追加

UI Builderで、各マシンのHMI用に別々のボードページを作成し、各ページにmachinesテーブルからforwarded_hmi_pathを読み取ってEmbed URLとして使用するEmbedウィジェットを追加します。

ユーザーがHMI間を切り替えられるように、ページ&ナビゲーション機能を使用します。接続されたすべてのマシンを縦型サイドバーメニューとして一覧表示するサイドナビゲーションウィジェットを追加します。サイドバーの項目はmachinesテーブルから動的に生成でき、新しいマシンが自動的に表示されます。ユーザーがマシン名をクリックすると、ボードが対応するページに移動し、そのページのEmbedウィジェットが正しいHMIを読み込みます。

結果

ユーザーはボード内のすべての接続されたマシンを閲覧し、1つを選択して、IronFlock内で直接元のHMIと対話できます — VPN、別のブラウザタブ、ファイアウォール設定は不要です。Embedウィジェット、データバックエンド、リモートアクセストンネルが連携して、マシンフリート全体の統合された安全な制御画面を構築します。

Last updated on