示例#1
0
    def init_oled(self):
        self.oled_reset = 13
        self.reset_oled()
        import dbus
        service = "LCDd.service"
        bus = dbus.SystemBus()
        systemd = bus.get_object('org.freedesktop.systemd1',
                                 '/org/freedesktop/systemd1')
        manager = dbus.Interface(systemd, 'org.freedesktop.systemd1.Manager')
        manager.RestartUnit(service, 'replace')

        run = False
        while run != True:
            try:
                self.lcd = Server("127.0.0.1", debug=False)
                self.lcd.start_session()
                run = True
            except:
                logger.info("Waiting for LDCd ...")
                time.sleep(.1)
                run = False

        self.screenVol = self.lcd.add_screen("Screen_vol")
        self.screenVol.set_heartbeat("off")
        self.screenVol.set_priority("background")

        self.screenMsg = self.lcd.add_screen("Screen_msg")
        self.screenMsg.set_heartbeat("off")
        self.screenMsg.set_priority("background")

        self.screenClear = self.lcd.add_screen("Screen_clear")
        self.screenClear.set_heartbeat("off")
        self.screenClear.set_priority("background")
示例#2
0
def write_to_lcd():
    lcd = Server("localhost", debug=False)
    lcd.start_session()

    screen1 = lcd.add_screen("screen1")
    screen1.set_heartbeat("off")

    system_uptime = os.popen('uptime | cut -c 13-19').read()
    system_uptime = system_uptime.rstrip()

    (lan_bytes_rx, lan_bytes_tx, wan_bytes_rx, wan_bytes_tx, lan_state_isup,
     wan_state_isup) = router_stats.interface_stats()
    user_load, system_load, irq_load = router_stats.cpu_load_stats()
    mem_used_percent = router_stats.mem_load_stats()

    string_widget = screen1.add_string_widget("wan_info_title",
                                              text="WAN data (gb):",
                                              x=1,
                                              y=1)

    string_widget = screen1.add_string_widget(
        "wan_info_data",
        text="RX:{0:.2f} ||TX:{1:.2f}".format(wan_bytes_rx / 1073741824,
                                              wan_bytes_tx / 1073741824),
        x=1,
        y=2)

    string_widget = screen1.add_string_widget("lan_info_title",
                                              text="LAN data (gb):",
                                              x=1,
                                              y=3)
    string_widget = screen1.add_string_widget(
        "lan_info_data",
        text="RX:{0:.2f} ||TX:{1:.2f}".format(lan_bytes_rx / 1073741824,
                                              lan_bytes_tx / 1073741824),
        x=1,
        y=4)

    string_widget = screen1.add_string_widget("cpu_info_title",
                                              text="CPU load:",
                                              x=1,
                                              y=5)
    string_widget = screen1.add_string_widget(
        "cpu_info_data",
        text="U: {0:.0f}% S: {1:.0f}% I: {2:.0f}%".format(
            user_load, system_load, irq_load),
        x=1,
        y=6)

    string_widget = screen1.add_string_widget(
        "mem_info",
        text="MEM load: {0:.1f}% used".format(mem_used_percent),
        x=1,
        y=7)

    string_widget = screen1.add_string_widget(
        "sys_uptime", text="Uptime: {0}".format(system_uptime), x=1, y=8)
示例#3
0
def main():
    current_isp_index = 0

    try:
        lcd = Server("localhost", debug=False)
        lcd.start_session()

        sc = lcd.add_screen("home")
        sc.set_heartbeat("off")
        sc.set_duration(10)

        line1 = sc.add_string_widget("Line1Widget", text="Init...", x=1, y=1)
        line2 = sc.add_scroller_widget("Line2Widget",
                                       text="",
                                       speed=6,
                                       top=2,
                                       right=16)

        last_calibration = get_calibration()

        update_display(line1, line2, current_isp_index)
        update_shaping(last_calibration, current_isp_index)

        lcd.add_key("Down")
        lcd.add_key("Up")

        last_update_time = time.time()
        while (True):
            key = lcd.poll()
            if key is not None:
                favorites = get_favorites()
                if key == "key Down\n":
                    current_isp_index += 1
                    if current_isp_index == len(favorites):
                        current_isp_index = 0
                elif key == "key Up\n":
                    current_isp_index -= 1
                    if current_isp_index < 0:
                        current_isp_index = len(favorites) - 1
                else:
                    print(("Unknown key: ", key))
                update_display(line1, line2, current_isp_index)
                # reload the calibration, in case it has updated
                last_calibration = get_calibration()
                update_shaping(last_calibration, current_isp_index)
                last_update_time = time.time()
            # watch for file changes on LASTDISPLAY_FULLPATH
            elif os.path.isfile(LASTDISPLAY_FULLPATH) and os.stat(
                    LASTDISPLAY_FULLPATH).st_mtime > last_update_time:
                last_update_time = time.time()
                with open(LASTDISPLAY_FULLPATH) as f:
                    line1.set_text(f.readline().split("\n")[0])
                    line2.set_text(f.readline().split("\n")[0])

            time.sleep(0.2)
    except ConnectionRefusedError:
        print("display: problem connecting to lcdproc, shutting down")
示例#4
0
 def __init__(self, server = "localhost", debug = False):
     self._logger = logging.getLogger(__name__)
     self.__lcd = Server(server, debug=debug)
     self.__lcd.start_session()
     self.__screen = self.__lcd.add_screen("screen")
     self.__screen.set_heartbeat("off")
     self.__screen.set_priority("foreground")
     self.__line1 = self.__screen.add_string_widget("line1", text="", x=1, y=1)
     self.__line2 = self.__screen.add_string_widget("line2", text="", x=1, y=2)
     self.__line3 = self.__screen.add_string_widget("line3", text="", x=1, y=3)
     self.__line4 = self.__screen.add_string_widget("line4", text="", x=1, y=4)
 def __init__(self, tracklog_source_dir, tracklog_export_dir):
     Thread.__init__(self)
     self.daemon = True
     self.__tracklog_source_dir = tracklog_source_dir
     self.__tracklog_export_dir = tracklog_export_dir
     self.__lcd = Server()
     self.__lcd.start_session()
     self.__screen = self.__lcd.add_screen("exporter")
     self.__screen.set_priority("hidden")
     self.__title_widget = self.__screen.add_string_widget("title", "", y=1)
     self.__progress_widget = self.__screen.add_hbar_widget("status",
                                                            y=2,
                                                            length=0)
 def __init__(self, database_filename, source, pause_func, unpause_func):
   Thread.__init__(self)
   self.daemon = True
   self.__database_filename = database_filename
   self.__source = source
   self.__pause_func = pause_func
   self.__unpause_func = unpause_func
   self.__lcd = Server()
   self.__lcd.start_session()
   self.__screen = self.__lcd.add_screen("loader")
   self.__screen.set_priority("hidden")
   self.__title_widget = self.__screen.add_string_widget("title","",y=1)
   self.__progress_widget = self.__screen.add_hbar_widget("status",y=2,length=0)
示例#7
0
    def __init__(self):
        self.__lcd = Server()
        self.__lcd.start_session()
        self.__screen = self.__lcd.add_screen("dashboard")
        self.__screen.set_heartbeat("off")
        self.__screen.set_priority("info")

        self.__clock_widget = self.__screen.add_string_widget("time", "")
        self.__speed_widget = self.__screen.add_string_widget("speed",
                                                              "",
                                                              y=2,
                                                              x=1)
        self.__bearing_widget = self.__screen.add_string_widget("bearing",
                                                                "",
                                                                y=2,
                                                                x=14)
示例#8
0
    def __init__(self):
        self.__lcd = Server()
        self.__lcd.start_session()
        self.__screen = self.__lcd.add_screen("cache")
        self.__screen.set_heartbeat("off")
        self.__screen.set_duration(10)
        self.__screen.set_priority("hidden")

        self.__title_widget = self.__screen.add_scroller_widget(
            "title", 1, 1, 12, 1, "h", 1, "")
        self.__code_widget = self.__screen.add_string_widget("code", "", y=2)
        self.__distance_to_cache_widget = self.__screen.add_string_widget(
            "dist", "", y=2, x=9)
        self.__bearing_to_cache_widget = self.__screen.add_string_widget("btc",
                                                                         "",
                                                                         y=2,
                                                                         x=14)
        self.__bearing_widget = self.__screen.add_string_widget("bearing",
                                                                "",
                                                                y=1,
                                                                x=14)
示例#9
0
def main():

    lcd = Server("media", debug=False)
    lcd.start_session()

    screen1 = lcd.add_screen("Screen1")
    screen1.set_heartbeat("off")
    screen1.set_duration(10)

    screen2 = lcd.add_screen("Screen2")
    screen2.set_heartbeat("off")
    screen2.set_duration(2)

    #string_widget = screen.add_string_widget("MyStringWidget", text="TestwWEJIowejioewjio", x=1, y=2)
    #scroller_widget = screen.add_scroller_widget("MyScrollerWidget", text="This Is A Test Message, Yeah, Yeah, Yeah", speed=2)
    #hbar_widget = screen.add_hbar_widget("MyHBarWidget", x=1, y=4, length=60)
    #frame_widget = screen.add_frame_widget("MyFrameWidget")

    num1_widget = screen1.add_number_widget("MyNumber1Widget", x=1, value=0)
    num2_widget = screen1.add_number_widget("MyNumber2Widget", x=5, value=0)
    num3_widget = screen1.add_number_widget("MyNumber3Widget", x=9, value=0)
    num4_widget = screen1.add_number_widget("MyNumber4Widget", x=13, value=0)

    time.sleep(2)

    progress = 0

    while True:

        num1_widget.set_value(progress)
        num2_widget.set_value(progress)
        num3_widget.set_value(progress)
        num4_widget.set_value(progress)

        time.sleep(0.5)

        progress = progress + 1
        if progress > 9: progress = 0
示例#10
0
def main():
    logInfo("Starting up...")
    while True:
        try:
            lcd = Server("localhost", debug=False)
            lcd.start_session()
            logInfo("Connected to LCDd")

            lcd.add_key("Up")
            lcd.add_key("Down")

            screen1 = lcd.add_screen("Screen1")
            screen1.set_heartbeat("off")

            line1_widget = screen1.add_scroller_widget("line1",
                                                       left=1,
                                                       top=1,
                                                       right=20,
                                                       bottom=1,
                                                       speed=10,
                                                       text="")
            line2_widget = screen1.add_scroller_widget("line2",
                                                       left=1,
                                                       top=2,
                                                       right=20,
                                                       bottom=2,
                                                       speed=10,
                                                       text="")

            currentIndex = 0

            logInfo("Entering endless loop...")
            while True:

                interfaceNames = sorted(netifaces.interfaces())

                interfaceNames = filter(lambda name: not name in ["lo"],
                                        interfaceNames)

                currentIndex = max(0, min(currentIndex,
                                          len(interfaceNames) - 1))
                currentInterfaceName = interfaceNames[currentIndex]

                line1 = currentInterfaceName + ": "
                line2 = ""
                addresses = netifaces.ifaddresses(currentInterfaceName)

                if netifaces.AF_INET in addresses:
                    line1 += addresses[netifaces.AF_INET][0]['addr']

                if netifaces.AF_INET6 in addresses:
                    line2 += addresses[netifaces.AF_INET6][0]['addr']

                line1_widget.set_text(line1)
                line2_widget.set_text(line2)

                time.sleep(0.1)

                while True:
                    event = lcd.poll()
                    if not event:
                        break
                    event = string.strip(event)
                    if event == "key Up":
                        currentIndex = currentIndex + 1
                    elif event == "key Down":
                        currentIndex = currentIndex - 1
        # probably it's better to just quit together with LCDd, therefore it's commented out...
        #except socket.error, EOFError:
        #    logWarn("Error connecting to LCDd, retrying in 30 seconds...")
        #    time.sleep(30)
        except Exception as e:
            logError(e, "Error reached toplevel, exiting with exit code 42")
            sys.exit(42)
示例#11
0
def main():

    signal.signal(signal.SIGALRM, handler)

    # Initialize the LCD object instance
    lcd = Server(debug=False)
    lcd.start_session()
    lcd.add_key("Up")
    lcd.add_key("Down")
    lcd.add_key("Right")
    lcd.add_key("Left")
    lcd.add_key("Enter")

    # Initialize root/initial cfaScreen instance
    cfaScreen = home_screen.get()

    # Append Screens to base cfaInstance
    cfaScreen.pushDownScreen(sys_screens.get())
    cfaScreen.pushDownScreen(IntelHDA_screens.get())

    # Spawn the initial screen
    screen = genScreen(lcd, cfaScreen)

    # Loop logic... (read events and react)
    try:
        while True:
            signal.alarm(1)
            try:
                event = lcd.poll()
            except:
                event = None
            finally:
                signal.alarm(0)
            if not event == None:
                lines = event.splitlines()
                if lines[0] == 'key Enter':
                    cfaScreen.handleEnter(screen)
                elif lines[0] == 'key Up':
                    if cfaScreen.upScreen == None and cfaScreen.downScreen == None:
                        cfaScreen.handleUp(screen)
                    elif not cfaScreen.upScreen == None:
                        clearScreen(lcd, cfaScreen)
                        cfaScreen = cfaScreen.upScreen
                        screen = genScreen(lcd, cfaScreen)
                    else:
                        pass
                elif lines[0] == 'key Down':
                    if cfaScreen.downScreen == None and cfaScreen.upScreen == None:
                        cfaScreen.handleDown(screen)
                    elif not cfaScreen.downScreen == None:
                        clearScreen(lcd, cfaScreen)
                        cfaScreen = cfaScreen.downScreen
                        screen = genScreen(lcd, cfaScreen)
                    else:
                        pass
                elif lines[0] == 'key Right':
                    if not cfaScreen.nextScreen == None:
                        clearScreen(lcd, cfaScreen)
                        cfaScreen = cfaScreen.nextScreen
                        screen = genScreen(lcd, cfaScreen)
                    else:
                        pass
                elif lines[0] == 'key Left':
                    if not cfaScreen.prevScreen == None:
                        clearScreen(lcd, cfaScreen)
                        cfaScreen = cfaScreen.prevScreen
                        screen = genScreen(lcd, cfaScreen)
                    else:
                        pass
            else:
                # Here the update functions are called
                if cfaScreen.ready():
                    cfaScreen.updateWidgets(screen)
        time.sleep(0.100)
    # LCD Cleanup on exit
    finally:
        # Execute closing code before clearing screen
        clearScreen(lcd, cfaScreen)
示例#12
0
def main():

    lcd = Server("localhost", debug=False)
    lcd.start_session()

    screen1 = lcd.add_screen("Screen1")
    screen1.set_heartbeat("off")

    # hostname/time
    uname = os.uname()[1]
    uname = uname.ljust(10)
    text1 = uname + time.strftime("%H:%M:%S")
    line1 = screen1.add_string_widget("String1", text=text1, x=1, y=1)

    # load
    load = os.getloadavg()
    text2 = "Load %.2f/%.2f/%.2f" % (load[0], load[1], load[2])
    line2 = screen1.add_string_widget("String2", text=text2, x=1, y=2)

    # CPU usage
    text3 = "CPU "
    usage = commands.getoutput(
        "vmstat | tail -1 | awk '{print $15 \" \" $14 \" \" $13}'")
    usage = usage.split(" ")
    text3 = "CPU %s%%u %s%%i %s%%s" % (usage[2], usage[0], usage[1])
    line3 = screen1.add_string_widget("String3", text=text3, x=1, y=3)

    # mem/swap
    mem = commands.getoutput("free | grep '^Mem:' | awk '{print $4 \" \" $2}'")
    mem = mem.split(" ")  # 0 = free 1 = total
    mem = (float(mem[0]) / float(mem[1])) * 100.0
    swap = commands.getoutput(
        "free | grep '^Swap:' | awk '{print $4 \" \" $2}'")
    swap = swap.split(" ")  # 0 = free 1 = total
    swap = (float(swap[0]) / float(swap[1])) * 100.0
    text4 = "free M:%.1f S:%.1f" % (mem, swap)
    line4 = screen1.add_string_widget("String4", text=text4, x=1, y=4)

    sep = ":"

    while True:
        text1 = uname + time.strftime("%H:%M:%S")
        line1.set_text(text1)

        load = os.getloadavg()
        text2 = "Load" + sep + "%.2f/%.2f/%.2f" % (load[0], load[1], load[2])
        line2.set_text(text2)

        usage = commands.getoutput(
            "vmstat | tail -1 | awk '{print $15 \" \" $14 \" \" $13}'")
        usage = usage.split(" ")
        text3 = "CPU" + sep + "%s%%u %s%%i %s%%s" % (usage[2], usage[0],
                                                     usage[1])
        line3.set_text(text3)

        mem = commands.getoutput(
            "free | grep '^Mem:' | awk '{print $4 \" \" $2}'")
        mem = mem.split(" ")  # 0 = free 1 = total
        mem = (float(mem[0]) / float(mem[1])) * 100.0
        swap = commands.getoutput(
            "free | grep '^Swap:' | awk '{print $4 \" \" $2}'")
        swap = swap.split(" ")  # 0 = free 1 = total
        swap = (float(swap[0]) / float(swap[1])) * 100.0
        text4 = "free" + sep + "M:%.1f%% S:%.1f%%" % (mem, swap)
        line4.set_text(text4)

        if sep == ":":
            sep = " "
        else:
            sep = ":"

        time.sleep(1)