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