feat: alle FritzBoxen sichern (ueberspringt statt abzubrechen) + Tastenbestaetigung anzeigen/schalten
Satellit: - fritzbox.backup_all: alle Boxen mit hinterlegtem Login nacheinander; nicht erreichbar (Port 49000), Fehler oder Taste noetig → notieren und weiter. Ergebnis: x von y gesichert + Grund je Box. - fritzbox.second_factor: ist die Zusatzbestaetigung an, gibt es sie, und laesst sie sich per TR-064 schalten (nur wenn die Firmware eine Set- Aktion mit Enable-Argument im Auth-Dienst anbietet). - fritzbox.second_factor_set: schaltet sie (confirmed, Taste per button_wait); sonst not_switchable + Weg ueber die Oberflaeche. Diagnostic (💾-Fenster): Zeile "Tastenbestaetigung: an/aus" mit Aus-/ Einschalten (Rueckfrage, Countdown; nicht schaltbar → Hinweisfenster), Knopf "Alle FritzBoxen sichern" mit Ergebnis je Box. Ausschalten/ Deaktivieren gilt jetzt als gefaehrliche Rueckfrage (roter Knopf). Brain: Beschreibung fuer backup_all (je Satellit, weiter bei Fehlern) und second_factor; Timeout 15 min fuer backup_all. Getestet gegen nachgebaute Box (eine Box unerreichbar → uebersprungen, Taste noetig ohne/mit Warten, Status, Schalten mit und ohne Setter) und das Fenster in headless Chromium. Ob echte FRITZ!OS-Versionen das Schalten per TR-064 anbieten, ist ungeprueft. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -1325,7 +1325,15 @@ META_TOOLS = [
|
||||
"Box uebernimmt alles und startet neu (1–3 min kein Netz); vorher Datum der "
|
||||
"Sicherung nennen und Stefans ausdrueckliches Ja holen, ebenso ob er an der "
|
||||
"Box steht. 'fritzbox.backup_delete' (params={'ip':..,'file':..,'confirmed':true}) "
|
||||
"loescht eine Sicherung (nach Ja). die Datei liegt danach unter /shared/uploads/ "
|
||||
"loescht eine Sicherung (nach Ja). ALLE BOXEN SICHERN: 'fritzbox.backup_all' "
|
||||
"(params={} oder {'button_wait':true}) — pro Satellit einmal aufrufen (jeder "
|
||||
"Satellit sichert seine Boxen mit hinterlegtem Login); nicht erreichbare oder "
|
||||
"fehlerhafte werden uebersprungen, es geht mit der naechsten weiter — am Ende "
|
||||
"die Liste je Box (✓/✗ + Grund) an Stefan. TASTENBESTAETIGUNG: "
|
||||
"'fritzbox.second_factor' zeigt, ob sie an ist und ob sie sich per Schnittstelle "
|
||||
"schalten laesst; 'fritzbox.second_factor_set' (params={'ip':..,'enable':false,"
|
||||
"'confirmed':true,'button_wait':true}) schaltet sie — nur nach Stefans Ja; "
|
||||
"geht es nicht, den Hinweis (Weg ueber die Oberflaeche) weitergeben. die Datei liegt danach unter /shared/uploads/ "
|
||||
"und kommt mit [FILE: <pfad>] in den Chat. 'ssh.exec' (params={'ip':'...','cmd':'...'}) "
|
||||
"— fuehrt EIN Shell-Kommando per SSH auf einem Geraet aus (Server, Pi, NAS) "
|
||||
"und gibt exit_code + stdout (gefenstert: contains/offset/max_chars) + "
|
||||
@@ -3266,6 +3274,7 @@ class Agent:
|
||||
sat_timeout = (320.0 if action.startswith("adb.")
|
||||
else 200.0 if action == "ssh.exec"
|
||||
# button_wait: bis 2 min auf die Taste an der FritzBox
|
||||
else 900.0 if action == "fritzbox.backup_all"
|
||||
else 200.0 if action.startswith("fritzbox.") and params.get("button_wait")
|
||||
else 60.0 if action.startswith("fritzbox.") else 20.0)
|
||||
result = _post("/internal/satellite", {
|
||||
|
||||
Reference in New Issue
Block a user