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


Ignore:
Timestamp:
08/30/18 19:05:33 (7 years ago)
Author:
Tetsuya Michikawa
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