From 79cbd05e8cfa664b8f4fff2fe950a6e07c36b294 Mon Sep 17 00:00:00 2001 From: hngo Date: Fri, 7 Jul 2017 12:49:51 -0700 Subject: [PATCH] Fixed frontend for cycling and setpoint detectors --- .../ui/static/openeis-ui/js/analysisReport.js | 8 +++---- openeis/applications/cycling_detector.py | 24 +++++++++++-------- openeis/applications/setpoint_detector.py | 17 ++++++++----- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/openeis-ui/openeis/ui/static/openeis-ui/js/analysisReport.js b/lib/openeis-ui/openeis/ui/static/openeis-ui/js/analysisReport.js index b927ec0..1d4ed00 100644 --- a/lib/openeis-ui/openeis/ui/static/openeis-ui/js/analysisReport.js +++ b/lib/openeis-ui/openeis/ui/static/openeis-ui/js/analysisReport.js @@ -4199,12 +4199,12 @@ angular.module('openeis-ui.directives.analysis-report', []) setpoints.sort(function(a,b) {return a[args.Timestamp]-b[args.Timestamp]}); //Interpolate setpoint values for visualization purpose setpoints_viz = real_data.map(function (d) { - for (i=0; i=numSetpoints) { - i = numSetpoints - 1; + if (i > 0) { + i = i - 1; } return {x: d[args.Timestamp], y: setpoints[i][points.ZoneTemperatureSetPoint]}; }); @@ -4823,7 +4823,7 @@ angular.module('openeis-ui.directives.analysis-report', []) var timeUnit = getTimeUnit(data[0][fTsName], data[data.length - 1][fTsName], [data[0][fTsName], data[1][fTsName], data[2][fTsName]]); var tArgs = { Timestamp: fTsName, - Title: 'Temperature Set Point Detection', + Title: 'Schedule Detection', Container: '#temps-chart-box', TimeUnit: timeUnit }; diff --git a/openeis/applications/cycling_detector.py b/openeis/applications/cycling_detector.py index 81d74e6..9eba809 100644 --- a/openeis/applications/cycling_detector.py +++ b/openeis/applications/cycling_detector.py @@ -257,13 +257,14 @@ class Application(DrivenApplicationBaseClass): zonetemperature_stpt_name = 'zone_temp_setpoint' comprstatus_name = 'compressor_status' - def __init__(self, *args, minimum_data_count=5, analysis_run_interval=500, local_tz=1, **kwargs): + def __init__(self, *args, minimum_data_count=5, analysis_run_interval=500, local_tz=1, db=0.3, **kwargs): super().__init__(*args, **kwargs) try: self.cur_tz = available_tz[local_tz] except: self.cur_tz = 'UTC' - self.cycling_detector = CyclingDetector(minimum_data_count, analysis_run_interval) + + self.cycling_detector = CyclingDetector(minimum_data_count, analysis_run_interval, db) @classmethod def get_config_parameters(cls): @@ -281,7 +282,11 @@ def get_config_parameters(cls): ConfigDescriptor(int, "Integer corresponding to local timezone: " "[1: 'US/Pacific', 2: 'US/Mountain', 3: 'US/Central', 4: 'US/Eastern']", - value_default=1) + value_default=1), + 'db': + ConfigDescriptor(float, + "Temperature Deadband", + value_default=0.3) } @classmethod @@ -426,9 +431,10 @@ def data_builder(value_tuple, point_name): class CyclingDetector(object): """OpenEIS Compressor Cycling diagnostic agent.""" - def __init__(self, minimum_data_count=5, analysis_run_interval=500, **kwargs): + def __init__(self, minimum_data_count=5, analysis_run_interval=500, db=0.3, **kwargs): self.minimum_data_count = minimum_data_count self.check_time = analysis_run_interval + self.db = db self.available_data_points = [] self.inconsistent_data_flag = 0 @@ -646,8 +652,6 @@ def results_handler(self, maximums, minimums, filtered_timeseries, diagnostic_re def create_setpoint_array(self, pcopy, vcopy): """Creates setpoint array when zone temperature set point is not measured.""" - db = 0.3 - peak_ts1 = zip([self.timestamp_array[ind] for ind in pcopy], [self.zone_temperature_array[ind] for ind in pcopy]) valley_ts1 = zip([self.timestamp_array[ind] for ind in vcopy], [self.zone_temperature_array[ind] for ind in vcopy]) @@ -659,14 +663,14 @@ def create_setpoint_array(self, pcopy, vcopy): zip1 = zip(peak_ts1, valley_ts1) zip2 = zip(peak_ts2, valley_ts2) - remove_temp1 = [(x[0], x[1]) for x, y in zip1 if x[1] >= y[1] + db] - remove_temp2 = [(y[0], y[1]) for x, y in zip2 if x[1] >= y[1] + db] + remove_temp1 = [(x[0], x[1]) for x, y in zip1 if x[1] >= y[1] + self.db] + remove_temp2 = [(y[0], y[1]) for x, y in zip2 if x[1] >= y[1] + self.db] peak_ts_list = list(peak_ts3) valleys_ts_list = list(valley_ts3) - peaks = [pcopy[x] for x in range(pcopy.size) if peak_ts_list[x][1] >= valleys_ts_list[x][1] + db] - valleys = [vcopy[x] for x in range(vcopy.size) if peak_ts_list[x][1] >= valleys_ts_list[x][1] + db] + peaks = [pcopy[x] for x in range(pcopy.size) if peak_ts_list[x][1] >= valleys_ts_list[x][1] + self.db] + valleys = [vcopy[x] for x in range(vcopy.size) if peak_ts_list[x][1] >= valleys_ts_list[x][1] + self.db] zone_temperature_stpt = [] diff --git a/openeis/applications/setpoint_detector.py b/openeis/applications/setpoint_detector.py index 1232cf8..9abb0d0 100644 --- a/openeis/applications/setpoint_detector.py +++ b/openeis/applications/setpoint_detector.py @@ -88,7 +88,7 @@ class Application(DrivenApplicationBaseClass): zone_temp_name = 'zone_temp' zone_temp_setpoint_name = 'zone_temp_setpoint' - def __init__(self, *args, minimum_data_count=5, sensitivity=1, local_tz=1, **kwargs): + def __init__(self, *args, minimum_data_count=5, sensitivity=1, local_tz=1, db=0.3, **kwargs): super().__init__(*args, **kwargs) try: self.cur_tz = available_tz[local_tz] @@ -103,7 +103,7 @@ def __init__(self, *args, minimum_data_count=5, sensitivity=1, local_tz=1, **kwa else: area_distribution_threshold = 0.1 - self.setpoint_detector = SetPointDetector(minimum_data_count, area_distribution_threshold) + self.setpoint_detector = SetPointDetector(minimum_data_count, area_distribution_threshold, db) @classmethod def get_config_parameters(cls): @@ -126,7 +126,11 @@ def get_config_parameters(cls): ConfigDescriptor(int, "Integer corresponding to local timezone: " "[1: 'US/Pacific', 2: 'US/Mountain', 3: 'US/Central', 4: 'US/Eastern']", - value_default=1) + value_default=1), + 'db': + ConfigDescriptor(float, + "Temperature Deadband", + value_default=0.3) } @classmethod @@ -398,9 +402,10 @@ def detect_peaks(data, mph=None, threshold=0, mpd=1, edge='rising', return ind class SetPointDetector(object): - def __init__(self, minimum_data_count=5, area_distribution_threshold=0.1, **kwargs): + def __init__(self, minimum_data_count=5, area_distribution_threshold=0.1, db=0.3, **kwargs): self.minimum_data_count = minimum_data_count self.area_distribution_threshold = area_distribution_threshold + self.db = db self.initialize() def initialize(self): @@ -582,8 +587,8 @@ def create_setpoint_array(self, pcopy, vcopy): peak_valley_ts1 = zip(peak_ts1, valley_ts1) peak_valley_ts2 = zip(peak_ts2, valley_ts2) - remove_temp2 = [(y[0], y[1]) for x, y in peak_valley_ts2 if x[1] >= y[1] + 0.3] - remove_temp1 = [(x[0], x[1]) for x, y in peak_valley_ts1 if x[1] >= y[1] + 0.3] + remove_temp2 = [(y[0], y[1]) for x, y in peak_valley_ts2 if x[1] >= y[1] + self.db] + remove_temp1 = [(x[0], x[1]) for x, y in peak_valley_ts1 if x[1] >= y[1] + self.db] peak_temp = [row[1] for row in remove_temp1] valley_temp = [row[1] for row in remove_temp2]