first commit
This commit is contained in:
74
batterie2.py
Normal file
74
batterie2.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import curses
|
||||
import json
|
||||
import requests
|
||||
import time
|
||||
|
||||
# URL de l'API
|
||||
url = "http://192.168.1.59/getData"
|
||||
excluded_keys = {"FW", "PID", "SER#", "TENSIONS", "OR", "HSDS", "XY_ON", "XY_AV", "XY_AC", "XY_AW", "CONS"}
|
||||
|
||||
def fetch_data(url):
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
else:
|
||||
return {}
|
||||
|
||||
def display_headers(screen, keys, max_width):
|
||||
screen.clear()
|
||||
for idx, key in enumerate(keys):
|
||||
if idx * max_width < curses.COLS:
|
||||
try:
|
||||
screen.addstr(0, idx * max_width, key.ljust(max_width)[:max_width], curses.color_pair(1))
|
||||
except curses.error:
|
||||
pass
|
||||
screen.refresh()
|
||||
|
||||
def display_data(screen, data, keys, line, max_width):
|
||||
for idx, key in enumerate(keys):
|
||||
if idx * max_width < curses.COLS:
|
||||
value_str = str(data.get(key, ""))
|
||||
if key == "PPV" and float(value_str) > 0:
|
||||
color = curses.color_pair(3) # Red background for PPV > 0
|
||||
else:
|
||||
color = curses.color_pair(2) # Default color
|
||||
screen.addstr(line, idx * max_width, value_str.ljust(max_width)[:max_width], color)
|
||||
|
||||
screen.refresh()
|
||||
|
||||
def main(screen):
|
||||
curses.curs_set(0) # Hide the cursor
|
||||
screen.nodelay(True) # Don't block waiting for user input
|
||||
# Initialize colors
|
||||
curses.start_color()
|
||||
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE) # Header color
|
||||
curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_CYAN) # Data color
|
||||
curses.init_pair(3, curses.COLOR_RED, curses.COLOR_CYAN) # PPV > 0 color
|
||||
|
||||
keys = None
|
||||
max_width = 9 # Maximum width for each column
|
||||
|
||||
line = 1
|
||||
while True:
|
||||
data = fetch_data(url)
|
||||
if line == 1: #keys is None:
|
||||
keys = [key for key in data.keys() if key not in excluded_keys]
|
||||
display_headers(screen, keys, max_width)
|
||||
|
||||
try:
|
||||
display_data(screen, data, keys, line, max_width)
|
||||
except curses.error:
|
||||
line = 0
|
||||
screen.clear()
|
||||
pass
|
||||
|
||||
line += 1
|
||||
|
||||
time.sleep(5)
|
||||
|
||||
if screen.getch() != -1:
|
||||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
curses.wrapper(main)
|
||||
|
||||
Reference in New Issue
Block a user