IROHA2デバイス制御サーバー

セットアップ

サーバー設定

デバイス制御サーバーの設定は iroha-settings/device/irhdevsrv.xml に記述されている。

<?xml version='1.0' encoding='UTF-8'?>
<IrhDevSrv>
    <name>Device Server</name>
    <accessControl>
        <allowedHost>localhost</allowedHost>
        <allowedHost>192.168.13.1/24</allowedHost>
        <allowedHost>192.168.1.0/24</allowedHost>
        <allowedHost>10.105.39.145</allowedHost>
    </accessControl>
    <logOperPath>/tmp</logOperPath>
    <retryMax>6</retryMax>
    <webUpdateInterval>5</webUpdateInterval>
    <logSuppress>100</logSuppress>
    <enableMessaging>False</enableMessaging>
    <redisSrv>localhost:6379</redisSrv>
</IrhDevSrv>

これらの項目を編集することでサーバー設定を変更する。

Table 52 サーバー設定ファイルの設定項目

要素

機能

name

デバイス制御サーバーの名称を指定する(Web UIに表示される名前)

accessControl/allowedHost

管理モードへのアクセスを許可するIPアドレス(ホスト名)を指定する。複数のアドレスを指定するには要素を追加する。

logOperPath

デバイス制御サーバーの操作ログの出力先ディレクトリを指定する

retryMax

デバイスのConnect処理で使用される最大リトライ回数を指定する

webUpdateInterval

自動更新対応ページのWeb UIの更新間隔を指定する(単位:秒)

logSuppress

同じ内容のログが連続して複数回出力される場合、当該ログの出力を抑制する回数を指定する

enableMessaging

メッセージ通信の有効/無効を指定する

redisSrv

メッセージ通信を有効にしたときに接続するRedisサーバーの接続先を IPアドレス:ポート番号 の形式で指定する

抽象デバイス(デバイスモジュール)の追加

iroha-device-server/devices 以下に抽象デバイスのディレクトリをコピー (またはシンボリックリンクを貼る)ことでデバイスクラスとしてサーバーに認識され、 サーバー管理画面においてデバイスを追加することが可能になる。

現在、Python3対応版IROHA2デバイス制御サーバーにデフォルトで用意されている抽象デバイスを Table 53 に示す。

Table 53 抽象デバイス一覧

抽象デバイス名

説明

DECProface_SignalLight

Proface制御表示灯

KSLChop_FastDouble

高速ダブルディスクチョッパー

KSLChop_FastDouble_DNA

高速ダブルディスクチョッパー(DNA専用)

KSLChop_FastSingle

高速シングルディスクチョッパー

KSLChop_FastSingle_DNA

高速シングルディスクチョッパー(DNA専用)

KSLChop_FastTandem

高速タンデムディスクチョッパー

KSLChop_LowDouble

低速ダブルディスクチョッパー

KSLChop_LowDouble_DNA

低速ダブルディスクチョッパー(DNA専用)

KSLChop_LowSingle

低速シングルディスクチョッパー

KSLChop_LowSingle_DNA

低速シングルディスクチョッパー(DNA専用)

KSLChop_T0

T0チョッパー

LSTempContEachHeater_350

温度コントローラーLS350

LSTempContEachHeater_350_DNA

温度コントローラーLS350(DNA専用)

LSTempCont_340

温度コントローラーLS340

LSTempCont_350

温度コントローラーLS350

SRSPg_DG645

パルスジェネレーター

Sample

サンプルデバイス(開発用)

TJCPmc04_1AxisGonio_SIK

1軸ゴニオメーター(四季専用)

TJCPmc04_2AxesCradle_ENG

2軸オイラークレイドル(匠専用)

TJCPmc04_4AxesSlit

4象限スリット

TJCPmc04_4AxesStand_ENG

4軸スリットスタンド(匠専用)

TJCPmc04_5AxesGonio_ENG

5軸ゴニオメーター(匠専用)

TJCPmc04_5AxesRadico_ENG

5軸ラジアルコリメーター(匠専用)

起動

手動起動

デバイス制御サーバーがインストールされたディレクトリにおいて以下のコマンドを実行する。

$ cd /opt/mlfsoft/iroha2/iroha-device-server
$ ./run.sh

サービスとしての起動

デバイス制御サーバーをサービスとして登録している場合、systemctlコマンドによるサーバーの起動・停止の管理が可能である。

# 起動
$ sudo systemctl start irhdevsrv
# 状態確認
$ sudo systemctl status irhdevsrv
# 再起動
$ sudo systemctl restart irhdevsrv
# 停止
$ sudo systemctl stop irhdevsrv

Web UIへのアクセス

サーバーを起動しているマシンからアクセスする場合、Webブラウザで以下のURLにアクセスする。

http://localhost:8085/home

サーバー外のマシンからアクセスする場合、localhostをサーバーのIPアドレスに変更する。

Web UI

デバイス制御サーバーの画面構成を Fig. 25 に示す。

Alternative Text

Fig. 132 デバイス制御サーバーのホーム画面

  • 画面は上部のメインメニューとメニュー依存コンテンツに分類される。

  • メニュー依存コンテンツには、画面左にサブメニューが表示される。

メインメニュー

画面上部のメインメニューは左から Table 54 に示す順番で表示される。

管理画面および監視画面

監視画面は青色ベースの配色で情報の閲覧のみを行うことができる。管理画面は緑色ベースの配色で設定を行うことができる。 サーバー、抽象デバイスそれぞれに監視、管理画面があり、メインメニューの各項目で切り替えることができる。 管理画面へのアクセスは サーバー管理画面:Server Setting で「Allowed Hosts(アクセス可能なクライアントIPアドレス)」を設定することで制限される。

Alternative Text

Fig. 133 メインメニューによる画面遷移

サーバー監視画面

サーバー監視画面は以下のサブメニューから構成される。

Table 55 サーバー監視画面サブメニュー

項番

項目名

説明

1

Home

登録されたデバイスのサマリと疑似スレッドの状態を表示する

2

Operation Log

サーバーの操作ログを表示する

サーバー監視画面:Home

Alternative Text

Fig. 134 サーバー監視画面:Home

サーバー監視画面には、登録デバイスの状態リストと擬似スレッド統計が表示される。 擬似スレッドとは、デバイス制御サーバーのサーバースレッドにより管理される「登録デバイスの周期的な処理を行う実行単位」である。 Table 56 に示す擬似スレッド統計により動作状況を知ることができる。

Table 56 疑似スレッド統計

項目名

説明

Device

デバイス・インスタンス名

Start

擬似スレッドの開始日付時刻

status

擬似スレッドの有効状態

interval

現在の動作周期

Count

現在の周期になってからの動作回数

MinProc

擬似スレッドの最小処理時間(秒)

AvgProc

擬似スレッドの平均処理時間(秒)

MaxProc

擬似スレッドの最大処理時間(秒)

TotalProc

擬似スレッドの処理時間の合計(秒)

MinInt

擬似スレッドの処理が行われるまでの最小間隔(秒)

AvgInt

擬似スレッドの処理が行われるまでの平均間隔(秒)

MaxInt

擬似スレッドの処理が行われるまでの最大間隔(秒)

TotalInt

擬似スレッドの処理が行われるまでの間隔合計(秒)

Lock

擬似スレッドとHTTPメッセージ処理の競合回数

Note

擬似スレッドの統計情報はIntervalの変更時にリセットされる。

サーバー監視画面:Operation Log

Alternative Text

Fig. 135 サーバー監視画面:Operation Log

サーバー操作ログの最新500件を表示する。 Filter で表示するログの種類を絞ることができる。

サーバー管理画面

サーバー管理画面は以下のサブメニューから構成される。

Table 57 サーバー管理画面サブメニュー

項番

項目名

説明

1

Edit Device

devices ディレクトリ内の抽象デバイスをインスタンス化して登録、変更、削除するためのメニュー

2

Thread Control

サーバースレッドの開始/停止、リセットおよびデバイス擬似スレッドの有効/無効を制御する

3

Server Setting

サーバー名、アクセス制御クライアント等の設定を行う画面

4

Development

開発サポート情報(サーバーモデルのデータベース)を表示する

5

Server Control

サーバーの制御を行う

サーバー管理画面:Edit Device

デバイス制御サーバー上のデバイス・インスタンスを登録、削除、編集する画面である。

Alternative Text

Fig. 136 サーバー管理画面:Edit Device

  • 新規のデバイスを追加するには、追加するデバイスのClassをドロップダウンリストで選択し、 newName のテキストボックスに追加する新しいデバイス名称を入力して Add ボタンを押下する。
    • すでに登録されているデバイス名は追加できない。

    • このデバイス名はXML制御インタフェースで利用されるため、URLとして使用できない文字列は指定できない。

  • 既存のデバイスを削除するには、削除するデバイスの右にある Delete ボタンを押下する。

  • 名称を変更する場合は新しいデバイス名を入力して Update ボタンを押下する。

サーバー管理画面:Thread Control

Thread Control画面ではサーバースレッドおよび擬似スレッドの制御を行うことができる。 擬似スレッドとは、デバイス制御サーバーのサーバースレッドが、 ラウンドロビンに実行する登録デバイスの周期的な処理を行う実行単位である。

Alternative Text

Fig. 137 サーバー管理画面:Thread Control

  • デバイス制御部の Begin / End ボタンは該当デバイスに対してXML制御メッセージのPost:Begin/Post:Endを送信する。
    • 測定中の場合には End ボタンが、未測定の場合には Begin ボタンが表示される。

  • Reset ボタンはDisconnect状態のデバイスをConnect状態とするために使用する(POST:Resetメッセージの送信)。
    • Reset の発行はどの状態にあってもConnecting 状態へ遷移させる。

  • Stop Params ボタンはParameterSetting/InProgress状態のデバイスをReadyに復帰させるために使用する(POST:StopParams メッセージの送信)。

  • スレッド制御部では、サーバースレッドの開始停止( Run Thread / Stop Thread ボタン)や擬似スレッドの有効、無効( Enable / DisableEnable AllDisable All ボタン)が制御できる。

  • Run ThreadStop Thread はサーバースレッドを開始、停止する。
    • サーバースレッドが停止中は Run Thread ボタン、実行中は Stop Thread ボタンが表示される。

    • サーバースレッドが停止すると全デバイスが処理を停止する。

  • Enable All ThreadDisable All Thread はすべての擬似スレッドを有効、または無効にする。

  • 各デバイスの右にある EnableDisable ボタンは個々のデバイス擬似スレッドを有効、無効状態にする。

  • デバイススレッドが制御されると、デバイスはリセットされた場合と同様にConnectingに遷移する。
    • スレッド統計情報については Table 56 を参照のこと。

サーバー管理画面:Server Setting

Server Setting 画面では、以下の編集ができる。

  • デバイス制御サーバー名(Server Name)

  • デバイス接続に失敗したときのリトライ数(Maximum Retry Count for Device Conneting)

  • Web UI の更新間隔(Web UI Update Interval (sec))

  • ログ抑制回数(Measurement Logging Suppression)

  • メッセージ通信の有効/無効(Enable Sending to Message Server)

  • Redis サーバーの接続先(Redis Server Address:Port)

  • アクセス許可ホスト(Allowed Hosts)

Save ボタンを押下すると内部の設定を変更し、サーバー設定ファイル( irhdevsrv.xml )の内容を書き換える。

Alternative Text

Fig. 138 サーバー管理画面:Server Setting

Note

Python redisがインストールされていない場合、メッセージ通信の有効/無効およびRedisサーバーの接続先の入力は非活性となり変更できない。

サーバー管理画面:Development

Development 画面にはサーバーの開発用にサーバーモデル( irhdevsm.py )のデータベース内容を表示している。

サーバー管理画面:Server Control(バージョン2.7以降)

Server Control 画面では、Web UIからのデバイス制御サーバー停止を実行することができる。 この画面の Stop Server ボタンを押下することでサーバーが停止する。

Alternative Text

Fig. 139 サーバー管理画面:Server Control

デバイス監視画面

デバイス監視画面は以下のサブメニューから構成される。

Table 58 デバイス監視画面サブメニュー

項番

項目名

説明

1

<デバイス名>

デフォルトではInformation と同じ内容を表示する。

2

Information

devinfo.tpl から生成されたデバイスの状態を表示する。

3

Status

devstatus.tpl から生成されたデバイスの状態を表示する。

4

Params

params.tpl から生成されたデバイスの設定項目を表示する。編集は管理画面から行うことができる。

5

Measurement Log

測定ログを表示する。

6

Measurement Graph

測定ログをグラフ化して表示する。

7

Surveillance Log

監視ログを表示する。

8

Operation Log

操作ログを表示する。

デバイス監視画面:<デバイス名>

デバイス監視画面メニューのデバイス名表示部分は、デバイス毎にカスタマイズされるべきHome画面で、 デフォルトではInformationと同一の内容を表示している。

デバイス監視画面:Information

デバイス監視画面:Informationには該当デバイスで定義されている devinfo.tpl から生成された構成情報が表示される。 Name が要素名、 Update は該当要素の更新時刻、 Value は値を表示している。

デバイス監視画面:Status

デバイス監視画面:Statusには該当デバイスで定義されている devstatus.tpl から生成されたデバイスの状態情報が表示される。 この状態情報はデバイスが定周期に収集したデバイスの情報を元に更新される。 Name が要素名、 Update は該当要素の更新時刻、 Value は値を表示している。

デバイス監視画面:Params

デバイス監視画面:Paramsには該当デバイスで定義されている params.tpl から生成されたデバイスの設定情報が表示される。 この設定情報はユーザがブラウザの更新ボタンで更新しない限り更新されない。 Name が要素名、 Update は該当要素の値(text)の更新時刻、 Value は値を示す。

デバイス監視画面:Measurement Log

デバイス監視画面:Measurement Logには該当デバイスの測定ログの最新500件が時刻逆順でリスト表示される。 この情報はユーザがブラウザの更新ボタンで更新しない限り更新されない。 測定ログに記録される項目は、 デバイス管理画面:Edit Logging で編集する事ができる。

デバイス監視画面:Measurement Graph

この画面では該当デバイスの測定ログが時系列グラフとして可視化される。 測定ログに記録される項目は、 デバイス管理画面:Edit Logging で編集する事ができる。 Step、MaxPlots、Filterの設定が保存されるようになり、更新ボタンを押下すると devsetting/saveデバイス名.measgraph.xml という名前のファイルに保存される。

Alternative Text

Fig. 140 デバイス監視画面:Measurement Graph

デバイス監視画面:Surveillance Log

この画面には該当デバイスの監視ログの最新500件が時刻逆順でリスト表示される。 この情報はユーザがブラウザの更新ボタンで更新しない限り更新されない。 監視ログに記録される項目は、デバイスの devstatus.tpl でlogging=”on”の属性を持つものである。

デバイス監視画面:Operation Log

この画面にはデバイス操作ログの最新500件が時刻逆順でリスト表示される。

デバイス管理画面

デバイス管理画面は以下のサブメニューから構成される。

Table 59 デバイス管理画面サブメニュー

項番

項目名

説明

1

Edit Params

params.tpl から生成された設定パラメータの編集画面。この情報は実デバイスアクセス時(Connect中)に読み出して初期化されるため保存されない(サーバー再起動すると初期化される)。

2

Edit DevInfo

devinfo.tpl から生成されたデバイス構成情報を編集する。この情報は iroha-settings/deviceのdevinfolist.xml に登録全デバイス・インスタンス分が保存される。

3

Edit Logging

ログファイルパス、監視ログ取得項目などログに関わる設定を行う。

4

Development

開発サポート情報で、抽象デバイスモデルのデータ等を表示する。

デバイス管理画面:Edit Params

デバイスの params.tpl で定義した値を設定することができる。 変更した値は Save ボタンで保存する。 値を変更できるのは、状態がReadyの場合のみである。 デバイス状態がParameter Setting、InProgress中には更新前の値が表示される。 ここでの編集結果は devsetting/saveデバイス名.reqparams.xml ファイルに保存される。 入力無効状態(デバイスがReady状態でない場合)はReadyになるまで表示が自動更新される。 また、本画面にデバイスの状態情報が表示される。

Note

Paramsは通常デバイスから読みだして初期化されるが、フィードバックのようにデバイスの実体がない抽象デバイスや、 デバイスから読み出せないパラメータがあるために保存されている。 サーバー起動時に初期化データとして読み込まれる。

デバイス管理画面:Edit DevInfo

デバイスの devinfo.tpl で定義された情報を編集することができる。 編集結果は devinfolist.xml 内の該当デバイスタグ内に保存される。 本情報を編集した場合はサーバー本体の再起動が必要となる場合がある。

デバイス管理画面:Edit Logging

この画面ではログパスの編集と測定ログの取得項目を編集することができる。

Alternative Text

Fig. 141 デバイス管理画面:Edit Logging(パス編集部)

操作、監視、測定の各ログのパスを変更して Save ボタンを押下することでログのパスを変更することができる。 ログパスが変更されると新たなログファイルが生成され、変更時点からのログが記録される。

Note

Measurement Logのパスは装置管理サーバーでの設定が反映され、測定ごとに自動的に更新される。

Alternative Text

Fig. 142 デバイス管理画面:Edit Logging(測定ログ編集部)

測定ログの編集は devstatus.tpl で定義された監視ログの対象項目から測定ログに記録する項目を選択する機能である。 この編集結果は devsetting ディレクトリの saveデバイス名.devstatus.xml ファイルに保存される。

Table 60 測定ログ設定項目

項目名

説明

Status Element

devStatus.tpl に定義されているテキスト要素をもつ要素タグ名

Name

測定ログの表示名

Meas

チェックすると測定ログ項目となる

type

int、float、string のいずれかを選択する

unit

値の単位を指定する。単位は表示

range

タイプがint、floatの場合に値の最小値、最大値、ステップを次の書式で指定する。
[min]:[max]:[step]
文字列の場合は、取りうる文字列を:で区切る。

Note

デバイスインスタンス作成時に測定ログに記録する状態(Measがチェックされている状態)をデフォルトとしたい場合、 抽象デバイスの devstatus.tpl の対象要素にlogging=”on”およびmeasLog=”on”の属性を追加する必要がある。

デバイス管理画面:Development

この画面にはサーバーの開発用にサーバーモデル( irhdevsm.py )のデータベース内容を表示している。 この内容についてはサーバーモデルのソースコードを参照のこと。

メッセージ通信

RedisのPublisher/Subscriber方式を利用してリアルタイムデータ送信をおこなう機能である。 デバイス制御サーバーは送信側(Publisher)であり、受信側(Subscriber)のプログラムを用意することで、 ファイルを介さずにデータを受信することができる。

メッセージ通信の有効化とRedisサーバー接続先の設定

サーバー管理画面:Server Setting で、メッセージ通信の有効化とRedisサーバー接続先を設定することができる。 なお、python redisがインストールされていない環境では、メッセージ通信の有効化とRedisサーバー接続先の設定ができない。 python redisは以下のコマンドでインストールする。

$ pip install redis

チャンネル名の変更

メッセージ通信が有効になっている場合、各デバイス・インスタンスのデバイス構成情報には、「redisChannelName」要素が追加されている。 デフォルトの値は、「irhdevsrv_<デバイス・インスタンス名>」である。 この要素に設定されている値をRedis Publisher/Subscriber のチャンネル名として利用する。 チャンネル名を変更する場合、デバイス管理画面:Edit DevInfo で「redisChannelName」要素の値を変更する。 なお、測定中に変更した場合は、次の測定からチャンネル名が反映される。

データの送信

測定を開始すると、Redis サーバーにMeasurement Logと同じフォーマットのデータを送信する。 Subscriber 側のプログラムでは、既存のXML制御インタフェース「GET:Status」を利用することで、 デバイス測定ログのログ項目を確認することができる( GET:Status )。 送信間隔も、デバイス測定ログの記録間隔と同様である。

XML制御インターフェース

概要

デバイス制御サーバーはXML制御インタフェースをもち、リモート機器から監視、制御することができる。 XMLメソッドリストを Table 61 に示す (:の前のGET、POSTはHTTPメソッド名、:の後ろはデバイス制御サーバーメソッド名を示す)。

Table 61 XMLメソッドリスト

項番

メソッド名

機能

1

GET:/

デバイス制御サーバーのデバイスリストを取得する

2

GET:Status

デバイス状態を取得する

3

GET:Params

デバイス設定を取得する

4

POST:Params

デバイス設定を行う

5

POST:StopParams

デバイス設定を中止する

6

POST:Reset

デバイスをリセットする

7

GET:Config

デバイスの構成情報を取得する

8

POST:Begin

デバイスを測定開始にする

9

POST:End

デバイスを測定停止にする

要求メッセージ

デバイス制御サーバーへの要求はHTTPのGETまたはPOSTのメソッドを以下のURLに対して発行することで行うことができる。 ただし、GET:/はデバイス制御サーバーへの要求なので、deviceNameは必要ない。

http:/serverHost:serverPort/deviceName/deviceMethod

Table 62 XML制御要求メッセージURLフィールド

項番

パラメータ

機能

1

serverHost

デバイス制御サーバーのホスト名またはIPアドレス

2

serverPost

デバイス制御サーバーのポート番号(デフォルトは8085)

3

deviceName

登録されたデバイス・インスタンス名

4

deviceMethod

デバイス制御サーバーメソッド名。Status、Params、StopParamsなど

要求メッセージでBODYが必要なメッセージはPOST:Params、POST:Begin の2つである。 以下にXML制御インタフェースの要求BODY書式を示す。

<?xml version="1.0" encoding="UTF-8" ?>
<request>
    {{messageBody}}
</request>

応答メッセージ

要求を発行するとデバイス制御サーバーから応答メッセージが返される。 応答メッセージにはかならずBODY(文字列)が付与されている。 BODYは以下に示す書式の形式となっている。

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <methodName>{{ method }}</methodName>
    <returnValue>
        <result>
            <status>{{ status }}</status>
            <code> {{ code }}</code>
            <methodName />
            <message />
        </result>
    {{ messageBody }}
    </returnValue>
</response>

{{ }} で囲まれた部分の内容はメソッドに依存する。

Table 63 XML制御応答メッセージBODY書式の内容

フィールド名

内容

method

メソッド名のGET:/POST:を除いた部分が入る。GET:Statusの場合はStatusとなる。

status

成功した場合はOK、失敗した場合にはNGが入る。

code

デバイス制御サーバー状態とXML制御メソッドおよび処理結果により定義された値( Fig. 143

messageBody

XML 制御メソッド毎に異なる値が入る。不要な場合は省略される。

各メソッドの機能

GET:/

デバイス名のリストを取得する。要求側にBODYは必要ない。 応答のmessageBodyには<names>要素内に定義された抽象デバイス・インスタンス名のリストが<name>要素として入る。 以下に応答の例を示す。

<names>
    <name>testLs340</name>
    <name>testSample</name>
</names>

GET:Status

デバイス状態を取得する。要求メッセージにBODYは必要ない。 応答messageBodyには抽象デバイス毎に devStatus.tpl テンプレートとして定義されるXML要素と取得年月日を示す<date>要素が入る。 定周期動作により制御対象デバイスから読み出された値が反映され、書き換えはできない。 本メソッドが呼び出された場合、デバイス操作ログに呼び出された旨とその結果を出力するが、 バージョン1.8 以降では、正常に処理した場合に限り出力しない。

GET:Params

デバイス設定を取得する。要求メッセージにBODYは必要ない。 messageBodyには抽象デバイス毎に params.tpl テンプレートとして定義されるXML要素が入る。 POST:Paramsにより設定された値について、制御対象デバイスへの設定が終了してReady状態になるまで元の値が表示される。 本メソッドが呼び出された場合、デバイス操作ログに呼び出された旨とその結果を出力するが、 バージョン1.8 以降では、正常に処理した場合に限り出力しない。

POST:Params

デバイス設定を行う。要求側のBODYには設定するparams要素を指定する。 paramsの内容は抽象デバイスの params.tpl で定義されている。 messageBodyにも params.tpl テンプレートとして定義されるXML要素が入る。 params.tpl には値検査の属性が定義されている。 デバイス制御サーバーではPOST:Params等の設定時にこれらの属性を元に値の正常性が検査される。 送信メッセージ内にはこの属性は必要はない。またこれらの属性を設定することはできない。

POST:StopParams

デバイス設定を中止する。要求メッセージにBODYは必要ない。 POST:ParamsによりParameterSetting/InProgress状態にあるデバイスをReadyに戻す。 応答メッセージにmessageBodyはない。

POST:Reset

デバイスをリセットしてConnecting状態とする。要求メッセージにBODYは必要ない。 このメッセージの受信により、抽象デバイスは制御対象デバイスと再接続し、内部情報を初期化する。 Disconnect状態のデバイスを再接続させるためにはPOST:Resetする必要がある。

GET:Config

デバイスの構成情報を取得する。要求メッセージにBODYは必要ない。 応答のmessageBodyには抽象デバイス毎に devinfo.tpl として定義される構成情報が入る。 この情報はXML制御インタフェースで書き換えることはできない。 本メソッドが呼び出された場合、デバイス操作ログに呼び出された旨とその結果を出力するが、 バージョン1.8 以降では、正常に処理した場合に限り出力しない。

POST:Begin

デバイスを測定開始にする。要求メッセージにBODYは必要ないが、 logMeasPath要素を指定することで、測定ログのパスを変更することができる。 測定状態では、 devinfo.tpl で定義されたデバイス構成情報intervalMeasurementまたは intervalInProgressの間隔でデバイスデータの収集を行い、測定ログを記録する。 messageBodyがない場合は、デフォルトまたはそれ以前に設定されていた測定ログファイルに続けてログを取得する。 bodyにlogMeasPath要素が指定されている場合は新たにログファイルを作成して測定ログの記録を開始する。 パスはファイル名を含む形式となる。 以下に要求メッセージmessageBodyの例を示す。

<params>
    <logMeasPath>/DATA/Logs/RunXXXLog</logMeasPath>
</params>

Note

デバイス構成情報にintervalMeasurementが定義されていれば、InProgress状態でない限りintervalMeasurementの間隔となる。 InProgress状態である場合またはintervalMeasurementが定義されていない場合は、intervalInProgressの間隔となる。

POST:End

デバイスを測定停止して未測定状態とする。要求メッセージにBODYは必要ない。 未測定状態では、 devinfo.tpl で定義されたintervalReady(秒)の間隔でデバイスデータの収集を行う。 測定ログの記録は停止される。

メッセージコード

応答メッセージ内のcode内の値定義を Fig. 143 に示す(色付きセルは0以外のコード定義部分)。 通常動作でOKの場合はコード0を返す。コード0の場合にはメッセージはない。 その他の場合はデバイス状態、受信XMLメッセージ種別に応じて以下の3桁のコードを返す。 なお状態値=0ではじまる3桁のコード数字はサーバーで検出したエラーとなる。

<状態値0-6><メッセージ種別><状態メッセージに対応したコード>

Alternative Text

Fig. 143 状態遷移とXMLメッセージコード

Note

現在のフレームワークでは<状態メッセージに対応したコード>は0で成功、1で失敗のみが使用されている

Table 64 メッセージコード及びメッセージ

code

メッセージ

001

device <デバイス名> not found

121

State Error Connecting / GET : Params

131

State Error Connecting / POST: Params

141

State Error Connecting / POST : StopParams

171

State Error Connecting / POST: Begin

181

State Error Connecting / POST : End

231

Parameter Error ( 詳細情報 )

271

Parameter Error ( 詳細情報)

280

Already End

331

Parameter Error ( 詳細情報 )

370

Already Begun

371

Parameter Error ( Log Path Error )

420/520

Note: Parameter Currently Updating

431/531

State Error (ParameterSetting | InProgress) / POST: Params

471/571

State Error (ParameterSetting | InProgress) / POST: Begin

481/581

State Error (ParameterSetting | InProgress) / POST: End

621

State Error Disconnected / GET: Params

631

State Error Disconnected / POST : Params

641

State Error Disconnected / POST : StopParams

671

State Error Disconnected / POST : Begin

681

State Error Disconnected / POST : End

ログファイル

ログファイルには、サーバーログ(デバイス制御サーバー本体のログ)とデバイスログがある。 サーバーログはサーバーの実行プロセスごとに操作ログが1つ作成される。 デバイスログは登録されている抽象デバイスのインスタンス毎に操作、監視、測定ログが1つずつ作成される (ファイルの数はログを取得する時間に依存して増える)。 操作、監視、測定ログは日付を跨ぐと、ファイル名に .YYYY-mm-dd が追加されてローテイトする。

サーバーアクセスログ

サーバーアクセスログは、サービスとして起動した場合には以下のパスに作成される(8085 は起動ポート番号)。 パス設定はサービススクリプトに定義されている。 取得しない場合は /dev/null などに指定しなおす必要がある。

/tmp/irhdevsrv.8085.log

バージョン2.6までは起動するたびにこのファイルは上書きされるが、 バージョン2.7以降は起動時の日時をファイル名に付与して起動ごとにファイルを残すようにしている。 その場合のファイル名は以下のようなフォーマットとなる。

/tmp/irhdevsrv.ポート番号.YYYYmmdd-HHMMSS.log

Note

コンソールから起動した場合は起動コンソールに出力される。

サーバー操作ログ

サーバー操作ログは サーバー設定 で設定されたファイルパスに作成される。 サーバー本体に対する操作やエラー情報などが記録される。 通常デバイス制御サーバーに対する操作の多くは、各デバイスのデバイス操作ログに記録される。 デフォルトでは以下のパスに記録される。

/tmp/logoper<デバイス制御サーバー名>

デバイス操作ログ

デバイスに対する操作や状態遷移などが記録される。 デフォルトでは以下のパスに作成される。

/tmp/logoper<デバイス・インスタンス名>

デバイス監視ログ

devstatus.tpl でlogging指定された項目が記録される。 未測定中は devinfo.tpl で定義されているintervalReadyで、測定中はintervalMeasurementで収集される。 ただし、測定中でも、InProgress状態になった場合や、intervalMeasurementが定義されていない場合は、 intervalInProgressで収集される。 デフォルトでは以下のパス名で作成される。

/tmp/logsurv<デバイス・インスタンス名>

デバイス測定ログ

測定ログは、測定中のみ(デバイスのBegin後からEndまで)記録される。 記録間隔は devinfo.tpl で定義されているIntervalMeasurementで収集される。 ただし、InProgress状態になった場合や、intervalMeasurementが定義されていない場合は、 intervalInProgressで収集される。 デフォルトでは以下のパスに生成される。

/tmp/logmeas<デバイス・インスタンス名>

ログ機能のオプション

ログ機能は上記のデフォルト動作のほかに、 devinfo.tpl にXML 要素を追加することで次のような動作に変更することが出来る。 測定ロググラフを常に動作させてグラフを閲覧する場合(監視ログの無効化、起動オプションのbeginと併用)、 ログファイルをEXCELなどで処理する場合(ログヘッダの付与)に有効である。 このオプション設定を devinfo.xml に追加した場合は、デバイス・インスタンスを一度削除し、 デバイス制御サーバーを再起動する必要がある。 デバイス・インスタンスは devinfolist.xml に元の仕様のまま保存されるため、XML要素の追加は有効にならない。 devinfolist.xml の値を変更するとログファイル名称変更及びデバイス制御サーバーの再起動で設定済みインスタンスの動作を変更できる。 ログファイルは以前のファイルが残っていた場合は追記されるため、ヘッダは次のログローテーション(日付の変わるタイミング)まで付与されない。

  • 監視ログの無効化

  • 監視ログヘッダの付与

  • 測定ログヘッダの付与

Table 65 ログ機能のオプション

要素名

説明

追加書式

intervalMeasurement

測定中のログ記録間隔をこの要素で指定した値の秒数に設定する。この要素がない場合、ログ記録間隔はintervalInProgressの値となる。

<intervalMeasurement> 5 </intervalMeasurement>

logSurvDisable

監視ログを取得しない。監視ログはデバイスが有効な状態で常に取得される。このログが不要の場合にyesに設定するとこの機能が停止する。この要素がない場合、監視ログはEnableとなる。

<logSurvDisable> yes </logSurvDisable>

logMeasHeader

測定ログの先頭にログヘッダを追加する。値をon 以外にするとヘッダは記録されない。

<logMeasHeader> on </logMeasHeader>

logSurvHeader

監視ログの先頭行にログヘッダを追加する。値をon 以外にするとヘッダは記録されない。

<logSurvHeader> on </logSurvHeader>

ログフィルターの設定(バージョン2.7以降)

サーバー監視画面:Operation Logとデバイス操作ログ画面では Filter でログの種類を絞って表示することができるが、 加えて特定の文字列を含むメッセージを非表示にすることができる。 iroha-settings/device/log_msg_filter.json にフィルターする文字列を定義する。

Operation Logの設定

oper_log キーのリストに文字列を追加する。文字列は正規表現に対応している。 複数の文字列を登録する場合にはカンマ(,)区切りで追加していく。

{
    "oper_log": [
        "message a",
        "message b"
    ],
    ...
}

デバイス操作ログ画面

dev_oper_log キーの辞書のキーにデバイス名を追加し、デバイス名のキーのリストに文字列を追加する。 文字列は正規表現に対応している。複数の文字列を登録する場合にはカンマ(,)区切りで追加していく。

{
    ...
    "dev_oper_log": {
        "Sample": [
            "message a",
            "message b"
        ],
        "Chopper": [
            "message c"
        ],
        "TempCont": [
            "message d"
        ]
    }
}