WebSocket について

WebSocket を使用して、変数、アラーム、システムエラーの通知を受け取ることができます。通知を受け取るにはセッションを確立し、モニター対象を登録する必要があります。

WebSocket (バージョン 13) プロトコルを使用することができ、WebSocket セッションの最大数は 5 セッションです。

セキュリティーを使用する場合は、認証コマンドを送信します。承認が行われていない場合、またはセキュリティーレベルが十分でない場合は、表示器からの通知を受け取りません。

クライアントからの通信がない場合、表示器は 10 秒毎に WebSocket に Ping を送信します。5 回の Ping に応答がない場合 (つまり、Ping への対応を含むクライアントからの通信が 60 秒間ない場合)、表示器のセッションは閉じられます。

変数

画面編集ソフトウェアで作成された変数の値およびクオリティが変更された際に、通知を受け取ることができます。

通知を受け取るには、モニターする変数を登録してください。登録された変数が外部変数である場合、表示器は接続機器からの値の読み取りを開始します。

MEMO:

  • ユーザーデータタイプ (構造体、配列) の変数はサポートしていません。

  • 1 セッションの変数の最大数は 100 です。

アラーム/システムエラー

表示器でアラームまたはシステムエラーが発生/確認/復旧したときに、通知を受け取ることができます。通知を受け取るにはモニター対象を登録してください。

コマンド

コマンドには以下があります。

MEMO: サンプルコードは Java で書かれています。

セッションの確立

WebSocket のセッションを確立します。

リクエスト

項目
メソッドGET
URL<Base URL>/ws Base URL
パラメーターN/A
ヘッダー
ヘッダー
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-Version13
Sec-WebSocket-KeyWebSocket Handshake Key
ボディN/A

GET http://192.168.1.100:8000/api/v1/ws HTTP/1.1

Host: localhost:8082

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Version: 13

Sec-WebSocket-Key: k3CyFjeNOBNzFZx4blx9kg==

Origin: ws://localhost:8082

レスポンス

項目
状態コード

セッションが確立されると、表示器は 101 (スイッチプロトコル) を送信します。

コード 備考

101 Switching Protocols

セッションを確立しました。

429 Too Many Requests

セッションの最大数に達したためセッションを確立できませんでした。

400 Bad Request

セッションを確立できませんでした。理由は上記以外です。
ヘッダー
ヘッダー
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-AcceptWebSocket Handshake
ボディN/A

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

認証

ユーザー管理を使用する場合は、初めに認証コマンドを送信します。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
Authorizationstring"Bearer <token>"ログイン API でトークン応答を使用します。

{

" Authorization ": " Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IlVzZXIxIiwibGV2ZWwiOjF9.eqVwAuo0KMqdggICllJVPs3IE67oHdUpo04w68md7kI "

}

モニター変数の追加

登録する変数を追加します。モニター変数の数が最大数を超えた場合、切り捨てられます。変数が追加されると、すぐに初期値が送信されます。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"add_monitor"モニター変数の追加。
variablestring の配列 - 変数名の配列。

{

"command": "add_monitor",

"variable": ["Variable1","Variable2"]

}

モニター変数の削除

登録されている変数を削除します。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"remove_monitor"モニター変数を削除します。
variablestring の配列 - 変数名の配列。

{

"command": " remove _monitor",

"variable": ["Variable1","Variable2"]

}

モニター変数の置き換え

登録したすべての変数を置き換えます。モニター変数の数が最大数を超えた場合、切り捨てられます。

変数が追加されると、すぐに初期値が送信されます。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"replace_monitor"モニター変数を置き換えます。
variablestring の配列 - 変数名の配列。

{

"command": " replace_monitor",

"variable": ["Variable1","Variable2"]

}

モニター変数のクリア

登録したすべての変数を削除します。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"clear_monitor"モニター変数をクリアします。

{

"command": " clear_monitor",

}

アラームとシステムエラーの登録

アラームとシステムエラーを登録します。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"subscribe"登録します。
alarmstring の配列 -

登録するアラームの種類を配列で指定します。

アラーム: “alarm”

システムエラー: “error”

{

"command": " subscribe ",

" alarm ": ["alarm","error"]

}

アラームとシステムエラーの登録削除

削除するアラームの種類を配列で指定します。

項目
送信元 クライアント
データ
フィールド データタイプ 備考
commandstring"unsubscribe"登録削除します。
alarmstring の配列 -

登録削除するアラームの配列名。

アラーム: “alarm”

システムエラー: “error”

{

"command": " unsubscribe",

" alarm ": ["alarm","error"]

}

変数の登録

登録した変数の値またはクオリティが変更されたときに、表示器から通知を受け取ります。

項目
送信元 サーバー (表示器)
データ
フィールド データタイプ 備考
updatedstring"variable"変数
dataobject の配列 -

変数情報の配列。

変数情報:

フィールド データタイプ 備考
namestring 変数名 画面編集ソフトウェアで設定した変数名。
qualitystring クオリティ

“good”: 良い

"invalid": 無効な値

“bad”: エラー

“unknown”: 読み取り不可

Valueboolean、数値、string 変数の値。

クオリティが ”good” の場合のみ、このフィールドを使用できます。

JSON の データタイプは、変数のデータタイプによって異なります。

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

画面編集ソフトウェアと WebSocket 間でサポートされているデータタイプは次の表のとおりです。

データタイプ WebSocket (JSON タイプ) WebSocket 値の範囲
BOOL boolean true/false
BYTE、SINT、USINT、WORD、INT、UINT、DWORD、DINT、UDINT、LWORD、LINT、ULINT、REAL、LREAL、TIME 数値 64 ビット浮動小数点値の範囲。

* LWORD、LINT、ULINT の場合、精度は 52 ビット。

* REAL または LREAL の値が NaN または INFINITY の場合は、Null。

STRING、WSTRING string 文字は UTF-8 に対応しています。
DATE、TIME_OF_DAY、DATE_AND_TIME string ISO 8601 フォーマット

MEMO: LWORD 値は、表示器に浮動小数点として表示されます。

アラームの登録

表示器のアラームが発生/確認/未確認/復旧したときに、表示器から通知を受け取ります。

項目
送信元 サーバー (表示器)
データ
フィールド データタイプ 備考
updatedstring"alarm"アラーム
dataobject の配列 -

アラーム情報の配列。

アラーム情報:

フィールド データタイプ 備考
messagestring メッセージ 画面編集ソフトウェアで設定したメッセージ。
parameter数値 パラメーター 画面編集ソフトウェアで設定したパラメーター。
statusstring 状態

“Active”: 発生

“Ack”: 確認

“Return”: 復旧

“UnACK”: 未確認

timestring 時刻 ISO-8601 フォーマット
typestring 種類“HiHi”/”Hi”/”Lo”/”LoLo”
variablestring 変数名 アラームに割り付けられた変数名。
groupnamestring グループ名 アラームのグループ名。
severity数値 重要度 画面編集ソフトウェアで設定した重要度。
valueboolean、数値 変数の値 JSON の データタイプは、変数のデータタイプによって異なります。

{

"updated ": “alarm”,

"data”:[

 {

"message": "BOOL_Hi",

"parameter": 100,

"status": "Active",

"time": "2017-07-07T16:20:01",

"type": "Hi",

"variable": "BOOL_Internal"

“groupname”: “AlarmGroup1”,

“severity”: 1,

“value”: true

}

]

}

システムエラーの登録

表示器のシステムエラーが発生/確認/復旧したときに、表示器から通知を受け取ります。

項目
送信元 サーバー (表示器)
データ
フィールド データタイプ 備考

updated

string

"error"

システムエラー

data

object の配列 -

システムエラー情報の配列。

システムエラーの情報:

フィールド データタイプ 備考

message

string メッセージ システムエラーメッセージ。

status

string 状態

“Active”: 発生

“Ack”: 確認

“Return”: 復旧

time

string 時刻 ISO-8601 フォーマット

equipment

string 機器名 エラーが発生した接続機器に設定されている名前。

{

"updated”:”error",

"data": [

{

"equipment": "MODBUS_Equipment",

"message": "MODBUS_Equipment:TCP connection open error (IP Address:127.0.0.2)",

"status": "Active",

"time": “2017-07-07T16:42:00"

}

]

}