class NilmMetaUpdate: def __init__(self, logger, jobId, jobType): self._logger = logger self._jobId = jobId self._jobType = jobType self._dataManager = DataServiceManager(logger) def doProcess(self, hz, sid, did, lfid, feederDataFilePath, dailyBasedTS = None): self._logger.info("# [%s] Do nilm meta update, sid : %d, did : %d, lfid : %d, data : %s, freq : %d hz" %(self._jobId, sid, did, lfid, feederDataFilePath, hz)) oldMetaInfo = self._dataManager.getNilmMetaInfo(sid, did, lfid) hasMiscValue = False metaDetector = AppDetectR(self._logger) try: metaDetector.set_data(feederDataFilePath, hz) isDetected = metaDetector.detect_apps() self._logger.info("- [%s] meta detected : %s, freq : %d hz" %(self._jobId, str(isDetected), hz)) newAppMeta = json.loads(metaDetector.getAppInfo()) # self._dataManager.setUsageRouteDataService(sid) if not newAppMeta: self._dataManager.setNilmVirtualFeederInfo(sid, did, lfid, 999) return if isDetected: existingMetaInfo = self._dataManager.getNilmMetaInfo(sid, did, lfid) if not existingMetaInfo: for nfid in [int(nfid) for nfid in newAppMeta.keys()]: vfidMeta = newAppMeta[str(nfid)] applianceType = self._getApplianceType(vfidMeta) vfid = self._dataManager.setNilmVirtualFeederInfo(sid, did, lfid, nfid, applianceType) self._dataManager.setNilmMetaInfo(vfid, vfidMeta) if not hasMiscValue: self._dataManager.setNilmVirtualFeederInfo(sid, did, lfid, 999) hasMiscValue = True else: if newAppMeta: for nfid in [int(nfid) for nfid in newAppMeta.keys()]: vfidMeta = newAppMeta[str(nfid)] applianceType = self._getApplianceType(vfidMeta) vfid = self._dataManager.setNilmVirtualFeederInfo(sid, did, lfid, nfid, applianceType) if vfid: self._dataManager.setNilmMetaInfo(vfid, newAppMeta[str(nfid)]) if not hasMiscValue: self._dataManager.setNilmVirtualFeederInfo(sid, did, lfid, 999) hasMiscValue = True except Exception, e: self._logger.exception(e) finally:
class NilmAppUsage: def __init__(self, logger, jobId, jobType): self._dataManager = DataServiceManager(logger) self._logger = logger self._jobId = jobId self._jobType = jobType def doProcess(self, hz, sid, did, lfid, feederDataFilePath, dailyBasedTS=None): self._logger.info( "# [%s] Do nilm usages, sid : %d, did : %d, lfid : %d, based date : %s, freq : %d hz" % (self._jobId, sid, did, lfid, convertTS2Date(dailyBasedTS), hz)) self._logger.info(" - file path : %s" % feederDataFilePath) appUsage = AppDailyLoadR(self._logger) resultMap = {} try: metaInfo = self._dataManager.getNilmMetaInfo(sid, did, lfid) appUsage.set_data(feederDataFilePath, hz) appUsage.set_app_info(metaInfo) appUsage.do_compute() appUsageMap = appUsage.get_usage() if not appUsageMap: self._logger.warn( '- [%s] empty appUsageMap! sid : %d, file path : %s' % (self._jobId, sid, feederDataFilePath)) return None if appUsageMap: hourlyUsage, dailyUsage = self._cvtUsageData(appUsageMap) hourlyAppOn = self._checkHourlyAppOnOff(hourlyUsage) dailyAppOn = self._checkDailyAppOnOff(dailyUsage) resultMap = { 'dbTS': dailyBasedTS, 'jobType': self._jobType, 'sid': sid, 'did': did, 'lfid': lfid, 'hourlyUsage': hourlyUsage, 'dailyUsage': dailyUsage, 'hourlyAppOn': hourlyAppOn, 'dailyAppOn': dailyAppOn } except Exception, e: self._logger.exception(e) self._logger.error(appUsageMap) finally:
class NilmMetaUpdate: def __init__(self, logger, jobId, jobType): self._logger = logger self._jobId = jobId self._jobType = jobType self._dataManager = DataServiceManager(logger) def doProcess(self, hz, sid, did, lfid, feederDataFilePath, dailyBasedTS=None): self._logger.info( "# [%s] Do nilm meta search, sid : %d, did : %d, lfid : %d, data : %s, freq : %d hz" % (self._jobId, sid, did, lfid, feederDataFilePath, hz)) existedMeta = self._dataManager.getNilmMetaInfo(sid, did, lfid) metaDetector = AppDetectR(self._logger) if not existedMeta: self._logger.warn('# Meta is not be existed. sid : %d' % (sid)) return self._genResult(dailyBasedTS, sid, did, lfid, hz) try: metaDetector.setExistedMeta(existedMeta) metaDetector.set_data(feederDataFilePath, hz) isDetected = metaDetector.detect_apps() if isDetected: newAppMeta = json.loads(metaDetector.getAppInfo()) nilmMetaInfo = { 'sid': sid, 'did': did, 'lfid': lfid, 'metaSearch': {}, 'metaUpdate': {} } # new meta insertNewMetaNfds = list( set(newAppMeta.keys()).difference(existedMeta.keys())) for nfid in insertNewMetaNfds: vfidMeta = newAppMeta[str(nfid)] appType = self._getApplianceType(vfidMeta) nilmMetaInfo['metaSearch'][int( nfid)] = self._genFidMetaSet(appType, vfidMeta) # update meta info updateNewMetaNfids = list( set(newAppMeta.keys()).intersection(existedMeta.keys())) for nfid in updateNewMetaNfids: vfidMeta = newAppMeta[str(nfid)] isEnabled = 1 nilmMetaInfo['metaUpdate'][int( nfid)] = self._genUpdateMetaSet(vfidMeta, isEnabled) # not use meta info updateDisableNfids = list( set(existedMeta.keys()).difference(newAppMeta.keys())) for nfid in updateDisableNfids: vfidMeta = existedMeta[str(nfid)] isEnabled = 0 nilmMetaInfo['metaUpdate'][int( nfid)] = self._genUpdateMetaSet(vfidMeta, isEnabled) self._dataManager.setNilmMetaUpdateInfo(nilmMetaInfo) except Exception, e: self._logger.exception(e) finally: