Add Statusscreen
This commit is contained in:
88
statusscreen.py
Normal file
88
statusscreen.py
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
"""
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user