fix(satellite): http.get liefert ganze Statusseiten + contains-Filter, kein Scan-Overhead
ARIA erreichte den Drucker per Satellit, bekam aber nur die ersten 2000 Zeichen (r.text[:2000]) — die Tintenbalken stehen weiter unten und fielen weg; ein Offset-Versuch wurde ignoriert (nicht unterstuetzt). Zudem lief vor JEDEM sat_command ein voller LAN-Scan, auch fuer http.get, das die URL direkt nutzt -> sehr lange Antwortzeiten. _do_http: - Body-Limit env-konfigurierbar (HTTP_MAX_CHARS Default 20000, harter Deckel HTTP_MAX_CHARS_HARD 200000) statt fixer 2000. - params.offset + params.max_chars zum Paginieren. - params.contains (String/Liste): nur Zeilen mit einem der Begriffe -> zieht aus einer grossen Statusseite gezielt die Tintenwerte, ohne Paging. - Antwort meldet total_chars/returned_chars/offset/truncated/filtered. - HTTP_TIMEOUT_SEC (Default 10s) statt fixer 6s. sat_command: LAN-Scan nur noch bei dial.launch oder wenn ein device-Ref mitkommt; http.get/http.post/wol nutzen die gecachte Liste -> deutlich schneller. agent.py + seed_rules.py: satellite_command-Tool + Drucker-Beispiel um contains/offset/max_chars ergaenzt, damit ARIA den Filter nutzt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-2
@@ -1220,8 +1220,15 @@ META_TOOLS = [
|
||||
"Beispiel YouTube-Video auf Fire TV: action='dial.launch', "
|
||||
"device='Fire TV', params={'app':'YouTube','v':'<videoId>'}. Weitere "
|
||||
"Aktionen: 'wol' (params={'mac':'...'}) zum Aufwecken, "
|
||||
"'http.get'/'http.post' (params={'url':'...'}) fuer lokale Webhooks. "
|
||||
"Geht nur, wenn der Satellit Steuerung erlaubt (siehe satellite_list)."
|
||||
"'http.get'/'http.post' (params={'url':'...'}) fuer lokale Webhooks UND "
|
||||
"um Geraete-Statusseiten zu lesen (Drucker-Tinte, NAS ...). Bei grossen "
|
||||
"Seiten NICHT blind paginieren: setze params['contains'] (String oder "
|
||||
"Liste) — dann kommen nur Zeilen zurueck, die einen der Begriffe enthalten "
|
||||
"(z.B. contains=['ink','toner','cyan','magenta','yellow','black','%'] fuer "
|
||||
"Tinte). Zusaetzlich moeglich: params['offset'] und params['max_chars'] "
|
||||
"(Default 20000). Die Antwort meldet total_chars + truncated, damit Du "
|
||||
"siehst, ob noch mehr da ist. Geht nur, wenn der Satellit Steuerung "
|
||||
"erlaubt (siehe satellite_list)."
|
||||
),
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
|
||||
@@ -493,8 +493,13 @@ SEED_RULES: List[dict] = [
|
||||
"\n"
|
||||
"Beispiel 'Patronenstand vom Drucker zuhause': satellite_list -> Satellit im "
|
||||
"Heimnetz online? -> satellite_command(satellite='<Heim>', action='http.get', "
|
||||
"params={'url':'http://<drucker-ip>/general/status.html'}) -> Fuellstaende "
|
||||
"(BK/C/M/Y) aus dem HTML vorlesen. NICHT aus dem Gedaechtnis raten.\n"
|
||||
"params={'url':'http://<drucker-ip>/general/status.html', "
|
||||
"'contains':['ink','toner','cyan','magenta','yellow','black','%']}) -> aus den "
|
||||
"gefilterten Zeilen die Fuellstaende (BK/C/M/Y) vorlesen. Der contains-Filter "
|
||||
"holt nur die relevanten Zeilen aus einer grossen Statusseite (sonst wird der "
|
||||
"Body bei max_chars, Default 20000, abgeschnitten). Kommt nichts Brauchbares: "
|
||||
"andere Statuspfade probieren (/general/information.html?kind=item, SNMP-UI) "
|
||||
"oder offset erhoehen. NICHT aus dem Gedaechtnis raten.\n"
|
||||
"\n"
|
||||
"Beispiel 'spiel YouTube-Video auf dem Buero-Stick':\n"
|
||||
" satellite_command(satellite='Buero', device='Fire TV', "
|
||||
|
||||
Reference in New Issue
Block a user