NEWS
Adapter - Bosch Smart Home Kameras
-
@Jaschkopf Ja, der Antrag läuft schon seit Mitte Mai: https://github.com/ioBroker/ioBroker.repositories/pull/5983
Alle automatischen Checks (Adapter-Checker, Object-Structure-Check) sind inzwischen grün, es steht nur noch das manuelle Review durch das Repo-Team aus. Dafür ist aktuell Mitte Juli als Wiedervorlage eingetragen. Sobald der Adapter im Beta-Repo (latest) auftaucht, schreibe ich es hier in den Thread. Bis dahin klappt die Installation wie gehabt über die GitHub-URL im Admin oder npm.
-
Hallo Thomas, nun habe ich Probleme mit das Update v1.5.2 zum Laufen zu bekommen.
Folgende Fehlermeldung erhalte ich nach dem Anmelden:bosch-smart-home-camera.0
2026-06-12 18:13:30.189 error No persisted camera state found — cannot start in cloud-degraded mode. Adapter will wait for cloud to recover.bosch-smart-home-camera.0
2026-06-12 18:13:29.610 warn Camera discovery failed on startup (Cameras API network error: unable to get issuer certificate) — attempting cloud-degraded startup from persisted statebosch-smart-home-camera.0
2026-06-12 18:13:29.280 info Valid tokens found in state storage — skipping loginbosch-smart-home-camera.0
2026-06-12 18:13:28.819 info Bosch Smart Home Camera adapter starting…bosch-smart-home-camera.0
2026-06-12 18:13:28.755 info starting. Version 1.5.2 (non-npm: mosandlt/ioBroker.bosch-smart-home-camera#main) in /opt/iobroker/node_modules/iobroker.bosch-smart-home-camera, node: v22.22.3, js-controller: 7.1.2bosch-smart-home-camera.0
2026-06-12 18:13:18.467 error Cannot find view "system" for search "folder" : Connection is closed.bosch-smart-home-camera.0
2026-06-12 18:13:18.392 warn get state error: Connection is closed.bosch-smart-home-camera.0
2026-06-12 18:13:18.389 warn Could not perform strict object check of state bosch-smart-home-camera.0.info.connection: DB closedbosch-smart-home-camera.0
2026-06-12 18:13:18.347 warn Camera discovery failed on startup (Cameras API network error: unable to get issuer certificate) — attempting cloud-degraded startup from persisted state -
@Reiner-0 Erstmal Entschuldigung — der Fehler liegt klar bei mir, nicht bei deinem System.
Was passiert ist: In v1.5.1 habe ich eine sicherheitskritische Lücke geschlossen (CWE-295 / GHSA-6qh5-x5m5-vj6v). Vorher hat der Adapter bei den Bosch-Cloud-Verbindungen das TLS-Zertifikat überhaupt nicht geprüft — im selben Netz war damit ein Abgreifen der OAuth-Tokens möglich. Das musste raus, und zwar zügig.
Der Fix pinnt die private Bosch-CA. In der Python- und der Home-Assistant-Variante funktioniert das sauber, weil OpenSSL dort ein
PARTIAL_CHAIN-Flag kennt, mit dem man die Kette an einem Zwischenzertifikat verankern kann. Node.js hat dieses Flag nicht (ist seit Jahren ein offener Feature-Request, nodejs/node#36453). Dadurch konnte Node die Zertifikatskette nicht abschliessen und jeder Cloud-Handshake scheiterte mit genau deiner Meldung:Camera discovery failed on startup (Cameras API network error: unable to get issuer certificate) No persisted camera state found — cannot start in cloud-degraded mode.Solange ein gültiger gespeicherter Stand vorhanden war, ist es nicht aufgefallen — bei einem frischen Start ohne den fiel die Kamera-Erkennung dann komplett aus. Mein Fehler war, den Node-Pfad nicht gegen die echte Cloud gegengetestet zu haben.
In v1.5.3 prüfe ich das Zertifikat jetzt selbst nach: Hostname, Gültigkeit, und ob das Zertifikat entweder von der gepinnten Bosch-CA signiert ist oder zu einem vertrauenswürdigen System-Root führt (das braucht der Let's-Encrypt-Login-Host). Der MITM-Schutz aus v1.5.1 bleibt damit vollständig erhalten — selbstsignierte, abgelaufene, falsche oder nicht vertrauenswürdige Zertifikate werden weiterhin abgewiesen. Habe es gegen die echte Bosch-Cloud verifiziert (Discovery findet die Kameras wieder) und Regressionstests ergänzt.
Update zieht über GitHub (
mosandlt/ioBroker.bosch-smart-home-camera#main) bzw. npm sobald die Version durch ist. Sag bitte kurz Bescheid, ob es bei dir wieder durchläuft. -
Hallo Thomas, nun läuft der bosch-smart-home-camera-Adapter wieder. Danke für den schnellen Fix.
Jedoch klappt nun die Verbindung zum iobroker.cameras-Instanz nicht mehr. Ich erhalte folgenden Fehlermeldung:error Cannot get image: [tcp @ 0x557ca7db00] Connection to tcp://127.0.0.1:42307?timeout=0 failed: Connection refusedrtsp://127.0.0.1:42307/rtsp_tunnel?inst=2&enableaudio=1&fmtp=1&maxSessionDuration=5000: Connection refused
-
Hallo Reiner,
das "Connection refused" ist kein Zertifikats- oder SSL-Problem (sonst käme ein TLS-Fehler, nicht ein abgewiesener TCP-Connect). Ursache ist, wie der lokale RTSP-Proxy bisher gearbeitet hat: Er hat seinen Port nur geöffnet, solange ein Livestream lief. iobroker.cameras holt sich das Bild aber in eigenen Intervallen. Fällt so ein Abruf in einen Moment, in dem der Stream gerade aus ist, ist der Port zu und ffmpeg meldet
Connection refused. Nach jedem Adapter-Neustart, Privacy-Wechsel oder Ablauf einer Sitzung war der Port zudem wieder zu bzw. die Portnummer hatte sich geändert, weshalb die fest eingetragene42307irgendwann nicht mehr gepasst hat.In v1.5.4 gibt es dafür eine saubere Lösung: eine neue Option "RTSP-Endpunkt dauerhaft erreichbar halten" unter Einstellungen → API-Anfragen / Energiesparen. Wenn aktiv, hält der Adapter den Port pro Kamera dauerhaft offen, auch wenn kein Livestream läuft. Die eigentliche Kamera-Sitzung wird erst dann aufgebaut, wenn iobroker.cameras sich verbindet, und nach einer kurzen Leerlaufzeit (Standard 60 s) ohne Verbindung wieder freigegeben. So ist der Endpunkt jederzeit erreichbar, ohne dauerhaft eine der 3 gleichzeitigen Sitzungen zu belegen.
Einrichtung:
- Adapter auf v1.5.4 aktualisieren.
- In den Adapter-Einstellungen "RTSP-Endpunkt dauerhaft erreichbar halten" einschalten und speichern.
cameras.<id>.stream_host/stream_port/stream_pathin iobroker.cameras eintragen (Protokoll auf TCP stellen). Die drei Werte sind ab Adapter-Start gesetzt und bleiben über Neustarts stabil.livestream_enabledmusst du dafür nicht mehr anfassen.
Falls du nicht updaten möchtest, ist der schnelle Workaround weiterhin:
cameras.<id>.livestream_enabled = truesetzen und dann den aktuell angezeigtenstream_port(der ist nicht mehr 42307) in iobroker.cameras übernehmen. Das hält aber nur, solange der Stream läuft.Gruß
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