""" Demonstrates a dynamic Layout """ from datetime import datetime from time import sleep from typing import cast from requests.api import request from rich.align import Align from rich.console import Console from rich.layout import Layout from rich.live import Live from rich.text import Text from rich.panel import Panel import requests import json # Init Logger import logging import logging.handlers from logging.handlers import SysLogHandler logger = logging.getLogger('syslogger') logger.setLevel(logging.DEBUG) handler = logging.handlers.SysLogHandler( facility=SysLogHandler.LOG_DAEMON, address='/dev/log') logger.addHandler(handler) API_KEY = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI4ODcyMmYzYmNmMzY0ZDZlYjgxNWQyZDkwMDU1NzlkYSIsImlhdCI6MTYyMTgwMzk4NCwiZXhwIjoxOTM3MTYzOTg0fQ.z_Tfy8jT37Hcss-rcxd9XinHhXvvYK7BL_n0Jirv3v4" def getKimaiState(): # Get current log url = "https://home.pklueter.de/api/states/sensor.current_work" headers = { "Authorization": "Bearer " + API_KEY, } try: resp = requests.get(url, headers=headers) state = resp.json()["state"] return state except json.decoder.JSONDecodeError as err: logger.error("Error during JSON Decode: " + err) return "Could not retreive data" except requests.exceptions.ConnectionError as err: logger.error("Connection error: " + err) return "Could not retreive data" except KeyboardInterrupt: pass except Exception as err: logger.error("A uncauth error occured: " + err) return "Could not retreive data" class Clock: """Renders the time in the center of the screen.""" def __rich__(self) -> Text: return Text(datetime.now().ctime(), style="bold magenta", justify="center") console = Console() layout = Layout() layout.split( Layout(name="header", size=1), Layout(name="Zeiterfassung", size=3), Layout(name="Log"), ) layout["header"].update(Clock()) layout["Zeiterfassung"].update( Panel("Zeiterfassung: " + getKimaiState())) with Live(layout, screen=True, redirect_stderr=False) as live: try: while True: layout["Zeiterfassung"].update( Panel("Zeiterfassung: " + getKimaiState())) sleep(15) except KeyboardInterrupt: pass