from datetime import datetime udtInstPath = "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" def getMeasurementPaths(): return ["%s/Outside Air Dewpoint"%udtInstPath, "%s/Outside Air Temperature"%udtInstPath, "%s/Outside Air Humidity"%udtInstPath] def getRawDataMeasurement(startDate, endDate, customArgs= {}): tagpaths = getMeasurementPaths() hist = reports.MBR.common.util.getHistory(tagpaths, startDate, endDate, customArgs={}) return hist def getRawChillerDemand(startDate, endDate, location, customArgs= {}): tagpaths = reports.MBR.common.util.getBaseTagPaths(reports.MBR.common.static.getChillerTonnage(), location) tagpaths.sort() hist = reports.MBR.common.util.getHistory(tagpaths, startDate, endDate, customArgs={}) return hist def calculateValues(data): """ Calculate the Daily Average of each sensor's measurement """ data = system.dataset.toPyDataSet(data) curHeaders = system.dataset.getColumnHeaders(data) res = {"ResultTemp":None, "ResultHumidity":None} dailyGroup= {} allResultData = {} allResultDS = {} allAvgs = [] for row in data: dayStr = system.date.format(row["t_stamp"],"yyyy-MM-dd") dailyGroup.setdefault(dayStr, {}) dailyGroup[dayStr].setdefault("OATemp", []) dailyGroup[dayStr].setdefault("OADew", []) dailyGroup[dayStr].setdefault("OAHum", []) dailyGroup[dayStr]["OADew"].append(row[curHeaders[1]]) dailyGroup[dayStr]["OATemp"].append(row[curHeaders[2]]) dailyGroup[dayStr]["OAHum"].append(row[curHeaders[3]]) sortedDateKeys = sorted(dailyGroup.keys(), key=lambda x: datetime.strptime(x, '%Y-%m-%d')) temperatureRows= [] humidityRows= [] for date_str in sortedDateKeys: try: dpAvg = sum(dailyGroup[date_str]["OADew"])/len(dailyGroup[date_str]["OADew"]) tempAvg = sum(dailyGroup[date_str]["OATemp"])/len(dailyGroup[date_str]["OATemp"]) humAvg = sum(dailyGroup[date_str]["OAHum"])/len(dailyGroup[date_str]["OAHum"]) except: dpAvg = 0 tempAvg = 0 humAvg = 0 temperatureRows.append([system.date.parse(date_str, "yyyy-MM-dd"), dpAvg, tempAvg]) humidityRows.append([system.date.parse(date_str, "yyyy-MM-dd"), humAvg]) res["ResultTemp"] = system.dataset.toDataSet(["Date","Dewpoint","Temperature"], temperatureRows) res["ResultHumidity"] = system.dataset.toDataSet(["Date","Humidity"], humidityRows) return res def DoAll(startDate,endDate): return calculateValues(getRawDataMeasurement(startDate,endDate)) def DoChillerDemand(startDate, endDate, interval= 60, locations=None): histDS = reports.MBR.cooling.getRawChillerDemand(startDate, endDate, locations, customArgs= {}) histDS = reports.MBR.common.util.averageIntervalData(histDS, interval) histDS = reports.MBR.common.util.generateSumCol(histDS, sumColName="Sum Tonnage") return {"histDS":histDS}