85 lines
3.3 KiB
Python
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()
|