mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-09 15:02:33 +02:00
Dienste-Ampel (Telefon, Verarbeitung, Spracherkennung, Nextcloud) alarmierte bisher nur im offenen Leitstand. pipe/monitor.py laeuft jetzt als eigener Dauerprozess, prueft dieselbe Ampel (neu ausgelagert nach pipe/dienste.py) periodisch und alarmiert bei Stoerung lokal per macOS-Benachrichtigung + Ton (pipe/alarm.py) - unabhaengig davon, ob pipe.watch oder pipe.server laufen. Wird ab jetzt von telefon/starten.sh mitgestartet. Verschluesselung at rest: keine App-eigene Verschluesselung eingebaut, stattdessen im README als Betreiber-Pflicht dokumentiert (FileVault aktivieren) - App verlaesst sich auf Festplattenverschluesselung durch das Betriebssystem. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EbdWYnDtyMgxsq4eN1WnrQ
27 lines
930 B
Python
27 lines
930 B
Python
"""Lokaler macOS-Alarm (Systembenachrichtigung + Ton) für pipe.monitor.
|
|
|
|
Wirft nie - eine fehlgeschlagene Benachrichtigung darf die Wache nicht zum
|
|
Absturz bringen. Nutzt osascript (stdlib-Unterprozess, kein Framework, keine
|
|
Abhängigkeit von einem laufenden Nextcloud/Cloud-Dienst).
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import subprocess
|
|
|
|
from . import config
|
|
|
|
|
|
def _quote(text: str) -> str:
|
|
"""AppleScript-String-Literal - Anführungszeichen/Backslashes escapen."""
|
|
return '"' + text.replace("\\", "\\\\").replace('"', '\\"') + '"'
|
|
|
|
|
|
def sende(titel: str, text: str) -> None:
|
|
skript = (
|
|
f"display notification {_quote(text)} with title {_quote(titel)} "
|
|
f"sound name {_quote(config.MONITOR_TON)}"
|
|
)
|
|
try:
|
|
subprocess.run(["osascript", "-e", skript], capture_output=True, timeout=10)
|
|
except Exception as fehler:
|
|
print(f" Alarm konnte nicht zugestellt werden: {fehler}")
|