#!/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()