i-Reporter(アイレポーター)からのリクエストを PHP で処理するため PHP クラス・ライブラリです。
以下のサイトからダウンロードすることができます。
https://codeberg.org/ikenjio/i-Reporter_PHP-GW.git
i-Reporter(アイレポーター)からのリクエストとは
ここでいう i-Reporter からのリクエストとは、アクション・クラスタの [アクション種別] を ”Gateway連携” にした場合に、一般的には ConMas Gateway に送信されるリクエストを指します。
ここで紹介する PHP クラス・ライブラリは、ConMas Gateway の代わりに PHP 処理系で、このリクエストを処理するためのものです。
PHP を使う利点
周知のとおり ConMas Gateway で使える処理系は Python のみです。
ConMas Gateway の代わりに PHP を使用することによる恩恵には以下のようなものがあります。
- PHP は、同条件では Python に比べて圧倒的に高速である
- ConMas Gateway は実質的に Windows 上でしか動作しません。これを PHP 処理系で代替することによりプラットホームの選択肢が広がります。結果下図のような構成も可能になります
i-Reporter から PHP 経由で PLC や リモートIO をアクセスするシステムについては今後投稿させていただきます(あくまで予定です)。
i-Reporter 側の設定
リクエストを ConMas Gateway ではなく PHP 処理系に送信するには、i-Reporter の定義にて以下のように設定します。
- 当然ですが、アクション・クラスタの [アクション種別] を ”Gateway連携” にする
- [URL] に目的とする PHP スクリプトの URL を設定する
これだけです。
ただし、後述する class iReporter は、今のところは ”POST” しか処理できません。
class iReporter
public function __construct($msg = '')
- i-Reporter からのリクエストを入力し、入力したデータを内部テーブルに展開します
- 引数 msg にファイルのパスを指定すると、i-Reporter からの入力の代わりにこのファイルからJSONを入力します。引数 msg は、i-Reporter を使用せずにオフライン・でのテストなどを行う場合に使用します
public function saveMsgJson($path)
- i-Reporter から入力したデータを path で指定されたファイルに出力します。出力されるデータは JSON です
public function errorResponce($msg)
- i-Reporter に msg で指定されたテキストを送信します。i-Reporter はこのテキストをエラー・メッセージとして処理します
- errorResponce は msg で指定されたテキスト以外に意味のあるデータを送信しません
- errorResponce は i-Reporter へのデータ送信後にスクリプトを終了させます
public function flushResponce()
- i-Reporter にデータを送信します
- 送信されるデータは、後述する setClusterValue で内部テーブルに納められたすべてのデータです
public function getClusterValue($clusterId, $sheetNo = 1, $offset = 0)
- 入力データから、クラスタの値を取得します
- clusterId はクラスタIDです。getClusterValue は clusterId が示す ID が示すクラスタの値を返します
- sheetNo は当該クラスタが配置されたシート番号です。先頭のシートの番号は 1 です
- getClusterValue は offset を clusterId に加えます。ID の値が等しい差で並ぶクラスタを連続して処理する場合などに使用されます
public function getClusterValueByName($name, $sheetNo = 1, $offset = 0)
- getClusterValueByName は name が示すクラスタの値を返します
- name は任意に設定されたクラスタの名称です。これは、i-Reporter から送信されるクラスタに付与された「名称」ではありません
- getClusterValueByName は name を clusterId に変換します。この変換には後述する getClusterId が使用されます
public function setClusterValue($clusterNo = 0, $value = '', $type = self::defaultType, $sheetNo = self::defaultSheetNo, $offset = 0, $item = self::defaultItemName)
- i-Reporter に送信するクラスタ・データを内部テーブルに追加します。i-Reporter はこのデータを該当するクラスタに表示します
- clusterNo はクラスタIDです
- value はクラスタに表示されるデータです
- type はクラスタのタイプです
- sheetNo は当該クラスタが配置されたシート番号です
- setClusterValue は offsett を clusterId に加えます。ID の値が等しい差で並ぶクラスタを連続して処理する場合などに使用されます
- item は送信メッセージ上のクラスタに付与される任意の名称です。処理上の意味を持ちません
public $clusterIdTable = [];
- メンバ変数 clusterIdTable は後述する getClusterId により参照されます
- getClusterId や getClusterValueByName を使用しない限り、このデータは意味を持ちません
- clusterIdTable には必要に応じて連想配列を設定します
<?php
require_once 'iReporter.php';
$iReporter = new iReporter();
$iReporter->clusterIdTable = [
'開始日時' => 19,
'終了日時' => 21,
'製造数' => 22,
];
echo strval($iReporter->getClusterId('製造数')); // 22
- 連想配列のキーはクラスタの名前ですが、これは、i-Reporter から送信されるクラスタに付与された「名称」ではありません。サーバ・サイドで使用されるクラスタの名称は、サーバ・サイド独自で任意に設定することができます
public function getClusterId($name)
- name で指定された名前をクラスタIDに変換します
- 変換には前述の clusterIdTable が使用されます
