Esempio n. 1
0
def main() -> None:
    logging.basicConfig(level=logging.INFO, format="%(message)s")
    logging.getLogger("PIL").setLevel(logging.ERROR)

    parser = cmdline.create_parser(
        description="Display FQDN and IP on the OLED")
    parser.add_argument("--font",
                        default="/usr/share/fonts/TTF/ProggySquare.ttf",
                        help="Font path")
    parser.add_argument("--font-size", default=16, type=int, help="Font size")
    parser.add_argument("--interval",
                        default=5,
                        type=int,
                        help="Screens interval")
    options = parser.parse_args(sys.argv[1:])
    if options.config:
        config = cmdline.load_config(options.config)
        options = parser.parse_args(config + sys.argv[1:])

    device = cmdline.create_device(options)
    font = ImageFont.truetype(options.font, options.font_size)

    display_types = cmdline.get_display_types()
    if options.display not in cmdline.get_display_types()["emulator"]:
        _logger.info("Iface: %s", options.interface)
    _logger.info("Display: %s", options.display)
    _logger.info("Size: %dx%d", device.width, device.height)

    try:
        summary = True
        while True:
            with canvas(device) as draw:
                if summary:
                    text = f"{socket.getfqdn()}\nUp: {_get_uptime()}"
                else:
                    text = f"Iface: %s\n%s" % (_get_ip())
                draw.multiline_text((0, 0), text, font=font, fill="white")
                summary = (not summary)
                time.sleep(options.interval)
    except (SystemExit, KeyboardInterrupt):
        pass
Esempio n. 2
0
def display_settings(args):
    """
    Display a short summary of the settings.
    :rtype: str
    """
    iface = ''
    display_types = cmdline.get_display_types()
    if args.display not in display_types['emulator']:
        iface = 'Interface: {}\n'.format(args.interface)

    return 'Display: {}\n{}Dimensions: {} x {}\n{}'.format(
        args.display, iface, args.width, args.height, '-' * 40)
Esempio n. 3
0
    def display_settings(self, args):
        """ Display a short summary of the settings. :rtype: str """
        iface = ''
        display_types = cmdline.get_display_types()
        if args.display not in display_types['emulator']:
            iface = 'Interface: {}\n'.format(args.interface)

        lib_name = cmdline.get_library_for_display_type(args.display)
        if lib_name is not None:
            lib_version = cmdline.get_library_version(lib_name)
        else:
            lib_name = lib_version = 'unknown'

        version = 'luma.{} {} (luma.core {})'.format(lib_name, lib_version,
                                                     __version__)

        return 'Version: {}\nDisplay: {}\n{}Dimensions: {} x {}\n{}'.format(
            version, args.display, iface, args.width, args.height, '-' * 60)
Esempio n. 4
0
def display_settings(args):
    """
    Display a short summary of the settings.
    :rtype: str
    """
    iface = ""
    display_types = cmdline.get_display_types()
    if args.display not in display_types["emulator"]:
        iface = f"Interface: {args.interface}\n"

    lib_name = cmdline.get_library_for_display_type(args.display)
    if lib_name is not None:
        lib_version = cmdline.get_library_version(lib_name)
    else:
        lib_name = lib_version = "unknown"

    version = f"luma.{lib_name} {lib_version} (luma.core {luma.core.__version__})"

    return f"Version: {version}\nDisplay: {args.display}\n{iface}Dimensions: {args.width} x {args.height}"
Esempio n. 5
0
def display_settings(args):
    """
    Display a short summary of the settings.
    :rtype: str
    """
    iface = ""
    display_types = cmdline.get_display_types()
    if args.display not in display_types["emulator"]:
        iface = "Interface: "

    lib_name = cmdline.get_library_for_display_type(args.display)
    if lib_name is not None:
        lib_version = cmdline.get_library_version(lib_name)
    else:
        lib_name = lib_version = "unknown"

    version = ""

    return ""
Esempio n. 6
0
def display_settings(args):
    """
    Display a short summary of the settings.

    :rtype: str
    """
    iface = ""
    display_types = cmdline.get_display_types()
    if args.display not in display_types["emulator"]:
        iface = "Interface: {}\n".format(args.interface)

    lib_name = cmdline.get_library_for_display_type(args.display)
    if lib_name is not None:
        lib_version = cmdline.get_library_version(lib_name)
    else:
        lib_name = lib_version = "unknown"

    import luma.core

    version = "luma.{} {} (luma.core {})".format(lib_name, lib_version,
                                                 luma.core.__version__)

    return "Version: {}\nDisplay: {}\n{}Dimensions: {} x {}\n{}".format(
        version, args.display, iface, args.width, args.height, "-" * 60)
Esempio n. 7
0
def test_get_display_types():
    """
    Enumerate display types.
    """
    assert list(cmdline.get_display_types().keys()) == \
        cmdline.get_supported_libraries()
Esempio n. 8
0
def main() -> None:
    logging.basicConfig(level=logging.INFO, format="%(message)s")
    logging.getLogger("PIL").setLevel(logging.ERROR)

    parser = cmdline.create_parser(
        description="Display FQDN and IP on the OLED")
    parser.add_argument("--font",
                        default="/usr/share/fonts/TTF/ProggySquare.ttf",
                        help="Font path")

    ### srepac change - to make it fit into 3 lines on small oled or 5 lines on big oled -- each row limited to 19 chars
    parser.add_argument("--font-size", default=15, type=int, help="Font size")

    parser.add_argument("--interval",
                        default=5,
                        type=int,
                        help="Screens interval")
    options = parser.parse_args(sys.argv[1:])
    if options.config:
        config = cmdline.load_config(options.config)
        options = parser.parse_args(config + sys.argv[1:])

    device = cmdline.create_device(options)
    font = ImageFont.truetype(options.font, options.font_size)

    display_types = cmdline.get_display_types()
    if options.display not in cmdline.get_display_types()["emulator"]:
        _logger.info("Iface: %s", options.interface)
    _logger.info("Display: %s", options.display)
    _logger.info("Size: %dx%d", device.width, device.height)

    try:
        ### srepac changes to show during service start up
        with canvas(device) as draw:
            text = f"kvmd-oled.64\nby srepac\n\nInitializing...\n"
            draw.multiline_text((0, 0),
                                text,
                                font=font,
                                fill="white",
                                align="center")
        screen = 0
        ###
        while True:
            with canvas(device) as draw:
                ### srepac changes to have different screens using modulo division (up to 5 lines per screen)
                rem = screen % 3
                if rem == 0:  ### first page is fqdn, model number, image (v2-hdmi, v2-hdmiusb, etc...) + kvmd ver, and date
                    x = os.popen(" date +\"%D %H:%M %Z\" ")
                    date = x.read().replace('\n', '')
                    x = os.popen(
                        " pistat | grep Pi | awk '{print $4, $5, $6, $7, $8, $9}' | sed -e 's/ Model //g' -e 's/  / /g'"
                    )
                    model = x.read().replace('\n', '')
                    x = os.popen(
                        " pacman -Q | grep kvmd-platform | cut -d'-' -f3,4 ")
                    img = x.read().replace('\n', '')
                    x = os.popen(
                        " pacman -Q | grep kvmd' ' | awk '{print $NF}' | sed 's/-[1-9]//g' "
                    )
                    kvmdver = x.read().replace('\n', '')
                    x = os.popen(
                        " free -m | grep Mem: | awk '{print \"RAM:\", $3 \"/\" $2 \" MB\"}' "
                    )
                    ram = x.read().replace('\n', '')
                    #x = os.popen(" pacman -Q | grep ustreamer | awk '{print $NF}' | sed 's/-[1-9]//g' ")
                    #ustreamer = x.read().replace('\n', '')
                    # ALTERNATE screen which includes ustreamer version
                    #text = f"{socket.getfqdn()}\nPi {model}\n{img} v{kvmdver}\nustreamer v{ustreamer}\n{date}"
                    text = f"{socket.getfqdn()}\nPi {model}\n{img} v{kvmdver}\n{ram}\n{date}"
                elif rem == 1:  ### 2nd page shows both eth/wlan IP, SSID, and cpu/gpu temps
                    x = os.popen(" pistat | grep temp | cut -d' ' -f 3 ")
                    temps = x.read().replace('\n', ' ')
                    connstatus = os.popen(
                        " count=0; ethip=$( ip -o a show | grep -v inet6 | awk '{print $2, $4}' | cut -d'/' -f1 | egrep 'eth|br' ); ssid=$( netctl-auto list | grep '*' | awk -F\- '{print $NF}' ) ; if [[ \"$ethip\" != \"\" ]]; then printf \"%s %s\n\" $ethip; count+=1; else echo \"LAN not connected\"; fi; if [[ \"$ssid\" == \"\" ]]; then echo \"Wifi not connected\" ; else echo \"SSID $ssid\"; count+=1; fi ; if [[ $count -gt 0 ]]; then printf \"%s %s\n\" $( ip -o a show | grep -v inet6 | awk '{print $2, $4}' | cut -d'/' -f1 | egrep 'tailscale|wlan' | sed 's/tailscale/ts/g' ); fi "
                    )
                    text = f"Temp {temps}\n{connstatus.read()}"
                else:  ### last page shows uptime, load avgs, and sd card usage % and free space
                    x = os.popen(
                        " for i in `mount | grep mmc | awk '{print $1}' | sort | grep -v p1`; do echo -n `df -h $i | grep -v Filesystem | sort | awk '{print $1, $5, $4}' | sed -e 's+/dev/mmcblk0++g' -e 's+p3+msd+' -e 's+p2+/+' -e 's+p1+/boot+'`' '; mount | grep $i | awk '{print $NF}' | awk -F, '{print $1}' | sed 's/(//g'; done "
                    )
                    sdcard = x.read()
                    load1, load5, load15 = os.getloadavg()
                    x = os.popen(
                        " num=$( uptime | awk -F'user' '{print $1}' | awk '{print $NF}' ); if [[ $num -gt 1 || $num -eq 0 ]]; then echo $num users; else echo $num user; fi "
                    )
                    users = x.read().replace('\n', '')
                    text = f"{_get_uptime()}, {users}\n{load1}, {load5}, {load15}\n---storage---\n{sdcard}"
                screen += 1
                draw.multiline_text((0, 0), text, font=font, fill="white")
                time.sleep(options.interval)
    except (SystemExit, KeyboardInterrupt):
        pass