def run(self): loop_wait = 0.2 min_diff = 0.01 heartbeat = 60 mfi_IPs = ['10.10.10.101'] good_ip = mfi_IPs[0] time1 = datetime.now() recorded_output_dict = {} different = True while True: time.sleep(loop_wait) output_dict = mfi.get_mfi_data(good_ip, time1, 180000000) if output_dict is None: rot = mfi_IPs.pop(0) mfi_IPs.append(rot) good_ip = mfi_IPs[0] time_diff = (datetime.now() - time1).seconds if output_dict and recorded_output_dict: diff_1 = abs(recorded_output_dict['i_rms1'] - output_dict['i_rms1']) diff_2 = abs(recorded_output_dict['i_rms2'] - output_dict['i_rms2']) diff_3 = abs(recorded_output_dict['i_rms3'] - output_dict['i_rms3']) different = (diff_1 > min_diff) or (diff_2 > min_diff) or ( diff_3 > min_diff) if output_dict and (different or time_diff > heartbeat): print output_dict psql.add_values_to_table(table_dict['mfi_table'], output_dict) recorded_output_dict = output_dict time1 = datetime.now()
def update_mfi_state_sql(table_ref, new_mfi_state, control_source, control_type, limit_counter): output_dict = {} output_dict['mfi_state'] = new_mfi_state output_dict['control_source'] = control_source output_dict['control_type'] = control_type output_dict['local_date'] = datetime.now().date() output_dict['limit_counter'] = limit_counter output_dict['uptime_minutes'] = get_system_uptime() psql.add_values_to_table(table_ref, output_dict)
def run(self): loop_wait = 1 min_diff = 0.01 heartbeat = 60 print 'Initializing Zwave Network' network = zwave.init_zwave(DEVICE, CONFIG_PATH) print 'Waiting...' time.sleep(5.0) recorded_output_dict = {} different = True time1 = datetime.now() while True: time.sleep(loop_wait) output_dict = zwave.read_zwave(network) time_diff = (datetime.now() - time1).seconds if recorded_output_dict and output_dict: if 'houseAll_Current' in output_dict: diff_current = abs( output_dict['houseAll_Current'] - recorded_output_dict['houseAll_Current']) different = diff_current > min_diff else: print str( datetime.now() ) + ' ERROR: Zwave dictionary not correct. it seems to have only these keys:' + str( output_dict.keys()) if time_diff < 0: time1 = datetime.now() print datetime.now() + ' ERROR: Improper time at: ' + time1 elif output_dict and (different or time_diff > heartbeat): psql.add_values_to_table(table_dict['zwave_table'], output_dict) recorded_output_dict = output_dict time1 = datetime.now() if output_dict and output_dict['house1_Energy'] == 0: print 'Zero Energy, Restarting: ' + str(datetime.now()) return
#!/usr/bin/env python2 # Copyright 2016 The Flexbox Authors. All rights reserved. # Licensed under the open source MIT License, which is in the LICENSE file. import time from flexbox import sensors from flexbox import psql from datetime import datetime LOOP_WAIT = 0.25 HEARTBEAT = 60 metadata = psql.get_metadata() table_dict = psql.setup_tables(metadata) print 'Starting Switch at ' + str(datetime.now()) recorded_output_dict = None time1 = datetime.now() while True: time.sleep(LOOP_WAIT) isOpen = sensors.get_magnetic_switch() time_diff = (datetime.now() - time1).seconds if isOpen is not None: if recorded_output_dict is None or isOpen != recorded_output_dict[ 'switch'] or time_diff > HEARTBEAT: output_dict = {'switch': isOpen} psql.add_values_to_table(table_dict['switch_table'], output_dict) recorded_output_dict = output_dict time1 = datetime.now()
def write_db(data): psql.add_values_to_table(network_tests, data)
time.sleep(LOOP_WAIT) if queue.empty(): output_dict = {} diff_dict = {} different = False time_diff = (datetime.now() - time1).seconds if len(vals)>4: print vals for i,key in enumerate(vals): if vals[key] != None: print cf output_dict['inside_'+cf[key]] = vals[key] if output_dict and recorded_output_dict and \ output_dict.keys() == recorded_output_dict.keys(): diff_dict = {key : output_dict[key] - recorded_output_dict.get(key,0) for key in output_dict.keys()} different = True in [abs(x)>120 for x in diff_dict.values()] else: different = True if output_dict and (different or time_diff>HEARTBEAT): psql.add_values_to_table(table_dict['inside_table'],output_dict) recorded_output_dict = output_dict time1 = datetime.now() print output_dict sens_ids = sensors.get_inside_fridge_ids() for sens_id in sens_ids: queue.put(sens_id) # Now wait for the queue to be empty, indicating that we have # processed all of the downloads. queue.join() print '*** Done'
LOOP_WAIT = 0.1 MIN_DIFF = 0.15 HEARTBEAT = 60 metadata = psql.get_metadata() table_dict = psql.setup_tables(metadata) time1 = datetime.now() print 'Starting Ambient at ' + str(time1) recorded_output_dict = {} while True: time.sleep(LOOP_WAIT) output_dict = {} time_diff = (datetime.now() - time1).seconds [temperature, humidity] = sensors.get_ambient_temp_humidity() if temperature is not None and humidity is not None: output_dict['ambient_temp'] = temperature output_dict['humidity'] = humidity if recorded_output_dict: diff_temp = abs(output_dict['ambient_temp'] - recorded_output_dict['ambient_temp']) diff_hum = abs(output_dict['humidity'] - recorded_output_dict['humidity']) difference = diff_temp > MIN_DIFF or diff_hum > MIN_DIFF else: difference = True if difference or time_diff > HEARTBEAT: psql.add_values_to_table(table_dict['ambient_table'], output_dict) recorded_output_dict = output_dict time1 = datetime.now()