exercises for hl7 in ensemble - intersystems · 2018-06-26 · 【体験lab】iot...

18
【体験 LabIoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential - Do Not Duplicate 1 IoT デバイスへどうやって接続する? 演習ガイド V1.0 InterSystem Japan Summit 2016

Upload: others

Post on 25-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

1

IoTデバイスへどうやって接続する?

演習ガイド

V1.0

InterSystem Japan Summit 2016

Page 2: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

2

はじめに

本セッションでは、センサーを搭載したデバイスから取得できる様々な値を、どのように Ensembleが取得

し、取り扱うことができるのかについて、体験を通してご理解いただきます。

本日のシナリオは、

各種センサー付き大型(実物は小型)冷凍庫があり、以下のように様々な企業での取

扱いが想定されていると仮定します。

大型食料品販店

製薬会社の医薬品研究部門で

生鮮食料品取扱い会社 など

センサー値の使い道として、

例えば、冷蔵庫のファン回転数を取得するようにし、極端な数値の変動がある場合ファンに異常がないか

どうか、交換時期でないかどうかなど、過去の計測値や閾値から判断し、確認作業指示の自動通知など、

故障を未然に防ぐための仕組みを検討できます。

また、無駄な在庫を残しすぎないよう、物品の入出庫を検知させ、在庫内容に合わせて適切な量を入庫す

るように人やシステムへ指示を出す仕組みも検討できます。

さらに、在庫量に応じた適切な温度調整指示により顧客側の電気代節約につながる仕組みを提案できま

す。

センサーの値は、エラーの兆候を探るため、また故障やエラーを未然に防ぐために、取得・調査し続けるこ

とが重要ですが、正常な状態が続く場合、センサー値はあまり重要ではありません。

むやみやたらに全てを登録し続けることが良いのかどうかも、検討が必要です。

デバイスから送られてくるセンサー値は多種多様で情報量も膨大となるため、シンプルで軽量、省電力な

通信プロトコルのMQTT を利用した通信が望まれます。

MQTTは TCP/IP プロトコル上で動作するパブリッシュ/サブスクライブ型のモデルを採用しているため、

Ensemble もパブリッシュ/サブスクライブ型モデルの通信に対応する必要があります。

本セッションでは、将来のバージョンの新機能である「MQTTに対応できる Javaビジネスホスト」の使い方

を通して、Ensembleから IoTデバイスへの接続とデータの送受信の仕組みについてご体験いただきま

す。

Page 3: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

3

ステップ1. Java ビジネスホストの構築

冷蔵庫から取得できるセンサー値は、MQTTブローカー(HiveMQ)に通知されます。

冷蔵庫から MQTT ブローカーへパブリッシュされるセンサー値をサブスクライブする役割として、MQTT ク

ライアント実装用の Java ライブラリ:pahoを使用した MQTT クライアントをビジネス・サービスとして用意

しています。

また、Ensembleから MQTTブローカーへパブリッシュしたい場合にも、pahoを使用した MQTT クライ

アントをビジネス・オペレーションとして用意しています。

pahoを使用して作成した MQTT クライアントは、Ensembleのビジネス・サービス、ビジネス・オペレーシ

ョンとして稼動できるよう、インターシステムズ提供 Java ライブラリを使用して Java コードで記載していま

す。

ステップ 1では、Javaで記載された MQTT クライアントでもあり、ビジネス・サービスでもあるコードを、

Ensembleのビジネス・サービスとして登録するまでの流れ(図の破線部分)を体験します。

JavaPaho

JavaPaho

MQTT(Pub/Sub)

Ensemble

MQTT用ビジネスサービス

MQTT用ビジネス

オペレーション

ビジネスプロセス

ワークフロー(BO)

XML

XML

/Freezerz/GreenBox/stock 在庫(在庫の高さをCMで通知)/Freezerz/GreenBox/door ドア開閉(開くと1、閉じると0)/Freezerz/GreenBox/temperature/inside 冷蔵庫内温度/Freezerz/GreenBox/temperature/outside 冷蔵庫のファン周辺の温度/Freezerz/GreenBox/fan ファン回転数

センサーから取得できるトピック

図 1 センサーデータの流れ

Page 4: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

4

最初に、Ensemble のプロダクション構成画面を開きます(以下いずれかの URL にアクセスしてください)。

※ポート番号はコース開始時に参加者個別番号の指定があります。

環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

管理ポータル1 を起動し、Ensemble→(Ensembleネームスペースを選択)→構成→プロダクション

もし、プロダクションが停止している場合は、「開始する」のボタンから開始してください。

開始後の表示

図 2 Ensemble:プロダクションの開始

続いて、「Javaのビジネス・ホスト作成画面」へ移動し、ビジネス・サービスを生成します2。

1 管理ポータルへの URLは演習時ご案内する URLをご利用ください。

2 演習テーマのために事前にビジネス・サービスとビジネス・オペレーション用の Java コードを作成してい

ます。作成したコードは JAR ファイルとして指定の場所に配置しています。

Page 5: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

5

Ensemble→構築→Javaのビジネス・ホスト

図 3 Ensemble:Javaのビジネス・ホスト生成画面

設定詳細は次ページをご参照ください。

Page 6: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

6

入力文字列は、指定のWebページをコピー元としてご利用下さい。

環境 A http://192.168.11.121:577xx/csp/ensemble/Copy.cls

環境 B http://192.168.11.120:577xx/csp/ensemble/Copy.cls

生成できると「Business Host generated successfuly」と表示されます。

図 4 JAR ファイルから Java ビジネス・サービス(GS16.IoTBS)の生成

Page 7: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

7

続いて、構築したビジネス・サービスクラスをプロダクションに登録します。

再度、プロダクション構成画面を開きます。

URLは以下の通りです(または、管理ポータルトップ→Ensemble→構築→プロダクション で開きます)。

環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

「サービス」の右横の のボタンをクリックし、追加用ウィザードを表示し、登録用の設定を行います。

サービスクラス GS16.IoTBS

プルダウンから選択できます(下のほうにリストされています)

サービス名 IoTBS

有効にする チェックを入れます

図 5 プロダクションへのビジネス・サービス(GS16.IoTBS)の追加

続いて、登録したビジネス・サービスの詳細設定を行います。

Page 8: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

8

ステップ2. ビジネス・サービス:IoTBSの構成設定

入力する内容は、指定のWebページからコピーしてご利用下さい。

環境 A http://192.168.11.121:577xx/csp/ensemble/Copy.cls

環境 B http://192.168.11.120:577xx/csp/ensemble/Copy.cls

プロダクションに追加したビジネス・サービス:IoTBSの構成設定を行います。

コンポーネント名を選択します。

図 6 Java ビジネス・サービス(IoTBS)の構成設定

設定が終わったら、設定タブの「適用」ボタンを押下し、設定を反映させます。

一旦、プロダクションを停止し、再度開始すると MQTTTopicsで指定したトピックの内容を受信できます。

本環境では、イベントログに受信した全情報を記録するようにしています。

Page 9: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

9

イベントログに記録されるトピックは以下の通りです。

表 1 IoTデバイスから送信されるトピック

/Freezerz/GreenBox/stock 在庫(在庫の高さを CMで通知します。)

/Freezerz/GreenBox/door ドア開閉(開くと 1、閉じると 0)

/Freezerz/GreenBox/temperature/inside 冷蔵庫内温度

/Freezerz/GreenBox/temperature/outside 冷蔵庫のファン周辺の温度

/Freezerz/GreenBox/fan ファン回転数

Ensemble→表示→イベント・ログ

図 7 Ensemble:イベント・ログ

センサーの値が取得できていることが確認できました。

現時点では、イベントログにのみ情報が記載されています。

本セッションでは、冷蔵庫内の在庫に変化が起きたとき、ドア開閉が行われた時、ファン回転数が 3回連

続閾値を超えた場合に、Ensembleのビジネス・サービスからビジネス・オペレーションへメッセージが送

信される仕組みを取っています。

Page 10: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

10

それでは、冷蔵庫のドア開閉を行い、メッセージが送信されるかどうか確認します。

プロダクション構成画面に戻り、ビジネス・サービス:IoTBS を選択し、メッセージタブをクリックします。

プロダクション構成画面は、管理ポータルトップ→Ensemble→構成→プロダクション または以下 URLを

指定します。

環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE

ドア開閉前

IoTBSを選択し、画面右側の「メッセージ」タブを選択します。ドア開閉前はまだメッセージが来ていません。

ドア開閉後、メッセージが到達していることがわかります。

メッセージ詳細を確認するため、「メッセージ・ビューワに移動」 をクリックします。

図 8 ビジネス・サービス:IoTBSのメッセージ受信を確認する

ドアの開閉を行った後、メッセージが到達していることが確認できます。

メッセージ詳細を確認するため、「メッセージ・ビューワに移動」をクリックし、画面を移動します。

Page 11: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

11

図 9 メッセージ・ビューワ:センサーデータ受信の確認

メッセージの受信を確認できましたので、この後は冷蔵庫の変化に応じた Ensembleの動作について確

認します。

メッセージ・ビューワの移動した後で「検索」ボタンを押下します。

「セッション」の列の数字をクリックすると、別タブでトレース画面が表示されます。

行を選択すると、画面右側の表示が変わります。受信したトピックデータを確認するには、「内容」のタブを選択すると確認しやすいです。

ドアが閉まったとき

ドアが開いたとき

Page 12: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

12

ステップ3. Esemble内処理を確認する

今回のテーマでは、冷蔵庫が在庫で一杯3 になった後で在庫の減りが確認できた場合に、在庫数の管理

担当者へワークフローメッセージを送信し、在庫調整を行うかどうか判断をさせる仕組みを取り入れていま

す。

最初に、冷蔵庫が在庫で一杯になったときのメッセージを確認します。

演習の流れでは、

6センチ以上の高さの在庫が置かれたとき在庫が一杯

と判断をするように作成されています。

在庫一杯になった場合、Ensembleから冷蔵庫にパブリッシュメッセージ(full)を送信します。

3今回の実験環境では、ミニ冷蔵庫の在庫が高さ 6センチを超えた場合、在庫が一杯になったと判断して

います。

Page 13: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

13

パブリッシュ用メッセージを送信したメッセージができていることが確認できます。

①②

⑥⑤

メッセージの横棒を選択すると画面右側の「内容」タブにトピックデータが表示されます。一番最後のメッセージ(MQTTブローカーへの出力の列)を参照します。

トレースタブを選択

それでは、メッセージで確認してみましょう。

プロダクション構成画面に戻り、「オペレーション」の列にある「MQTTブローカーへの出力」を選択し「メッセ

ージ」タブをクリックします。

在庫が一杯になった場合、Ensembleのビジネス・オペレーションから MQTTブローカーへ full を通知

していることがわかります。

図 10 在庫高 6 センチ以上になったときのメッセージを探す

Page 14: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

14

ワークフローを使用しているため、この先は、人による審査を行わない限り、進みません。

トレースタブを選択

続いて、在庫が一杯になった後に在庫数を減少させると、在庫調整を行うようメッセージが送信されます。

在庫調整については、ユーザに判断させたいため、Ensembleのワークフローを使用しています。

ワークフロー用ビジネス・オペレーション(=在庫補充)に受信されたメッセージを確認します。

プロダクション構成画面でオペレーション列にある「在庫補充」をクリックします。

図 11 在庫補充:ワークフローへのメッセージ送信

Page 15: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

15

在庫補充を行うかどうかの判断のため、ワークフローポータルを開きます。

担当者が処理を引き受ける場合「引き受ける」を押下します。

ストックを補充するボタンを押下すると、冷蔵庫への入庫が許可され、冷蔵庫の扉のディスプレイ上に「refill underway」と表示されます。

図 12 ワークフローポータルで在庫補充を判断する

Page 16: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

16

ストックを補充するボタン押下後、先ほど参照していたトレース画面を更新します。

(F5キーを押して画面を更新します。)

refill 通知されると冷蔵庫扉のディスプレイ上以下のように表示されます。

MQTTブローカーへ”refill”をパブリッシュします。ワークフローで指示を

行ったことにより、動作したメッセージ

図 13 ワークフローで在庫補充を指示した後のメッセージ

Page 17: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

17

この後、もう 1度在庫を満タンにすると、Ensembleから MQTTブローカーへ full が通知され、冷蔵庫

扉のディスプレイから[Refill uderway]の文字が消えます。

ここもメッセージで追いかけてみましょう。

fullの通知を行うのは、ビジネス・オペレーションの「MQTTブローカーへの出力」のため、プロダクション

構成で「MQTTブローカーへの出力」を選択後、メッセージタブで「メッセージビューワへ移動」をクリックし

ます。

パブリッシュ用メッセージを送信したメッセージができていることが確認できます。

①②

⑥⑤

メッセージの横棒を選択すると画面右側の「内容」タブにトピックデータが表示されます。一番最後のメッセージ(MQTTブローカーへの出力の列)を参照します。

トレースタブを選択

Page 18: Exercises for HL7 in Ensemble - InterSystems · 2018-06-26 · 【体験Lab】IoT デバイスへどうやって接続する? 演習補足 v1.0 InterSystem Japan Summit 2016 Confidential

【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0

InterSystem Japan Summit 2016

Confidential - Do Not Duplicate

18

Ensembleのビジネス・オペレーション[MQTTブローカーへの出力] から fullが通知され、冷蔵庫の扉

は以下のように4 表示されます。

4 手作りのセンサー付き冷蔵庫のため、在庫の cm の表示に若干の誤差があります。予めご了承ください。