Changes between Initial Version and Version 1 of misc/botlog_pas/modify


Ignore:
Timestamp:
08/30/18 19:05:33 (11 months ago)
Author:
michkawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/botlog_pas/modify

    v1 v1  
     1= 詳細設定 = 
     2 
     3インストールした状態でも一般的な使用は可能なので、そのまま使っても問題はないが、修正する場合の変更点を記述する。[[br]] 
     4botlog,PrintAnyServer共に設定を変更した際には、必ずhttpdを再起動する必要がある。 
     5 
     6{{{ 
     7[root@localhost ~]# service httpd restart 
     8Stopping httpd:                                            [  OK  ] 
     9Starting httpd:                                            [  OK  ] 
     10}}} 
     11 
     12== botlog == 
     13 
     14=== DB === 
     15 
     16デフォルトでは、sqlite3が動作確認用DBとして設定されている。[[br]] 
     17sqlite3のDBは単一ファイルなので、ファイルの保存ディレクトリを変更すればいい。[[br]] 
     18 
     19{{{ 
     20    # sqlite3用DB設定 
     21    def getSqlite3Cfg(self): 
     22        # file: db file 
     23        #       dbファイルのフルパスを設定 
     24        #       * 作成したファイルとファイルのあるディレクトリのパーミッションは"777"にしておくか 
     25        #         Webサーバーのユーザー(通常はapache/apache)が読み書きできるようにしておくこと 
     26        return {'file':'/opt/OperationLog/data/botlog/db/sqlite3/botlog.sqlite3'} 
     27}}} 
     28 
     29コメントにも書いてあるように、DBファイルとディレクトリのパーミッションは"777"にしないと動作しなくなるので注意。[[br]] 
     30 
     31DBをPostgreSQLに変更する場合には、 
     32 
     33{{{ 
     34    # DB種別設定 
     35    def getDbCfg(self): 
     36        # type: [ sqlite3 | postgresql ] 
     37        #return {'type':'sqlite3'} 
     38        return {'type':'postgresql'} 
     39 
     40 
     41    # postgresql用設定 
     42    # userは設定しないとhttpd user(apache)で書き込むので、 
     43    # DB管理用ユーザー(作成ユーザー)を設定すること 
     44    def getPostgresqlCfg(self): 
     45        return {'host':'localhost',  <-- DBホスト 
     46                'port':5432,         <-- 接続ポート番号 
     47                'db':'botlog',       <-- DB名(これは変えなくてもいい) 
     48                'user':'logoper',    <-- DB接続ユーザー名 
     49                'passwd':''}         <-- DB接続パスワード 
     50 
     51}}} 
     52 
     53の設定を変更する。[[br]] 
     54PostgreSQL自体の設定はここでは説明しない。 
     55 
     56=== セクション(グルーブ)設定 === 
     57 
     58セクション名の設定は、SQLを直接実行するか、{{{/opt/OperationLog/botlog/sql/[sqlite3|PostgreSQL]/section.sql}}}を編集したデータを各DB用のコンソールから設定する。[[br]] 
     59但し、idが0,1は特別な意味を持っているので、設定は変更しないこと。[[br]] 
     60 
     61データがない初期状態ならば、テーブルを一括で作成するスクリプトを作成しているので、それを利用すると一括でテーブルを再構築する。[[br]] 
     62'''このスクリプトは一度全てのテーブルを削除するので、消してもいいデータしかない場合以外は実行しないこと。'''[[br]] 
     63 
     64 * sqlite3 の場合 
     65{{{ 
     66[user@localhost ~]$ /opt/OperationLog/botlog/sql/sqlite3/createTable.sh /opt/OperationLog/data/botlog/db/sqlite3/botlog.sqlite3 
     67}}} 
     68 
     69 * PostgreSQLの場合 
     70 
     71 PostgreSQLの場合には、DBへ接続するための設定をシェルスクリプト内に記述してから実行すること。 
     72 
     73 {{{ 
     74[user@localhost ~]$ /opt/OperationLog/botlog/sql/PostgreSQL/createTable.sh 
     75 }}} 
     76 
     77テーブルがない状態でこれらのスクリプトを起動すると、いくつかエラーが表示されるが、無視してもいい。 
     78 
     79 
     80 
     81=== その他の設定 === 
     82 
     83基本的な設定以外にも、[wiki:misc/botlog_pas/client_download クライアント用プログラムのダウンロード機能]と[wiki:misc/botlog_pas/printer 同時印刷機能]があるが、これらは別ページで解説する。 
     84 
     85 
     86== EPICS record monitor == 
     87 
     88EPICS record monitor は、botlog用Web APIを使用した外部プログラムで、登録されているEPICSレコードに変化があった場合、botlogに自動的にメッセージを登録する。[[br]] 
     89監視するレコードとメッセージの関連付けは、pythonで記述し、1メッセージにつき、1ファイルを作成する必要がある。[[br]] 
     90 
     91プログラム本体は、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor}}}の{{{epicsRecordMonitor.py}}}で、各設定は{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に設定する。 
     92 
     93=== 設定ファイル === 
     94 
     95設定ファイルは、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/test_ermi.py}}}をひな型にして作成し、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に保存すれば、{{{epicsRecordMonitor.py}}}を起動した際に読み込まれ、実行される。 
     96 
     97{{{ 
     98# -*- coding: utf-8 -*- 
     99# 
     100 
     101""" 
     102このプログラムを EPICS Record Monitor 定義のひな型として使用すること 
     103 
     104各設定に使用する場合に変更する箇所は、pvs変数とexecFunc関数 
     105クラス名は変更しないこと 
     106 
     107""" 
     108 
     109from epicsRecordMonitorItem import * 
     110 
     111# 
     112# 
     113# 
     114class ermi(epicsRecordMonitorItemIF): 
     115    # 
     116    # クラスコンストラクタ 
     117    # ここで使用するレコード名を設定 
     118    # 
     119    def __init__(self): 
     120        pvs = ['jane', 'fred']    # ここに使用するレコード名をリスト形式で設定 
     121        self.setPvs(pvs) 
     122 
     123    # 
     124    # メッセージ出力条件を記述 
     125    # 関数の引き数 pvs に関数実行時のデータが渡される 
     126    # データの形式は辞書型を含んだリストで、構造は以下のようになっている 
     127    # 
     128    # [ 
     129    #   { 
     130    #     'name'   : record name, 
     131    #     'prevVal': previos value, 
     132    #     'val'    : current value, 
     133    #     'time'   : record process time 
     134    #   }, 
     135    #     : 
     136    # ] 
     137    # 
     138    # リストの順番はコンストラクタで設定した順番 
     139    # 
     140    # 戻り値はメッセージのみを返すようにして、メッセージがない場合には None を返すこと 
     141    # 
     142    def execFunc(self, pvs): 
     143        janePv = pvs[0] 
     144        fredPv = pvs[1] 
     145 
     146        rtn = None 
     147        if janePv['val'] < fredPv['val'] and fredPv['prevVal'] != fredPv['val']: 
     148            rtn = "fred is over jane!!!" 
     149 
     150        return rtn 
     151 
     152}}} 
     153 
     154設定ファイルのチェック機能はまだ作成していないので、動作チェックは実際に動かしてみるしか方法が無い。[[br]] 
     155 
     156=== 動作確認 === 
     157 
     158動作テストは、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/test_ermi.py}}}を{{{Modules}}}にコピーして、プログラムを実行することで行う。 
     159 
     160{{{ 
     161[user@localhost ~]$ source /opt/OperationLog/etc/env.sh 
     162[user@localhost ~]$ cd /opt/OperationLog/botlog/tools/epicsRecordMonitor 
     163[user@localhost epicsRecordMonitor]$ cp test_ermi.py Modules 
     164[user@localhost epicsRecordMonitor]$ python2.7 epicsRecordMonitor.py 
     165}}} 
     166 
     167プログラムを実行すると、botlogに{{{Initial Disconnect Pvs:jane, fred}}}というメッセージが表示される。[[br]] 
     168一旦プログラムを終了し、{{{excas}}}を別画面で起動する。[[br]] 
     169再度プログラムを起動し、{{{test_ermi.py}}}に設定してある条件が満たされると、{{{fred is over jane!!!}}}というメッセージが追加される。[[br]] 
     170 
     171後は、{{{Modules/test_ermi.py}}}を削除してから、設定ファイルを作成後にプログラムを実行すれば、メッセージが自動的にbotlogに追加される。[[br]] 
     172このプログラム用の起動スクリプトは作成していないので、ユーザーが作成すること。 
     173 
     174