Пример #1
0
 def _init_graph(self):
     data = np.random.normal(0, 20, 100)
     bins = np.arange(-100, 100, 5)
     hist, hist_edges = np.histogram(data, bins)
     p_data = []
     s_data = []
     for x in range(-50, 50, 1):
         y = 0.03 * x ** 2 + 2
         p_data.append(y)
         s_data.append(100 - y)
     self.page_graph = dashio.Page("graph_pg", "Graph")
     self.graph = dashio.Graph("graph1",
                               "Graph",
                               control_position=dashio.ControlPosition(0.0, 0.0, 1.0, 1.0))
     self.graph.x_axis_label = "X Axis"
     self.graph.y_axis_label = "Y Axis"
     self.graph.x_axis_min = min(data) - 5
     self.graph.x_axis_max = max(data) + 5
     self.graph.x_axis_labels_style = dashio.GraphXAxisLabelsStyle.ON
     self.page_graph.add_control(self.graph)
     self.device.add_control(self.page_graph)
     self.device.add_control(self.graph)
     self.gl_line = GraphLine("graph_line", dashio.GraphLineType.LINE, color=dashio.Color.BLUE)
     data += 50
     self.gl_line.data = data.tolist()
     self.graph.add_line("graph_line", self.gl_line)
     self.gl_bar = GraphLine("graph_bar", dashio.GraphLineType.BAR, color=dashio.Color.GREEN)
     self.gl_bar.data = hist.tolist()
     self.graph.add_line("graph_bar", self.gl_bar)
     self.gl_segbar = GraphLine("graph_seg_bar", dashio.GraphLineType.SEGBAR, color=dashio.Color.YELLOW)
     self.gl_segbar.data = p_data
     self.graph.add_line("graph_segbar", self.gl_segbar)
     self.gl_peakbar = GraphLine("graph_peakbar", dashio.GraphLineType.PEAKBAR, color=dashio.Color.RED)
     self.gl_peakbar.data = s_data
     self.graph.add_line("graph_parkbar", self.gl_peakbar)
Пример #2
0
    def __init__(self):
        self.bttn1_value = False

        # 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.dashDevice(args.connection, args.device_id,
                                   args.device_name)
        dash_conn = dashio.dashConnection(args.username, args.password)
        dash_conn.add_device(device)

        el = dashio.EventLog("ELTest")
        el_page = dashio.Page("el_page", "Event Log Test")
        el_page.add_control(el)
        device.add_control(el)
        device.add_control(el_page)

        self.connection = args.connection
        count = 1
        while not self.shutdown:
            time.sleep(5)
            el.add_event_data("Hello:{}".format(count), "Testing")
            count += 1
        device.close()
Пример #3
0
 def _init_event_log(self):
     self.page_el = dashio.Page("EventLog", "Event Log")
     self.event_log = dashio.EventLog("eventlog",
                                      "Event Log",
                                      control_position=dashio.ControlPosition(0.0, 0.1, 1.0, 0.2))
     self.page_el.add_control(self.event_log)
     self.device.add_control(self.page_el)
     self.device.add_control(self.event_log)
Пример #4
0
 def _init_map(self):
     self.page_map = dashio.Page("map_pg", "Map")
     self.device.add_control(self.page_map)
     self.map = dashio.Map("map",
                           "Map",
                           control_position=dashio.ControlPosition(0.0, 0.0, 1.0, 1.0))
     self.map_loc1 = dashio.SimpleMapLocation("Mt. Cook", -43.59412841615468, 170.14189062192213)
     self.map_loc2 = dashio.MapLocation("James Peak", -45.237101516008835, 168.84818243505748)
     self.map.add_location(self.map_loc1)
     self.map.add_location(self.map_loc2)
     self.page_map.add_control(self.map)
     self.device.add_control(self.map)
Пример #5
0
    def _init_selector(self):
        self.page_sel_slid = dashio.Page("slctr_pg", "Selector & Sliders")
        self.device.add_control(self.page_sel_slid)
        self.slctr1 = dashio.Selector("slctr1",
                                      "Selector",
                                      control_position=dashio.ControlPosition(0.0, 0.8, 1.0, 0.2))
        self.device.add_control(self.slctr1)
        self.slctr1.add_selection("Selection 1")
        self.slctr1.add_selection("Selection 2")
        self.slctr1.add_selection("Selection 3")
        self.slctr1.add_selection("Selection 4")
        self.slctr1.add_selection("Selection 5")
        self.slctr1.add_selection("Selection 6")
        self.sldr_single_solid = dashio.SliderSingleBar("sldr_single_solid",
                                                        "Single Slider Solid",
                                                        bar_style=dashio.SliderBarType.SOLID,
                                                        control_position=dashio.ControlPosition(0.0, 0.0, 0.25, 0.8))
        self.sldr_single_solid.message_rx_event += self.slider_1_event_handler
        self.sldr_single_segmnt = dashio.SliderSingleBar("sldr_single_segment",
                                                         "Single Slider Segmented",
                                                         bar_style=dashio.SliderBarType.SEGMENTED,
                                                         control_position=dashio.ControlPosition(0.25, 0.0, 0.25, 0.8))
        self.sldr_single_segmnt.message_rx_event += self.slider_2_event_handler
        
        self.sldr_dble_solid = dashio.SliderDoubleBar("sldr_double_solid",
                                                        "Double Slider Solid",
                                                        bar_style=dashio.SliderBarType.SOLID,
                                                        control_position=dashio.ControlPosition(0.5, 0.0, 0.25, 0.8))
        self.sldr_dble_solid.message_rx_event += self.slider_3_event_handler
        self.sldr_dble_segmnt = dashio.SliderDoubleBar("sldr_double_segment",
                                                         "Double Slider Segmented",
                                                         bar_style=dashio.SliderBarType.SEGMENTED,
                                                         control_position=dashio.ControlPosition(0.75, 0.0, 0.25, 0.8))
        self.sldr_dble_segmnt.message_rx_event += self.slider_4_event_handler
        self.page_sel_slid.add_control(self.slctr1)
        self.page_sel_slid.add_control(self.sldr_single_solid)
        self.page_sel_slid.add_control(self.sldr_single_segmnt)
        self.page_sel_slid.add_control(self.sldr_dble_solid)
        self.page_sel_slid.add_control(self.sldr_dble_segmnt)


        self.device.add_control(self.sldr_single_solid)
        self.device.add_control(self.sldr_single_segmnt)
        self.device.add_control(self.sldr_dble_solid)
        self.device.add_control(self.sldr_dble_segmnt)
Пример #6
0
 def _init_dials(self):
     self.page_dials = dashio.Page("TestDials", "Dials")
     self.compass = dashio.Compass("TestCompass",
                                   "Direction",
                                   control_position=dashio.ControlPosition(0.24, 0.1, 0.54, 0.25))
     self.dial_std = dashio.Dial("DialSTD", "Dial Standard",
                                 style=dashio.DialStyle.STD,
                                 control_position=dashio.ControlPosition(0.24, 0.36, 0.54, 0.26))
     self.dial_inv = dashio.Dial("Dial",
                                 "Dial Inverted",
                                 style=dashio.DialStyle.INVERTED,
                                 control_position=dashio.ControlPosition(0.24, 0.61, 0.54, 0.26))
     self.page_dials.add_control(self.compass)
     self.page_dials.add_control(self.dial_std)
     self.page_dials.add_control(self.dial_inv)
     self.device.add_control(self.page_dials)
     self.device.add_control(self.compass)
     self.device.add_control(self.dial_std)
     self.device.add_control(self.dial_inv)
Пример #7
0
 def _init_buttons(self):
     self.page_btns = dashio.Page("TestButtons", "Buttons")
     self.btn1 = dashio.Button("BTN1",
                               "Up",
                               icon_name=Icon.UP,
                               control_position=dashio.ControlPosition(0.24, 0.14, 0.54, 0.26))
     self.btn1.btn_state = ButtonState.ON
     self.btn1.message_rx_event += self.up_btn_event_handler
     self.btn2 = dashio.Button("BTN2",
                               "Down",
                               icon_name=Icon.DOWN,
                               control_position=dashio.ControlPosition(0.24, 0.44, 0.54, 0.26))
     self.btn2.btn_state = ButtonState.ON
     self.btn2.message_rx_event += self.down_btn_event_handler
     self.page_btns.add_control(self.btn1)
     self.page_btns.add_control(self.btn2)
     self.device.add_control(self.page_btns)
     self.device.add_control(self.btn1)
     self.device.add_control(self.btn2)
Пример #8
0
    def _init_menu(self):
        self.page_menu = dashio.Page("menu_pg", "Menus")
        self.device.add_control(self.page_menu)
        self.menu = dashio.Menu("menu", "Menu", control_position=dashio.ControlPosition(0.18, 0.2, 0.7, 0.22))
        self.btn_group = dashio.ButtonGroup("btn_group",
                                            "Button",
                                            control_position=dashio.ControlPosition(0.18, 0.5, 0.7, 0.22))
        self.device.add_control(self.menu)
        self.device.add_control(self.btn_group)
        self.page_menu.add_control(self.menu)
        self.page_menu.add_control(self.btn_group)
        self.btn3 = dashio.Button("btn3", "Menu Button1", icon_name=Icon.LEFT)
        self.btn3.message_rx_event += self.left_btn_event_handler
        self.btn4 = dashio.Button("btn4", "Menu Button2", icon_name=Icon.RIGHT)
        self.btn4.message_rx_event += self.right_btn_event_handler

        self.btn5 = dashio.Button("btn5", "Group Button1", icon_name=Icon.LEFT)
        self.btn5.message_rx_event += self.left_btn_event_handler
        self.btn6 = dashio.Button("btn6", "Group Button2", icon_name=Icon.RIGHT)
        self.btn6.message_rx_event += self.right_btn_event_handler

        self.menu_tb = dashio.TextBox("txt1", "Menu TextBox")
        self.menu_sldr = dashio.SliderSingleBar("mnu_sldr", "Menu Slider")
        self.menu_sldr.max = 20
        self.menu_sldr.min = 0
        self.menu_slctr = dashio.Selector("sltr1", "Menu Selector")
        self.menu.add_control(self.btn3)
        self.menu.add_control(self.btn4)
        self.btn_group.add_button(self.btn5)
        self.btn_group.add_button(self.btn6)
        self.menu.add_control(self.menu_tb)
        self.menu.add_control(self.menu_sldr)
        self.menu.add_control(self.menu_slctr)
        self.device.add_control(self.btn3)
        self.device.add_control(self.btn4)
        self.device.add_control(self.btn5)
        self.device.add_control(self.btn6)
        self.device.add_control(self.menu_tb)
        self.device.add_control(self.menu_sldr)
        self.device.add_control(self.menu_slctr)
Пример #9
0
    def _init_labels(self):
        self.page_label = dashio.Page("label_pg", "Labels")
        self.device.add_control(self.page_label)
        self.label_basic = dashio.Label("label_basic",
                                        "Basic",
                                        style=LabelStyle.BASIC,
                                        control_position=dashio.ControlPosition(0.18, 0.05, 0.7, 0.22))
        self.page_label.add_control(self.label_basic)
        self.device.add_control(self.label_basic)

        self.label_border = dashio.Label("label_border",
                                         "Border",
                                         style=LabelStyle.BORDER,
                                         control_position=dashio.ControlPosition(0.18, 0.31, 0.7, 0.3))
        self.page_label.add_control(self.label_border)
        self.device.add_control(self.label_border)

        self.label_group = dashio.Label("label_group",
                                        "Group",
                                        style=LabelStyle.GROUP,
                                        control_position=dashio.ControlPosition(0.18, 0.65, 0.7, 0.3))
        self.page_label.add_control(self.label_group)
        self.device.add_control(self.label_group)
Пример #10
0
    def _init_knobs(self):
        self.page_knobs = dashio.Page("Testknobs", "Knobs")
        self.knb_normal = dashio.Knob("KNB_NORMAL",
                                      knob_style=dashio.KnobStyle.NORMAL,
                                      control_position=dashio.ControlPosition(0.24, 0.14, 0.54, 0.26))
        self.knb_normal.message_rx_event += self.knb_normal_event_handler
        self.knb_normal.title = "Knob Normal"
        self.knb_normal.max = 10
        self.knb_normal.red_value = 8
        self.page_knobs.add_control(self.knb_normal)

        self.knb_pan = dashio.Knob("KNB_PAN",
                                   knob_style=dashio.KnobStyle.PAN,
                                   control_position=dashio.ControlPosition(0.24, 0.44, 0.54, 0.26))

        self.knb_pan.message_rx_event += self.knb_pan_event_handler
        self.knb_pan.title = "Knob Pan"
        self.knb_pan.max = 10
        self.knb_pan.red_value = 8
        self.page_knobs.add_control(self.knb_pan)
        self.device.add_control(self.page_knobs)
        self.device.add_control(self.knb_normal)
        self.device.add_control(self.knb_pan)
Пример #11
0
    def __init__(self):
        self.shutdown = False

        signal.signal(signal.SIGINT, self.signal_cntrl_c)
        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.dashDevice(args.connection, args.device_id,
                                   args.device_name)
        dash_conn = dashio.dashConnection(args.username, args.password)
        dash_conn.add_device(device)

        self.tapage = dashio.Page("testAlarm", "Test Alarm")
        self.alarm_btn1 = dashio.Button("ALARM_BTN1")
        self.tapage.add_control(self.alarm_btn1)
        self.alarm_btn1.title = "A1"
        self.alarm_btn1.btn_state = dashio.ButtonState.OFF
        self.alarm_btn1.icon_name = dashio.Icon.BELL
        self.alarm_btn1.on_color = dashio.Color.RED
        self.alarm_btn1.text_color = dashio.Color.BLUE
        self.alarm_btn1.message_rx_event += self.alarm_btn1_handler
        device.add_control(self.alarm_btn1)

        self.alarm_btn2 = dashio.Button("ALARM_BTN2")
        self.alarm_btn2.title = "A2"
        self.alarm_btn2.btn_state = dashio.ButtonState.OFF
        self.alarm_btn2.icon_name = dashio.Icon.BELL
        self.alarm_btn2.on_color = dashio.Color.RED
        self.alarm_btn2.text_color = dashio.Color.BLUE
        self.alarm_btn2.message_rx_event += self.alarm_btn2_handler
        device.add_control(self.alarm_btn2)
        self.tapage.add_control(self.alarm_btn2)

        self.alarm_btn3 = dashio.Button("ALARM_BTN3")
        self.alarm_btn3.title = "A3"
        self.alarm_btn3.btn_state = dashio.ButtonState.OFF
        self.alarm_btn3.icon_name = dashio.Icon.BELL
        self.alarm_btn3.on_color = dashio.Color.RED
        self.alarm_btn3.text_color = dashio.Color.BLUE
        self.alarm_btn3.message_rx_event += self.alarm_btn3_handler
        device.add_control(self.alarm_btn3)
        self.tapage.add_control(self.alarm_btn3)

        self.alarm1_ctrl = dashio.Alarm("TestingAlarms1", "Alarm1",
                                        "Hello from Alarm1", "Alarm1")
        self.alarm2_ctrl = dashio.Alarm("TestingAlarms2", "Alarm2",
                                        "Hello from Alarm2", "Alarm2")
        self.alarm3_ctrl = dashio.Alarm("TestingAlarms3", "Alarm3",
                                        "Hello from Alarm3", "Alarm3")
        device.add_control(self.alarm1_ctrl)
        device.add_control(self.alarm2_ctrl)
        device.add_control(self.alarm3_ctrl)
        self.tapage.add_control(self.alarm1_ctrl)
        self.tapage.add_control(self.alarm2_ctrl)
        self.tapage.add_control(self.alarm3_ctrl)
        device.add_control(self.tapage)

        while not self.shutdown:
            time.sleep(1)

        device.close()
Пример #12
0
 def _init_time_graph(self):
     self.time_graph_menu = dashio.Page("time_graph_pg", "Time Graph")
     self.device.add_control(self.time_graph_menu)
Пример #13
0
 def _init_text_box(self):
     self.text_box_menu = dashio.Page("tb_pg", "Text Box")
     self.device.add_control(self.text_box_menu)
Пример #14
0
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()
Пример #15
0
    def __init__(self):

        # 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.dashDevice(args.connection, args.device_id,
                                   args.device_name)
        dash_conn = dashio.dashConnection(args.username, args.password)
        dash_conn.add_device(device)

        self.tmpage = dashio.Page("tmpage", "Test Alarm")
        self.test_menu = dashio.Menu("TestTheMenu",
                                     control_position=dashio.ControlPosition(
                                         0.3, 0.5, 0.5, 0.5))
        self.test_page = dashio.Page("TestCFG", "Test the Menus")
        device.add_control(self.test_page)

        self.up_btn = dashio.Button("UP_BTN")
        self.up_btn.btn_state = dashio.ButtonState.OFF
        self.up_btn.icon_name = dashio.Icon.UP
        self.up_btn.on_color = dashio.Color.GREEN
        self.up_btn.text = "Up Button"
        self.up_btn.text_color = dashio.Color.WHITE
        self.up_btn.title = "Up"
        device.add_control(self.up_btn)
        self.test_menu.add_control(self.up_btn)

        self.down_btn = dashio.Button("DOWN_BTN")
        self.down_btn.btn_state = dashio.ButtonState.OFF
        self.down_btn.icon_name = dashio.Icon.DOWN
        self.down_btn.on_color = dashio.Color.GREEN
        self.down_btn.text = ""
        self.down_btn.text_color = dashio.Color.WHITE
        self.down_btn.title = "Down"
        device.add_control(self.down_btn)
        self.test_menu.add_control(self.down_btn)

        self.sldr_cntrl = dashio.SliderSingleBar("SLDR")
        self.sldr_cntrl.title = "Slider"
        self.sldr_cntrl.max = 10
        self.sldr_cntrl.slider_enabled = True
        self.sldr_cntrl.red_value
        device.add_control(self.sldr_cntrl)
        self.test_menu.add_control(self.sldr_cntrl)

        self.text_cntrl1 = dashio.TextBox("TXT1")
        self.text_cntrl1.text = "Test box1"
        self.text_cntrl1.title = "TextBx1"
        self.text_cntrl1.keyboard_type = dashio.Keyboard.ALL_CHARS
        self.text_cntrl1.close_key_board_on_send = True
        device.add_control(self.text_cntrl1)
        self.test_menu.add_control(self.text_cntrl1)

        self.text_cntrl2 = dashio.TextBox("TXT2")
        self.text_cntrl2.text = "Test box2"
        self.text_cntrl2.title = "TextBx2"
        self.text_cntrl2.keyboard_type = dashio.Keyboard.ALL_CHARS
        self.text_cntrl2.close_key_board_on_send = True
        device.add_control(self.text_cntrl2)
        self.test_menu.add_control(self.text_cntrl2)

        self.selector_ctrl = dashio.Selector("TestSelector", "A Selector")
        self.selector_ctrl.message_rx_event += self.selector_ctrl_handler
        self.selector_ctrl.add_selection("First")
        self.selector_ctrl.add_selection("Second")
        self.selector_ctrl.add_selection("Third")
        self.selector_ctrl.add_selection("Forth")
        self.selector_ctrl.add_selection("Fifth")
        device.add_control(self.selector_ctrl)
        self.test_menu.add_control(self.selector_ctrl)
        self.test_page.add_control(self.test_menu)
        self.button_group_test = dashio.ButtonGroup("TestButtonGRP",
                                                    "A group of buttons")
        self.test_page.add_control(self.button_group_test)
        self.button_group_test.add_button(self.up_btn)
        self.button_group_test.add_button(self.down_btn)
        device.add_control(self.test_menu)
        device.add_control(self.button_group_test)

        while not self.shutdown:
            time.sleep(5)

        device.close()
Пример #16
0
    def __init__(self):

        # 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.dashDevice(args.connection, args.device_id,
                                   args.device_name)
        dash_conn = dashio.dashConnection(args.username, args.password)
        dash_conn.add_device(device)

        self.page_test = dashio.Page("TestPage", "Testing Pages", 1)
        self.up_btn = dashio.Button("UP_BTN")
        self.up_btn.btn_state = dashio.ButtonState.OFF
        self.up_btn.icon_name = dashio.Icon.UP
        self.up_btn.on_color = dashio.Color.GREEN
        self.up_btn.text = ""
        self.up_btn.text_color = dashio.Color.WHITE
        self.up_btn.title = "Up"
        self.up_btn.message_rx_event += self.up_btn_event_handler
        device.add_control(self.up_btn)
        self.page_test.add_control(self.up_btn)

        self.down_btn = dashio.Button("DOWN_BTN")
        self.down_btn.btn_state = dashio.ButtonState.OFF
        self.down_btn.icon_name = dashio.Icon.DOWN
        self.down_btn.on_color = dashio.Color.GREEN
        self.down_btn.text = ""
        self.down_btn.text_color = dashio.Color.WHITE
        self.down_btn.title = "Down"
        self.down_btn.message_rx_event += self.down_btn_event_handler
        device.add_control(self.down_btn)
        self.page_test.add_control(self.down_btn)

        self.sldr_cntrl = dashio.SliderSingleBar("SLDR")
        self.sldr_cntrl.title = "Slider"
        self.sldr_cntrl.max = 10
        self.sldr_cntrl.slider_enabled = True
        self.sldr_cntrl.red_value
        self.sldr_cntrl.message_rx_event += self.slider_event_handler
        device.add_control(self.sldr_cntrl)
        self.page_test.add_control(self.sldr_cntrl)

        self.sldr_dbl_cntrl = dashio.SliderDoubleBar("SLDR_DBL")
        self.sldr_dbl_cntrl.title = "Slider Double"
        self.sldr_dbl_cntrl.max = 5
        self.sldr_dbl_cntrl.slider_enabled = True
        self.sldr_dbl_cntrl.red_value
        self.sldr_dbl_cntrl.message_rx_event += self.slider_dbl_event_handler
        device.add_control(self.sldr_dbl_cntrl)
        self.page_test.add_control(self.sldr_dbl_cntrl)

        self.knb_control = dashio.Knob("KNB")
        self.knb_control.title = "A Knob"
        self.knb_control.max = 10
        self.knb_control.red_value = 10
        self.knb_control.message_rx_event += self.knob_event_handler
        device.add_control(self.knb_control)
        self.page_test.add_control(self.knb_control)

        self.dl_control = dashio.Dial("DIAL1")
        self.dl_control.title = "A Dial"
        self.dl_control.max = 10
        device.add_control(self.dl_control)
        self.page_test.add_control(self.dl_control)

        self.text_cntrl = dashio.TextBox("TXT1")
        self.text_cntrl.text = "Hello"
        self.text_cntrl.title = "A text control"
        self.text_cntrl.keyboard_type = dashio.Keyboard.ALL_CHARS
        self.text_cntrl.close_key_board_on_send = True
        self.text_cntrl.message_rx_event += self.text_cntrl_message_handler
        device.add_control(self.text_cntrl)
        self.page_test.add_control(self.text_cntrl)

        self.alarm_ctrl = dashio.Alarm("TestingAlarms", "Test Alarms", "Hello",
                                       "Test of Shared Alarms")
        device.add_control(self.alarm_ctrl)
        self.comp_control = dashio.Compass("COMP1")
        self.comp_control.title = "A compass"
        device.add_control(self.comp_control)
        self.page_test.add_control(self.comp_control)

        self.selector_ctrl = dashio.Selector("TestSelector", "A Selector")
        self.selector_ctrl.message_rx_event += self.selector_ctrl_handler
        self.selector_ctrl.add_selection("First")
        self.selector_ctrl.add_selection("Second")
        self.selector_ctrl.add_selection("Third")
        self.selector_ctrl.add_selection("Forth")
        self.selector_ctrl.add_selection("Fifth")
        device.add_control(self.selector_ctrl)
        self.page_test.add_control(self.selector_ctrl)

        self.label_ctrl = dashio.Label("LabelID",
                                       "A label",
                                       color=dashio.Color.BLUE)
        device.add_control(self.label_ctrl)
        self.page_test.add_control(self.label_ctrl)
        device.add_control(self.page_test)

        while not self.shutdown:
            time.sleep(5)

            self.comp_control.direction_value = random.random() * 360

        device.send_popup_message("TestControls", "Shutting down", "Goodbye")
        device.close()
Пример #17
0
    def __init__(self):

        # 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("   Serving on: ZMQ")
        logging.info("Connection ID: %s", args.connection)
        logging.info("    Device ID: %s", args.device_id)
        logging.info("  Device Name: %s", args.device_name)

        self.device = dashio.dashDevice(args.connection, args.device_id,
                                        args.device_name)
        time.sleep(1)
        self.zmq_con = dashio.zmqConnection(pub_port=args.pub_port,
                                            sub_port=args.sub_port)
        time.sleep(1)
        self.zmq_con.add_device(self.device)

        self.connection = args.connection
        self.page_name = "TestZMQ: " + platform.node()

        self.page_test = dashio.Page("TestZMQ", self.page_name, 1)
        self.up_btn = dashio.Button("UP_BTN",
                                    control_position=dashio.ControlPosition(
                                        0.02, 0.01, 0.22, 0.12))
        self.up_btn.btn_state = dashio.ButtonState.OFF
        self.up_btn.icon_name = dashio.Icon.UP
        self.up_btn.on_color = dashio.Color.GREEN
        self.up_btn.text = ""
        self.up_btn.text_color = dashio.Color.WHITE
        self.up_btn.title = "Up"
        self.up_btn.message_rx_event += self.up_btn_event_handler
        self.page_test.add_control(self.up_btn)

        self.down_btn = dashio.Button("DOWN_BTN",
                                      control_position=dashio.ControlPosition(
                                          0.02, 0.78, 0.22, 0.12))
        self.down_btn.btn_state = dashio.ButtonState.OFF
        self.down_btn.icon_name = dashio.Icon.DOWN
        self.down_btn.on_color = dashio.Color.GREEN
        self.down_btn.text = ""
        self.down_btn.text_color = dashio.Color.WHITE
        self.down_btn.title = "Down"
        self.down_btn.message_rx_event += self.down_btn_event_handler
        self.page_test.add_control(self.down_btn)

        self.sldr_cntrl = dashio.SliderSingleBar(
            "SLDR",
            control_position=dashio.ControlPosition(0.02, 0.13, 0.22, 0.65))
        self.sldr_cntrl.title = "Slider"
        self.sldr_cntrl.max = 10
        self.sldr_cntrl.slider_enabled = True
        self.sldr_cntrl.red_value
        self.sldr_cntrl.message_rx_event += self.slider_event_handler
        self.page_test.add_control(self.sldr_cntrl)

        self.sldr_dbl_cntrl = dashio.SliderDoubleBar(
            "SLDR_DBL",
            control_position=dashio.ControlPosition(0.78, 0.01, 0.2, 0.89))
        self.sldr_dbl_cntrl.title = "Slider Double"
        self.sldr_dbl_cntrl.max = 5
        self.sldr_dbl_cntrl.slider_enabled = True
        self.sldr_dbl_cntrl.red_value
        self.sldr_dbl_cntrl.message_rx_event += self.slider_dbl_event_handler
        self.page_test.add_control(self.sldr_dbl_cntrl)

        self.knb_control = dashio.Knob("KNB",
                                       control_position=dashio.ControlPosition(
                                           0.24, 0.14, 0.54, 0.21))
        self.knb_control.title = "A Knob"
        self.knb_control.max = 10
        self.knb_control.red_value = 10
        self.knb_control.message_rx_event += self.knob_event_handler
        self.page_test.add_control(self.knb_control)

        self.dl_control = dashio.Dial("DIAL1",
                                      control_position=dashio.ControlPosition(
                                          0.24, 0.57, 0.54, 0.21))
        self.dl_control.title = "A Dial"
        self.dl_control.max = 10
        self.page_test.add_control(self.dl_control)

        self.text_cntrl = dashio.TextBox(
            "TXT1",
            control_position=dashio.ControlPosition(0.24, 0.78, 0.54, 0.12))
        self.text_cntrl.text = "Hello"
        self.text_cntrl.title = "A text control"
        self.text_cntrl.keyboard_type = dashio.Keyboard.ALL_CHARS
        self.text_cntrl.close_key_board_on_send = True
        self.text_cntrl.message_rx_event += self.text_cntrl_message_handler
        self.page_test.add_control(self.text_cntrl)

        self.alarm_ctrl = dashio.Alarm("TestingAlarms", "Test Alarms", "Hello",
                                       "Test of Shared Alarms")
        self.device.add_control(self.alarm_ctrl)
        self.comp_control = dashio.Compass(
            "COMP1",
            control_position=dashio.ControlPosition(0.24, 0.35, 0.54, 0.22))
        self.comp_control.title = "A compass"
        self.page_test.add_control(self.comp_control)

        self.selector_ctrl = dashio.Selector(
            "TestSelector",
            "A Selector",
            control_position=dashio.ControlPosition(0.24, 0.01, 0.54, 0.13))
        self.selector_ctrl.message_rx_event += self.selector_ctrl_handler
        self.selector_ctrl.add_selection("First")
        self.selector_ctrl.add_selection("Second")
        self.selector_ctrl.add_selection("Third")
        self.selector_ctrl.add_selection("Forth")
        self.selector_ctrl.add_selection("Fifth")

        self.page_test.add_control(self.selector_ctrl)

        self.label_ctrl = dashio.Label(
            "LabelID",
            "A label",
            style=dashio.LabelStyle.GROUP,
            color=dashio.Color.BLUE,
            control_position=dashio.ControlPosition(0.0, 0.0, 1.0, 0.93),
        )
        self.page_test.add_control(self.label_ctrl)

        self.device.add_control(self.label_ctrl)
        self.device.add_control(self.page_test)
        self.device.add_control(self.selector_ctrl)
        self.device.add_control(self.comp_control)
        self.device.add_control(self.text_cntrl)
        self.device.add_control(self.dl_control)
        self.device.add_control(self.knb_control)
        self.device.add_control(self.sldr_dbl_cntrl)
        self.device.add_control(self.sldr_cntrl)
        self.device.add_control(self.down_btn)
        self.device.add_control(self.up_btn)

        while not self.shutdown:
            time.sleep(5)
            self.comp_control.direction_value = random.random() * 360

        self.device.send_popup_message("TestControls", "Shutting down",
                                       "Goodbye")
        time.sleep(1)
        self.device.close()
        self.zmq_con.close()
Пример #18
0
    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.dashDevice(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.time_scale = dashio.TimeGraphTimeScale.FIFTEENMINS
        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.time_scale = dashio.TimeGraphTimeScale.ONEDAY
        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.time_scale = dashio.TimeGraphTimeScale.ONEWEEK
        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.time_scale = dashio.TimeGraphTimeScale.ONEYEAR
        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.max = 50

        dl_daily_max_ctrl = dashio.Dial("TemperatureMaxDial")
        dl_daily_max_ctrl.title = "Daily Max"
        dl_daily_max_ctrl.max = 50

        dl_daily_min_ctrl = dashio.Dial("TemperatureMinDial")
        dl_daily_min_ctrl.title = "Daily Min"
        dl_daily_min_ctrl.max = 50

        self.page = dashio.Page("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()