# coding=utf-8 import logging from apps.web.device.models import Device from apps.web.eventer import EventBuilder from apps.web.eventer.base import FaultEvent, WorkEvent logger = logging.getLogger(__name__) class builder(EventBuilder): def __getEvent__(self, device_event): event_data = self.deviceAdapter.analyze_event_data(device_event['data']) if not event_data: return event_data['raw_msg'] = device_event funCode = event_data.get("cmdCode") if funCode == "0100": return HZFLFaultEventer(self.deviceAdapter, event_data) else: return HZFLWorkEventer(self.deviceAdapter, event_data) class HZFLFaultEventer(FaultEvent): pass class HZFLWorkEventer(WorkEvent): def do(self): cmdCode = self.event_data["cmdCode"] if cmdCode == "0107": totalElec = self.event_data["totalElec"] otherConf = self.device.get("otherConf", dict()) otherConf["totalElec"] = totalElec Device.objects.get(devNo=self.device.devNo).update(otherConf=otherConf) Device.invalid_device_cache(self.device.devNo) elif cmdCode == "000A": pass elif cmdCode == "0105": pass elif cmdCode == "0102": pass else: logger.error("error evene data, data is <{}>, dev is <{}>".format(self.event_data, self.device.devNo))