def __init__(self): self.bttn1_value = False LOGGER_PERIOD = 5 # Catch CNTRL-C signel signal.signal(signal.SIGINT, self.signal_cntrl_c) self.shutdown = False args = self.parse_commandline_arguments() self.init_logging(args.logfilename, args.verbose) logging.info("Connecting to server: %s", args.server) logging.info(" Connection ID: %s", args.connection) logging.info(" Control topic: %s/%s/%s/control", args.username, args.connection, args.device_id) logging.info(" Data topic: %s/%s/%s/data", args.username, args.connection, args.device_id) device = dashio.Device(args.connection, args.device_id, args.device_name) dash_conn = dashio.DashConnection(args.username, args.password) dash_conn.add_device(device) self.gph_15_minutes = dashio.TimeGraph("TestGraph") self.gph_15_minutes.title = "Test: {}".format(args.connection) self.gph_15_minutes.y_axis_label = "Units" self.gph_15_minutes.y_axis_min = -10.0 self.gph_15_minutes.y_axis_max = 10.0 self.gph_15_minutes.y_axis_num_bars = 9 self.line_15_minutes = dashio.TimeGraphLine( "Line", dashio.TimeGraphLineType.LINE, color=dashio.Color.BLACK, max_data_points=15 * 60 / LOGGER_PERIOD) self.bar_15_minutes = dashio.TimeGraphLine( "Bar", dashio.TimeGraphLineType.BAR, color=dashio.Color.ORANGE, max_data_points=15 * 60 / LOGGER_PERIOD, ) self.bin_15_minutes = dashio.TimeGraphLine( "Bin", dashio.TimeGraphLineType.BOOL, color=dashio.Color.YELLOW, max_data_points=15 * 60 / LOGGER_PERIOD, ) self.am_pm_15_minutes = dashio.TimeGraphLine( "Hour", dashio.TimeGraphLineType.BOOL, color=dashio.Color.SILVER, max_data_points=15 * 60 / LOGGER_PERIOD, ) self.gph_15_minutes.add_line("line", self.line_15_minutes) self.gph_15_minutes.add_line("Bar", self.bar_15_minutes) self.gph_15_minutes.add_line("Bin", self.bin_15_minutes) self.gph_15_minutes.add_line("Hour", self.am_pm_15_minutes) self.gph_15_minutes.message_rx_event += self.gph_15_minutes_event_handler device.add_control(self.gph_15_minutes) line_data = 0 bar_data = 0 line_dir_up = True bar_dir_up = False bin_data = False am_pm_data = True t = datetime.datetime.now() if (t.hour % 2) == 0: am_pm_data = True else: am_pm_data = False while not self.shutdown: if line_data > 9.5: line_dir_up = False elif line_data < -9.5: line_dir_up = True if line_dir_up: line_data += random.random() else: line_data -= random.random() if bar_data > 9.5: bar_dir_up = False elif bar_data < -9.5: bar_dir_up = True if bar_dir_up: bar_data += random.random() else: bar_data -= random.random() if line_data > bar_data: bin_data = True else: bin_data = False if (t.hour % 2) == 0: am_pm_data = True else: am_pm_data = False self.am_pm_15_minutes.add_data_point(am_pm_data) self.line_15_minutes.add_data_point(line_data) self.bar_15_minutes.add_data_point(bar_data) self.bin_15_minutes.add_data_point(bin_data) self.gph_15_minutes.send_data() tstamp = datetime.datetime.now() seconds_left = tstamp.second + tstamp.microsecond / 1000000.0 _, sleep_time = divmod(seconds_left, LOGGER_PERIOD) sleep_time = LOGGER_PERIOD - sleep_time time.sleep(sleep_time) device.close()
def main(): # Catch CNTRL-C signel global shutdown signal.signal(signal.SIGINT, signal_cntrl_c) no_datapoints = 60 args = parse_commandline_arguments() init_logging(args.logfilename, args.verbose) new_ini_file = False ini_file = args.ini_file config_file_parser = configparser.ConfigParser() config_file_parser.defaults() try: ini_f = open(ini_file) ini_f.close() except FileNotFoundError: default = { 'DeviceID': shortuuid.uuid(), 'DeviceName': args.device_name, 'DeviceType': 'ServerMonitor', 'username': args.username, 'password': args.password } config_file_parser['DEFAULT'] = default with open(ini_file, 'w') as configfile: config_file_parser.write(configfile) new_ini_file = True if not new_ini_file: config_file_parser.read(ini_file) config_file_parser.get('DEFAULT', 'username') device = dashio.Device( config_file_parser.get('DEFAULT', 'DeviceType'), config_file_parser.get('DEFAULT', 'DeviceID'), config_file_parser.get('DEFAULT', 'DeviceName') ) dash_conn = dashio.DashConnection( config_file_parser.get('DEFAULT', 'username'), config_file_parser.get('DEFAULT', 'password') ) dash_conn.add_device(device) device.dashio_setable = False dash_conn.add_device(device) monitor_page = dashio.DeviceView("monpg", "Dash Server Monitor") gph_network = dashio.TimeGraph("NETWORKGRAPH", control_position=dashio.ControlPosition(0.0, 0.0, 1.0, 0.45)) gph_network.title = "Server Network Traffic: {}".format(args.device_name) gph_network.y_axis_label = "Kbytes" gph_network.y_axis_min = 0.0 gph_network.y_axis_max = 100000.0 gph_network.y_axis_num_bars = 9 network_rx = dashio.TimeGraphLine( "RX", dashio.TimeGraphLineType.LINE, color=dashio.Color.FUSCIA, max_data_points=no_datapoints, break_data=True ) network_tx = dashio.TimeGraphLine( "TX", dashio.TimeGraphLineType.LINE, color=dashio.Color.AQUA, max_data_points=no_datapoints, break_data=True ) gph_network.add_line("NET_RX", network_rx) gph_network.add_line("NET_TX", network_tx) last_tx, last_rx = get_network_rx_tx() gph_cpu = dashio.TimeGraph("CPULOAD", control_position=dashio.ControlPosition(0.0, 0.45, 1.0, 0.45)) gph_cpu.title = "CPU load: {}".format(args.device_name) gph_cpu.y_axis_label = "Percent" gph_cpu.y_axis_max = 100 gph_cpu.y_axis_min = 0 gph_cpu.y_axis_num_bars = 9 monitor_page.add_control(gph_network) monitor_page.add_control(gph_cpu) device.add_control(gph_network) device.add_control(gph_cpu) number_of_cores = psutil.cpu_count() cpu_core_line_array = [] cpu_data = psutil.cpu_percent(percpu=True) for cpu in range(0, number_of_cores): line = dashio.TimeGraphLine( name="CPU:{}".format(cpu), line_type=dashio.TimeGraphLineType.LINE, color=dashio.Color(cpu + 1), max_data_points=no_datapoints, break_data=True ) cpu_core_line_array.append(line) gph_cpu.add_line("CPU:{}".format(cpu), line) hd_dial = dashio.Dial("HD_USAGE", control_position=dashio.ControlPosition(0.0, 0.9, 1.0, 0.1)) hd_dial.title = "Disk Usage" hd_dial.dial_value = psutil.disk_usage("/").percent hd_dial.dial_min = 0.0 hd_dial.dial_max = 100.0 hd_dial.red_value = 95.0 hd_dial.show_min_max = True disk_usage = 0 device.add_control(hd_dial) monitor_page.add_control(hd_dial) device.add_control(monitor_page) while not shutdown: time.sleep(10) Tx, Rx = get_network_rx_tx() network_rx.add_data_point(Tx - last_tx) network_tx.add_data_point(Rx - last_rx) last_tx = Tx last_rx = Rx gph_network.send_data() cpu_data = psutil.cpu_percent(percpu=True) i = 0 for line in cpu_core_line_array: line.add_data_point(cpu_data[i]) i += 1 gph_cpu.send_data() du = psutil.disk_usage("/").percent if du != disk_usage: disk_usage = du # Only send if changed. hd_dial.dial_value = disk_usage device.close()
def __init__(self): LOGGER_PERIOD = 15 DIV = 1.0 ADC.setup() # Catch CNTRL-C signel signal.signal(signal.SIGINT, self.signal_cntrl_c) self.shutdown = False args = self.parse_commandline_arguments() self.init_logging(args.logfilename, args.verbose) logging.info("Connecting to server: %s", args.server) logging.info(" Device ID: %s", args.device_id) logging.info(" Control topic: %s/%s/control", args.username, args.device_id) logging.info(" Data topic: %s/%s/data", args.username, args.device_id) dash_con = dashio.DashConnection(args.username, args.password) device = dashio.Device(args.device_type, args.device_id, args.device_name) dash_con.add_device(device) gph_15_minutes = dashio.TimeGraph("Temperature15M") gph_15_minutes.title = "Temp15M:{}".format(args.device_name) gph_15_minutes.y_axis_label = "Degrees C" gph_15_minutes.y_axis_min = 0.0 gph_15_minutes.y_axis_max = 50.0 gph_15_minutes.y_axis_num_bars = 5 line_15_minutes = dashio.TimeGraphLine("DegC", dashio.TimeGraphLineType.LINE, color=dashio.Color.BLACK, max_data_points=15 * 60 / LOGGER_PERIOD) gph_15_minutes.add_line("DegC", line_15_minutes) gph_1_day = dashio.TimeGraph("Temperature1D") gph_1_day.title = "Temp1D:{}".format(args.device_name) gph_1_day.y_axis_label = "Degrees C" gph_1_day.y_axis_min = 0.0 gph_1_day.y_axis_max = 50.0 gph_1_day.y_axis_num_bars = 5 line_1_day = dashio.TimeGraphLine("DegC", dashio.TimeGraphLineType.LINE, color=dashio.Color.BLACK, max_data_points=24 * 4) gph_1_day.add_line("DegC", line_1_day) gph_1_week = dashio.TimeGraph("Temperature1W") gph_1_week.title = "Temp1W:{}".format(args.device_name) gph_1_week.y_axis_label = "Degrees C" gph_1_week.y_axis_min = 0.0 gph_1_week.y_axis_max = 50.0 gph_1_week.y_axis_num_bars = 5 line_1_week = dashio.TimeGraphLine("DegC", dashio.TimeGraphLineType.LINE, color=dashio.Color.BLACK, max_data_points=24 * 4 * 7) gph_1_week.add_line("DegC", line_1_week) gph_1_year = dashio.TimeGraph("Temperature1Y") gph_1_year.title = "Temp1Y:{}".format(args.device_name) gph_1_year.y_axis_label = "Degrees C" gph_1_year.y_axis_min = 0.0 gph_1_year.y_axis_max = 50.0 gph_1_year.y_axis_num_bars = 5 line_1_year = dashio.TimeGraphLine("DegC", dashio.TimeGraphLineType.LINE, color=dashio.Color.BLACK, max_data_points=360) gph_1_year.add_line("DegC", line_1_year) dl_temperature_ctrl = dashio.Dial("TemperatureDial") dl_temperature_ctrl.title = "Temperature" dl_temperature_ctrl.dial_max = 50 dl_daily_max_ctrl = dashio.Dial("TemperatureMaxDial") dl_daily_max_ctrl.title = "Daily Max" dl_daily_max_ctrl.dial_max = 50 dl_daily_min_ctrl = dashio.Dial("TemperatureMinDial") dl_daily_min_ctrl.title = "Daily Min" dl_daily_min_ctrl.dial_max = 50 self.page = dashio.DeviceView("tmppage", "Temperatures", 1) device.add_control(self.page) device.add_control(dl_temperature_ctrl) self.page.add_control(dl_temperature_ctrl) device.add_control(dl_daily_max_ctrl) self.page.add_control(dl_daily_max_ctrl) device.add_control(dl_daily_min_ctrl) self.page.add_control(dl_daily_min_ctrl) device.add_control(gph_15_minutes) self.page.add_control(gph_15_minutes) device.add_control(gph_1_day) self.page.add_control(gph_1_day) device.add_control(gph_1_week) self.page.add_control(gph_1_week) device.add_control(gph_1_year) self.page.add_control(gph_1_year) temperature = self.read_sensor() daily_temperature_max = temperature daily_temperature_min = temperature while not self.shutdown: temperature = self.read_sensor() if temperature < daily_temperature_min: daily_temperature_min = temperature dl_daily_min_ctrl.dial_value = temperature if temperature > daily_temperature_max: daily_temperature_max = temperature dl_daily_max_ctrl.dial_value = temperature dl_temperature_ctrl.dial_value = temperature line_15_minutes.add_data_point(temperature) gph_15_minutes.send_data() t = datetime.datetime.now() if (t.minute == 0 or t.minute == 15 or t.minute == 30 or t.minute == 45) and (t.second < 5): total = 0 for d in line_15_minutes.data: temps = d.data_point total += float(temps) avg = total / len(line_15_minutes.data) avg_str = "{:.2f}".format(avg) line_1_day.add_data_point(avg_str) line_1_week.add_data_point(avg_str) gph_1_day.send_data() gph_1_week.send_data() if t.hour == 12 and t.minute == 0 and t.second < 10: daily_temperature_max = temperature daily_temperature_min = temperature line_1_year.add_data_point(avg_str) gph_1_year.send_data() t = datetime.datetime.now() seconds_left = t.second + t.microsecond / 1000000.0 div, sleep_time = divmod(seconds_left, LOGGER_PERIOD) sleep_time = LOGGER_PERIOD - sleep_time time.sleep(sleep_time) device.close()
def main(): # Catch CNTRL-C signel global shutdown signal.signal(signal.SIGINT, signal_cntrl_c) no_datapoints = 60 args = parse_commandline_arguments() init_logging(args.logfilename, args.verbose) logging.info("Connecting to server: %s", args.server) logging.info(" Connection ID: %s", args.connection) logging.info(" Control topic: %s/%s/%s/control", args.username, args.connection, args.device_id) logging.info(" Data topic: %s/%s/%s/data", args.username, args.connection, args.device_id) device = dashio.dashDevice(args.connection, args.device_id, args.device_name) dash_conn = dashio.dashConnection(args.username, args.password) dash_conn.add_device(device) monitor_page = dashio.Page("monpg", "Dash Server Moniter") gph_network = dashio.TimeGraph("NETWORKGRAPH") gph_network.title = "Server Network Traffic: {}".format(args.connection) gph_network.y_axis_label = "Kbytes" gph_network.y_axis_min = 0.0 gph_network.y_axis_max = 1000.0 gph_network.y_axis_num_bars = 11 Network_Rx = dashio.TimeGraphLine("RX", dashio.TimeGraphLineType.LINE, color=dashio.Color.FUSCIA, max_data_points=no_datapoints) Network_Tx = dashio.TimeGraphLine("TX", dashio.TimeGraphLineType.LINE, color=dashio.Color.AQUA, max_data_points=no_datapoints) gph_network.add_line("NET_RX", Network_Rx) gph_network.add_line("NET_TX", Network_Tx) last_Tx, last_Rx = get_network_rx_tx() gph_cpu = dashio.TimeGraph("CPULOAD") gph_cpu.title = "CPU load: {}".format(args.connection) gph_cpu.y_axis_label = "Percent" gph_cpu.y_axis_max = 100 gph_cpu.y_axis_min = 0 gph_cpu.y_axis_num_bars = 8 monitor_page.add_control(gph_network) monitor_page.add_control(gph_cpu) device.add_control(gph_network) device.add_control(gph_cpu) number_of_cores = psutil.cpu_count() cpu_core_line_array = [] cpu_data = psutil.cpu_percent(percpu=True) for cpu in range(0, number_of_cores): line = dashio.TimeGraphLine( name="CPU:{}".format(cpu), line_type=dashio.TimeGraphLineType.LINE, color=dashio.Color(cpu + 1), transparency=1.0, max_data_points=no_datapoints, ) cpu_core_line_array.append(line) gph_cpu.add_line("CPU:{}".format(cpu), line) hd_dial = dashio.Dial("HD_USAGE") hd_dial.title = "Disk Usage" hd_dial.dial_value = psutil.disk_usage("/").percent hd_dial.min = 0.0 hd_dial.max = 100.0 hd_dial.red_value = 95.0 hd_dial.show_min_max = True device.add_control(hd_dial) monitor_page.add_control(hd_dial) device.add_control(monitor_page) while not shutdown: time.sleep(10) Tx, Rx = get_network_rx_tx() Network_Rx.add_data_point(Tx - last_Tx) Network_Tx.add_data_point(Rx - last_Rx) last_Tx = Tx last_Rx = Rx gph_network.send_data() cpu_data = psutil.cpu_percent(percpu=True) i = 0 for line in cpu_core_line_array: line.add_data_point(cpu_data[i]) i += 1 gph_cpu.send_data() hd_dial.dial_value = psutil.disk_usage("/").percent device.close()