Hi Jaschkopf,
danke fürs Posten der Logs — das Zeitfenster 07:33–08:03 deckt sich exakt mit dem, was ich heute Morgen lokal gesehen habe. Bosch hatte ein Cloud-Maintenance-Window genau in dem Slot, die Status-RSS bestätigt es nachträglich. Du bist nicht alleine: meine vier Kameras lagen im selben Fenster auf der Schnauze.
Zu deiner Frage warum LOCAL-RTSP an der Cloud hängt: der eigentliche Stream läuft natürlich rein LAN (RTSPS, port 443 direkt zur Kamera). Was während des Watchdogs an die Cloud geht, ist das Renewal der Digest-Credentials — also der cbs-XXXXXXXX user/password den die Kamera per Digest erwartet. Diese Credentials rotieren bei jedem PUT /v11/video_inputs/{id}/connection und es gibt aktuell keinen Offline-Pfad sie zu refreshen. Solange die bestehende Session lebt (~60 Minuten), läuft der Stream weiter; sobald der Watchdog die Session erneuern will und Bosch 503 zurückgibt, killt er den Stream — und genau das ist der Fehler den deine Logs zeigen.
Die Fehlermeldung "Camera offline or unreachable" ist dabei irreführend: die Kamera war die ganze Zeit am Netz, nur die Cloud nicht. Das ist mit v0.7.10 (heute Abend rausgegangen) sauber unterschieden.
Drei konkrete Verbesserungen in v0.7.10:
Ehrliche Fehlermeldungen — HTTP 503 zur Cloud-Session-API loggt jetzt als INFO Bosch cloud temporarily unavailable, current session continues until expiry, nicht mehr als ERROR Camera offline or unreachable. Nur wenn der TCP-Connect zur Kamera-LAN-IP wirklich fehlschlägt, gibt es noch einen ERROR.
Graceful Renewal-Backoff — der Watchdog stoppt den Stream nicht mehr beim ersten gescheiterten Renewal. Stattdessen exponentielles Backoff (5s, 15s, 45s, 120s, dann alle 300s) und der Stream läuft weiter solange die bestehende Session noch gültig ist (~60min). Erst wenn die Session natural-expired ist UND das Renewal immer noch fehlschlägt, ODER wenn der LAN-TCP-Connect 3-mal in Folge scheitert, wird der Stream beendet.
Maintenance-Detection — der Adapter pollt jetzt die Bosch-Status-RSS alle 5 Min und schreibt das Ergebnis in einen neuen DP cameras.<id>.maintenance_state mit States none / active / scheduled. Wenn ein aktives Maintenance-Fenster läuft, werden cloud-5xx-Fehler automatisch auf INFO downgegradet und mit [bosch-maintenance] geprefixt. Logs sehen während angekündigter Outages dann deutlich ruhiger aus.
Konkret für dein Szenario: bei einem 30-Min-Maintenance-Fenster wie heute Morgen hätte v0.7.10 deine Streams am Leben gelassen. Der Watchdog hätte alle 5s, 15s, 45s … retried, die existierende Session wäre genutzt worden, und sobald Bosch wieder erreichbar gewesen wäre, hätte der nächste Retry das Renewal geschafft.
Bei Cloud-Outages über 60 Minuten läuft die Session natürlich aus und es gibt aktuell keinen Offline-Refresh-Pfad. Dann stoppt der Stream weiterhin — das ist eine Bosch-API-Architekturgrenze, kein Adapter-Bug.
Außerdem ist heute Abend v0.7.9 (und jetzt v0.7.10) über npm rausgegangen. Drei Sachen die für deinen BlueIris-Workflow direkt relevant sind:
MQTT-Event-Bridge (opt-in, default aus) — neuer Admin-Tab unter den Settings. Wenn aktiviert, published der Adapter motion / audio / person / intrusion auf <prefix>/<cam_id>/<event_type> mit {camera, event_type, timestamp, extra} JSON-payload. Plug-and-play für Node-RED, openHAB oder direkt in eine BlueIris-Trigger-URL.
Emergency LiveSession Fix — die Privacy- und Light-Writes über LAN funktionieren jetzt auch nach Adapter-Cold-Start ohne aktiven Stream. Vorher haben sie still mit 401 gefailt weil der Digest-Credential-Cache leer war.
PTZ-Presets falls du eine 360° Indoor hast — neue DPs cameras.<id>.pan_preset mit States home | left | right | back_left | back_right.
Upgrade-Pfad: iobroker upgrade bosch-smart-home-camera (oder über Admin → Adapter → Bosch Smart Home Camera → Update).
Das Blockly-Beispiel mit Wetterstation+Bewegungsmelder das du in Post 29 gepostet hattest ist übrigens jetzt im Repo unter examples/driveway-light-automation.xml und in der README verlinkt. Danke nochmal dafür.
Falls du nach dem Update noch unklare Logs siehst, immer her damit — ich teste die Adapter-Stack auf einer eigenen ioBroker-Sandbox-Instanz parallel und kann mit deinen Logs gezielt nachstellen.
Viele Grüße
Thomas