Alles verbessert
This commit is contained in:
@@ -72,6 +72,41 @@ def read_memory_usage():
|
||||
return 'unbekannt'
|
||||
|
||||
|
||||
def read_undervoltage_status():
|
||||
stdout, _, returncode = run_command(['vcgencmd', 'get_throttled'])
|
||||
if returncode != 0 or not stdout or '=' not in stdout:
|
||||
return {
|
||||
'text': 'unbekannt',
|
||||
'state': 'unknown',
|
||||
}
|
||||
|
||||
try:
|
||||
throttled_value = int(stdout.split('=', 1)[1].strip(), 16)
|
||||
except ValueError:
|
||||
return {
|
||||
'text': 'unbekannt',
|
||||
'state': 'unknown',
|
||||
}
|
||||
|
||||
undervoltage_now = bool(throttled_value & 0x1)
|
||||
undervoltage_occurred = bool(throttled_value & 0x10000)
|
||||
|
||||
if undervoltage_now:
|
||||
return {
|
||||
'text': 'Ja, aktuell',
|
||||
'state': 'active',
|
||||
}
|
||||
if undervoltage_occurred:
|
||||
return {
|
||||
'text': 'Früher erkannt',
|
||||
'state': 'past',
|
||||
}
|
||||
return {
|
||||
'text': 'Nein',
|
||||
'state': 'clear',
|
||||
}
|
||||
|
||||
|
||||
def format_uptime():
|
||||
try:
|
||||
with open('/proc/uptime', 'r', encoding='utf-8') as handle:
|
||||
@@ -100,11 +135,25 @@ def format_disk_free():
|
||||
|
||||
|
||||
def get_ip_addresses():
|
||||
stdout, _, returncode = run_command(['ip', '-4', '-o', 'addr', 'show', 'dev', 'wlan0', 'scope', 'global'])
|
||||
if returncode == 0 and stdout:
|
||||
for line in stdout.splitlines():
|
||||
parts = line.split()
|
||||
if 'inet' in parts:
|
||||
inet_index = parts.index('inet')
|
||||
if inet_index + 1 < len(parts):
|
||||
return parts[inet_index + 1].split('/')[0]
|
||||
|
||||
stdout, _, returncode = run_command(['hostname', '-I'])
|
||||
if returncode != 0 or not stdout:
|
||||
return 'unbekannt'
|
||||
ips = [item for item in stdout.split() if item]
|
||||
return ', '.join(ips) if ips else 'unbekannt'
|
||||
|
||||
ipv4_addresses = []
|
||||
for item in stdout.split():
|
||||
if item.count('.') == 3 and not item.startswith('172.17.'):
|
||||
ipv4_addresses.append(item)
|
||||
|
||||
return ipv4_addresses[0] if ipv4_addresses else 'unbekannt'
|
||||
|
||||
|
||||
def get_wifi_status():
|
||||
@@ -149,11 +198,14 @@ def get_motor_test_container_status():
|
||||
|
||||
|
||||
def collect_status():
|
||||
undervoltage = read_undervoltage_status()
|
||||
return {
|
||||
'status': 'Bereit',
|
||||
'system': {
|
||||
'wifi': get_wifi_status(),
|
||||
'ips': get_ip_addresses(),
|
||||
'undervoltage': undervoltage['text'],
|
||||
'undervoltage_state': undervoltage['state'],
|
||||
'cpu_temperature': read_cpu_temperature(),
|
||||
'cpu_usage': read_cpu_usage(),
|
||||
'memory_usage': read_memory_usage(),
|
||||
@@ -315,17 +367,17 @@ def get_drive_neutral_status():
|
||||
try:
|
||||
result = get_drive_neutral_value()
|
||||
return 200, {
|
||||
'status': 'Fahr-Neutralwert geladen',
|
||||
'status': 'Fahr-Neutralwerte geladen',
|
||||
'drive_neutral': result,
|
||||
'container_status': container_status,
|
||||
}
|
||||
except FileNotFoundError:
|
||||
return 500, {'status': 'Motor-Konfiguration fehlt'}
|
||||
except Exception:
|
||||
return 500, {'status': 'Fahr-Neutralwert konnte nicht geladen werden'}
|
||||
return 500, {'status': 'Fahr-Neutralwerte konnten nicht geladen werden'}
|
||||
|
||||
|
||||
def preview_drive_neutral_action(value):
|
||||
def preview_drive_neutral_action(values):
|
||||
from admin_motor_test import preview_drive_neutral_value
|
||||
|
||||
container_status = get_motor_test_container_status()
|
||||
@@ -336,9 +388,9 @@ def preview_drive_neutral_action(value):
|
||||
}
|
||||
|
||||
try:
|
||||
result = preview_drive_neutral_value(int(value))
|
||||
result = preview_drive_neutral_value(values)
|
||||
return 200, {
|
||||
'status': f"Fahr-Neutralwert: PWM {result['value']}",
|
||||
'status': 'Fahr-Neutralwerte angefahren',
|
||||
'drive_neutral': result,
|
||||
'container_status': container_status,
|
||||
}
|
||||
@@ -350,7 +402,7 @@ def preview_drive_neutral_action(value):
|
||||
return 500, {'status': 'Fahr-Vorschau fehlgeschlagen'}
|
||||
|
||||
|
||||
def save_drive_neutral_action(value):
|
||||
def save_drive_neutral_action(values):
|
||||
from admin_motor_test import save_drive_neutral_value
|
||||
|
||||
container_status = get_motor_test_container_status()
|
||||
@@ -361,9 +413,9 @@ def save_drive_neutral_action(value):
|
||||
}
|
||||
|
||||
try:
|
||||
result = save_drive_neutral_value(int(value))
|
||||
result = save_drive_neutral_value(values)
|
||||
return 200, {
|
||||
'status': 'Fahr-Neutralwert gespeichert',
|
||||
'status': 'Fahr-Neutralwerte gespeichert',
|
||||
'drive_neutral': result,
|
||||
'container_status': container_status,
|
||||
}
|
||||
@@ -374,7 +426,7 @@ def save_drive_neutral_action(value):
|
||||
except FileNotFoundError:
|
||||
return 500, {'status': 'Motor-Konfiguration fehlt'}
|
||||
except Exception:
|
||||
return 500, {'status': 'Fahr-Neutralwert konnte nicht gespeichert werden'}
|
||||
return 500, {'status': 'Fahr-Neutralwerte konnten nicht gespeichert werden'}
|
||||
|
||||
|
||||
class Handler(http.server.BaseHTTPRequestHandler):
|
||||
@@ -431,7 +483,12 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
||||
self.write_json(400, {'status': 'Ungültige Anfrage'})
|
||||
return
|
||||
|
||||
status_code, response = preview_drive_neutral_action(payload.get('value', 0))
|
||||
values = payload.get('values')
|
||||
if not isinstance(values, dict):
|
||||
self.write_json(400, {'status': 'Fahr-Neutralwerte fehlen'})
|
||||
return
|
||||
|
||||
status_code, response = preview_drive_neutral_action(values)
|
||||
self.write_json(status_code, response)
|
||||
return
|
||||
|
||||
@@ -449,7 +506,12 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
||||
self.write_json(400, {'status': 'Ungültige Anfrage'})
|
||||
return
|
||||
|
||||
status_code, response = save_drive_neutral_action(payload.get('value', 0))
|
||||
values = payload.get('values')
|
||||
if not isinstance(values, dict):
|
||||
self.write_json(400, {'status': 'Fahr-Neutralwerte fehlen'})
|
||||
return
|
||||
|
||||
status_code, response = save_drive_neutral_action(values)
|
||||
self.write_json(status_code, response)
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user