NEWS
Adapter - Bosch Smart Home Kameras
-
Guten Morgen. Ja, heute gab es ja eine Wartung. Eigentlich solltest du auch einen Connector oder Endpoint haben, in dem die Informationen drin stehen, wann Wartung ist, sollte in dem letzten Update eigentlich auch in io Broker mit reingekommen sein. Aber danke für die Logs. Ich werde sie mal analysieren und schauen was man noch eventuell verbessern könnte.
Ich arbeite gerade daran, dass wenn die Cloud offline ist, dass man wenigstens über den lokalen Weg den privacy Mode ein und ausschalten kann und auch die Lichter ein und ausschalten kann. Das ist das einzigste, was aktuell lokal funktioniert.
-
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-XXXXXXXXuser/password den die Kamera per Digest erwartet. Diese Credentials rotieren bei jedemPUT /v11/video_inputs/{id}/connectionund 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 ERRORCamera 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_statemit Statesnone/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.10deine 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 jetztv0.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_presetmit Stateshome | 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.xmlund 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 -
-
Hallo zusammen,
das ist ja Wahnsinn was hier die letzten Tage passiert.
Ich bin total fasziniert das nun nach gut 6 Jahren mit meinen bescheidenen Bosch Smart Eyes doch noch ein sinnvoller Nutzen daraus entstehen könnte.
Also habe ich mal ganz motiviert den Adapter installiert und wollte loslegen.
Weit bin ich allerdings nicht gekommen.Beim Versuch zum Bosch-Login bekomme ich von der Bosch-Webseite die Meldung
404 We are sorry, but the page you are looking for is not available.Funktioniert das einfach gerade mal nicht oder mache ich was grundlegend falsch?
-
Das ist schon alles richtig so. Du loggst dich mit deinem Bosch Konto ein bzw mit der SinglekeyID und auf der Seite wo der 404 Fehler kommt musst du URL aus dem Browser-Tab kopieren und in den Einstellungen vom Bosch Adapter einfügen. Da ist extra eine Zeile dafür. Dann sollte der Adapter neu starten und grün werden.
-
danke fürs Nachhaken — die Beschreibung des Login-Schritts war wirklich nicht eindeutig, und der "404 We are sorry" Anblick verunsichert ohne Hinweis natürlich. Genau wie Jaschkopf richtig geschrieben hat: die 404-Seite ist gewollt. Bosch leitet nach dem SingleKey-Login auf
https://www.bosch.com/boschcam?code=…&state=…weiter — diese Seite existiert öffentlich nicht, deshalb 404. Was zählt ist nur die URL in der Adressleiste; die enthält den Auth-Code, den der Adapter zum Token-Tausch braucht.Ein wichtiger Hintergrund den ich in den letzten Tagen mehrfach beobachtet habe: der Auth-Code in dieser Redirect-URL läuft sehr schnell ab — Größenordnung 60 Sekunden (Keycloak-Default für
authorization_code). Wer also nach dem 404 erst seinen ioBroker sucht, das Admin-Fenster öffnet, zur Bosch-Adapter-Instanz navigiert und dann pastet, ist häufig zu spät — das Einfügen schlägt mitcode expiredfehl und es startet wieder von vorn. Genau das war vermutlich der Grund warum es bei dir beim ersten Mal nicht funktioniert und beim zweiten Mal grün wurde.Workflow den ich empfehle:
- ioBroker-Admin → Instanzen → bosch-smart-home-camera → Schraubenschlüssel vorher öffnen, Tab offen lassen
- Erst dann auf "Open Bosch Login in browser" im Dialog klicken
- SingleKey-Login durchziehen
- Sobald Bosch auf die 404-Seite weiterleitet: URL kopieren und SOFORT (innerhalb Sekunden) im Admin-Tab in "Pasted callback URL" einfügen + Save
- Falls doch
code expired: einfach nochmal auf "Open Bosch Login" klicken, neue URL wird generiert
Mit der nächsten Adapter-Version bekommt der Admin-Dialog eine deutliche Warnung dazu sowie überarbeitete deutsche Beschreibungen aller Schritte. Auch die README wird klarer.
Falls weiter Probleme: am besten ein GitHub-Issue im Adapter-Repo (
mosandlt/ioBroker.bosch-smart-home-camera) — dann kann ich die Logs direkt sehen.Viele Grüße
-
@thomas-mosandl wäre es nicht möglich das ganze login Prozedere automatisch vom Adapter erledigen zu lassen und dort einfach die credentials zu hinterlegen? Kenne das von anderen Adaptern auch so das man eine URL mit Token zurück geben muss aber das simple hinterlegen von email+pw im Adapter ist deutlich bequemer
-
@jaschkopf Ja, da bin ich dran, da muss noch ein Endpoint geändert werden. Ich bin da schon dran. Das dauert leider, da es nicht in meiner Hand ist. Deshalb dieser "manuelle" Weg erstmal.
-
Hallo Thomas, glaube ich hab heute einen neuen Bug gefunden. Kameras liefen ganz normal, habe dann über die App den privacy mode aktiviert, weil ich im Garten gearbeitet habe und nonstop Bewegungen getriggert hab. Habe den privacy mode dann später auch über die App wieder deaktiviert, aber BlueIris und auch VLC kann über die Stream und Substream-URL keine Verbindung aufbauen, bzw. meldet "Check Port/User/Password" bzw in VLC wird nach User und PW gefragt. Habe den Adapter dann gerade neu gestartet, danach waren die Streams wieder online. Log packe ich dir in den Anhang. Bringt es für die Zukunft einen Vorteil für dich wenn ich den Adapter auf Debug-Level stelle? Bosch Error Log 2026_05_23.txt
-
Hallo Jaschkopf,
danke für den präzisen Bericht — der Bug war reproduzierbar und der Fix ist gerade in
v0.7.12raus (Tag gepusht, CI publiziert in den nächsten paar Minuten auf npm).Root cause: jeder Privacy-Edge auf der Kamera (ON→OFF oder OFF→ON) rotiert Bosch-seitig die Digest-Credentials der RTSP-Stream-URL. Unser
_liveSessions-Cache hielt aber innerhalb des 60s-TTL-Fensters die Vor-Toggle-Credentials fest. Dercameras.<id>.stream_url-DP publishte damit weiter die alten Zugangsdaten — BlueIris/VLC bekommen 401, der Adapter selbst ist unauffällig. Restart leerte den Cache, deswegen war das der "Workaround".Fix:
_pollSingleCameraState()erkennt jetzt jede Privacy-Transition über das Cloud-Polling und macht zwei Dinge:- Löscht die gecachte LiveSession aus
_liveSessions - Setzt
cameras.<id>.stream_url+cameras.<id>.stream_url_subauf""
Damit holt der nächste
ensureLiveSession()-Call (Stream-Toggle, Snapshot, RCP-Write, Watchdog-Tick) frische Credentials perPUT /connectionund re-publisht die URLs. Externe Clients sehen sofort einen leeren stream_url-DP statt stale-401 zu spammen.Beide Edges sind abgedeckt, weil Bosch in beiden Richtungen rotiert.
Regression-Tests: 4 Pin-Tests in
test/unit/main_privacy_toggle_invalidates_session.spec.tsfür ON→OFF / OFF→ON / unverändert / kein Cached-Session. Full Suite jetzt 600 passing.Update läuft automatisch über die ioBroker-Repos sobald CI durch ist (~5 Min nach diesem Post). Bei Update auf 0.7.12 dann kurz testen ob BlueIris/VLC nach einem Privacy-Cycle stabil bleibt — falls nicht, einen Debug-Log nachschießen, dann schaue ich nochmal.
Wer's auf GitHub trackt: würde mich freuen wenn du den Bug-Report dort als Issue dokumentierst (
github.com/mosandlt/ioBroker.bosch-smart-home-camera/issues/new) — Forum-Posts gehen mir bei der nächsten Major-Release-Recherche schneller verloren als getrackte Issues.— Thomas
- Löscht die gecachte LiveSession aus
-
Hab es jetzt zwei Mal getestet, beim ersten mal kam der Stream von beiden Cams nicht wieder, hab dann auf Debug Level geswitched und nochmal probiert, jetzt kam eine von beiden Cams wieder live. Im Anhang das Log vom 2. Test. 21:54 privacy on, 21:55 privacy off. Log.txt
-
Hi Jaschkopf,
dein Log aus Post #42 hat die Wurzel des Problems sehr deutlich gezeigt. v0.7.13 ist gerade auf npm und sollte den Bug vollständig schließen.
Was wirklich los war
v0.7.12 hat zwar die
_liveSessions-Cache geleert und diestream_url-DPs auf""gesetzt, aber der TLS-Proxy selbst hatte seine Digest-Credentials schon beim Proxy-Start in einer Closure gefangen. Auf dem Re-Use-Pfad (gleiche Remote-Adresse, Sticky-Port) wurde der Proxy weiterbenutzt ohne dass seine internen Creds aktualisiert wurden. In deinem Log steht das exakt drin:21:55:07.945 TLS proxy E8376BA3: reusing port 33201 (remote unchanged 192.168.178.135:443) 21:55:18.286 RTSP auth E8376BA3: auth dance done (status 401), entering INJECTING mode 21:55:41.767 RTSP auth E8376BA3: auth dance done (status 401), entering INJECTING mode 21:56:11.815 RTSP auth E8376BA3: auth dance done (status 401), entering INJECTING modeDas
reusing portoben war der Schlüssel — danach hat der Proxy bei jedem Auth-Dance die alten Pre-Toggle-Creds eingesetzt und 401 kassiert. Die andere Cam (970E981A) hatte schlicht Glück, dass ihr erster Client-Connect noch in der ersten Session-Phase landete, bevor der Re-Use-Pfad griff.Was v0.7.13 ändert
digestAuthlebt im Proxy jetzt in einem mutable Holder. Neue MethodeupdateDigestAuth(user, password)rotiert die Creds zur Laufzeit ohne Listener-Restart; Sticky-Port und bereits publiziertestream_urlbleiben unangetastet.upsertSession()ruft die Methode bei jedem Session-Refresh auf, auch auf dem Re-Use-Pfad.- Bei ON->OFF und aktivem
livestream_enabledtriggert der Adapter sofort eine frischeensureLiveSession(), damit die rotierten Creds beim Proxy ankommen bevor dein BlueIris reconnectet. - Zusätzlich als Defense-in-depth: falls trotzdem 401 in der Auth-Dance zurück kommt, leitet der Proxy das jetzt ehrlich an den Client weiter und schließt die Verbindung, statt blind in
INJECTING-Mode mit kaputten Creds zu gehen.
Test bitte
Update auf v0.7.13, Privacy ein/aus über die Bosch-App und dann auf beiden Cams BlueIris/VLC reconnecten. Bei aktiviertem Debug-Log siehst du beim Toggle jetzt zwei neue Log-Lines pro Cam:
Privacy toggled externally for ... - dropped cached LiveSession ... TLS proxy ...: refreshed Digest creds (user=cbs-...) - next client connection will use rotated credsInteressant wäre insbesondere ob die zweite Kamera jetzt auch ohne Verzögerung wieder verfügbar ist. Falls trotzdem noch was hängt, melde dich.
Für künftige Bug-Reports gerne direkt auch über GitHub Issues, dann ist die Diskussion an der Codebasis verankert: https://github.com/mosandlt/ioBroker.bosch-smart-home-camera/issues
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden