eis/py/glitch/main.py

85 lines
3.3 KiB
Python

#!/users/dsc/binp/Python3
#-*-coding: UTF-8 -*-
import json
import Ice
import IcePy
import signal,sys
import MessageICE_ice
import time
import logging as d
from log.LogUtil import LogUtil
from glitch.glitch_model import GM
from datetime import datetime
module_name="glitch"#本模块名
_M_baosight = Ice.openModule('baosight')
class GlitchICEI(MessageICE_ice._M_baosight.MessageICE):
def __init__(self):
self.a=0
self.gm=GM()
self.rule_state_={}
def SendDataShort(self, eventNo, seq, length, context=None):
t_start=datetime.now()
d.info("eventNo:"+str(eventNo))
d.info("seq:"+str(seq))
js1=json.loads(seq.decode('utf-8'))
d.info(js1)
res=self.gm.dispose(ruleid=js1["ruleid"],rulename=js1["name"],
alarm_content=js1["alarm_content"],
stime=js1["stime"],endtime=js1["etime"],th=js1["glitch_per"])
if res is not None:
seq=str(json.dumps(res, ensure_ascii=False))
self.Send2Proxy(proxy_name="eqpalg-mon",eventNo=11111,seq=bytes(seq,encoding="utf-8"),length=len(seq))
d.debug("alarm!"+str(res))
self.rule_state_["lb"]=self.gm.limit_down
self.rule_state_["ub"]=self.gm.limit_up
self.rule_state_["va"]=self.gm.current_value
self.rule_state_["ruleid"]=js1["ruleid"]
self.rule_state_["stime"]=js1["stime"]
self.rule_state_["etime"]=js1["etime"]
d.debug(self.rule_state_)
seq=str(json.dumps(self.rule_state_, ensure_ascii=False))
d.debug(seq)
self.Send2Proxy(proxy_name="eqpalg-mon",eventNo=22222,seq=bytes(seq,encoding="utf-8"),length=len(seq))
t_end=datetime.now()
cost_second=(t_end-t_start).total_seconds()
d.debug("cost {}s".format(cost_second))
def SendDataLong(self, eventNo, seq, length, context=None):
d.info("eventNo:"+str(eventNo))
def TimeNotify(self, eventNo, seq, length, context=None):
d.info("eventNo:"+str(eventNo))
def Send2Proxy(self, proxy_name,eventNo, seq, length, context=None):
with Ice.initialize(sys.argv) as communicator:
base = communicator.stringToProxy("baosight/{}".format(proxy_name)).ice_oneway().ice_secure(False)
proxy = _M_baosight.MessageICEPrx.uncheckedCast(base)
if not proxy:
d.error("invalid proxy")
sys.exit(1)
d.info("send {seq} to {proxy_name}".format(seq=seq,proxy_name=proxy_name))
proxy.SendDataShort(eventNo, seq, length)
if __name__ == '__main__':
LogUtil.init(module_name)
default={
"identity":"baosight/{}".format(module_name),#identity
"adapterName":"DefaultAdapter",
"endpoints":"tcp",
"entry":GlitchICEI()
}
with Ice.initialize(sys.argv) as communicator:
print("start")
properties = communicator.getProperties()
adapter = communicator.createObjectAdapterWithEndpoints(default["adapterName"],default["endpoints"])
identity = properties.getProperty("Identity")
if identity == None or identity == "":
identity = default["identity"]
print("identity" + identity)
id = Ice.stringToIdentity(identity)
adapter.add(default["entry"], id)
adapter.activate()
communicator.waitForShutdown()