Bosch Smart Home Kameras vollständig in Home Assistant — Custom Integration mit Live-Stream, Bewegungssensoren & Cloud-API (kein SHC nötig)

Hallo zusammen! :wave:

Ich möchte euch mein Projekt vorstellen: eine vollständige **Home Assistant Custom Integration für Bosch Smart Home Kameras** — entwickelt durch reverse engineering der offiziellen App. Entstanden aus Frustration: Die Kamera taucht im SHC-Add-on zwar auf, aber ohne Snapshot, Stream oder Steuerung. Nach ein paar Wochen mitmproxy-Analyse hat sich das geändert. :smile:

## :camera: Was die Integration kann

- :white_check_mark: **Live-Snapshot** und **Live-Stream 1080p 30fps H.264 + AAC-Ton**

- :white_check_mark: **Privacy Mode**, **LED-Licht**, **Benachrichtigungen**, **Bewegungserkennung** als Schalter

- :white_check_mark: **Videoqualität** (Auto / 30 Mbps / 1,9 Mbps), **Pan-Steuerung** CAMERA_360 (±120°)

- :white_check_mark: **Sensoren** — Status, WLAN-Stärke, Firmware, Umgebungslicht, Ereignisse heute

- :new: **Bewegungs- & Audioalarm-Binärsensor** — 30s ON nach Ereignis

- :new: **Bewegungsempfindlichkeit** (SUPER_HIGH → LOW) und **Audioalarm-Schwellenwert** (0–100 dB)

Eigene **Lovelace-Card** mit Live-Video, Steuer-Buttons und Ereignisanzeige. :information_source: **Kein SHC lokal nötig** — alles läuft über den Bosch Cloud API Token.

## :satellite: Wie funktioniert das?

Die Integration nutzt die **reverse-engineered Bosch Cloud API** (`residential.cbs.boschsecurity.com`), entdeckt per mitmproxy. Der Live-Stream läuft als echter **RTSPS-Stream** über den Bosch Cloud Proxy, go2rtc übernimmt die Transkodierung. Aus der APK-Analyse stammt auch die Push-Architektur: Kamera → CBS-Cloud → Firebase FCM → App → `GET /v11/events`. Die CBS API hat **keinen WebSocket oder SSE** — auch die offizielle App pollt intern (alle 30s).

## :bell: NEU: Bewegungs- und Audioalarm-Automationen

**Option 1 — HA Event-Bus** (feuert automatisch, kein Aktivieren nötig):

platform: event
event_type: bosch_shc_camera_motion

Für Audioalarm: `event_type: bosch_shc_camera_audio_alarm`, optional filtern mit `event_data: camera_name: Garten`. Verfügbare Felder: `camera_id`, `camera_name`, `timestamp`, `image_url`, `event_id`.

**Option 2 — Binärsensor** (in *Einstellungen → Entitäten* aktivieren):

platform: state
entity_id: binary_sensor.bosch_garten_motion
to: “on”

**Audioalarm-Schwellenwert**:warning: Werkseinstellung Innenkamera: **33 dB** (sehr empfindlich!):

service: number.set_value
target:
entity_id: number.bosch_kamera_audio_threshold
data:
value: 65

## :gear: Installation

**HACS:** [![In HACS öffnen]( Open HACS repository on My Home Assistant )]( Link to HACS: Repository – My Home Assistant ) — oder `custom_components/bosch_shc_camera/` manuell ins HA-Konfigurationsverzeichnis kopieren. Voraussetzung: Bosch Bearer-Token via `python3 get_token.py` (einmaliger Browser-Login, danach automatische Erneuerung). Unterstützte Kameras: **CAMERA_EYES** (Außen) und **CAMERA_360** (Innen, Pan ±120°).

## :link: Links

- :house: **HA Integration:** GitHub - mosandlt/Bosch-Smart-Home-Camera-Tool-HomeAssistant: Bosch Smart Home Camera — Home Assistant custom integration (HACS) · GitHub

- :snake: **Python CLI Tool:** GitHub - mosandlt/Bosch-Smart-Home-Camera-Tool-Python · GitHub

Ich freue mich über Feedback — vor allem wenn jemand andere Bosch-Kameramodelle testen kann! :pray: Viele Grüße

:crayon:by HarryP: Post formatiert

1 „Gefällt mir“

Mega, und genau das, was fehlte. Wo ist der Link für Buy me a coffee?

“Motion Detection” kann ich leider nicht erfolgreich beeinflussen. Wenn man den switch triggert zu on/off, wird der state kurz auf on oder off gesetzt, aber innerhalb von nur 1 Sekunde geht die Cam zurück auf die in der iOS App hinterlegte Originaleinstellung. Kommt aber nicht von der App, dafür geht es auch zu schnell.

Das trifft bei mir bei allen Einstellungen zu, die nicht auf der Bosch SHC selbst exposed. Also:

Switch Light on/off, Privacy mode on/off => funktioniert einwandfrei

Motion Detection / Sensitivity levels => geht sofort wieder zurück auf den via app vorher eingestellten Zustand. Man sieht aber, dass der Befehl ankommt und kurz umgesetzt wird (z.b. geht das motion light auch einmalig aus wenn man “off” setzt, aber schon die nächste bewegung reaktiviert das Licht, weil die Cam die motion detection wieder von alleine bzw durch die Bosch Cloud wieder auf “on” zurückgesetzt hat.)

Irgendeine Idee, was man da noch tun könnte?

Vielen Dank fuer das tolle Feedback, das freut mich wirklich sehr! Den Buy me a coffee Link reiche ich mit dem naechsten groesseren Release nach.

Ich entwickle die Integration uebrigens nicht nur als Hobbyprojekt, sondern nutze sie selbst taeglich produktiv in meinem Smart Home. Von daher bin ich genauso daran interessiert, dass alles sauber funktioniert.

Zum Thema Motion Detection habe ich mich ausfuehrlich reingekniet. Leider liegt das Problem nicht bei der Integration selbst, sondern direkt in der Kamera-Firmware. Die Bosch Kameras lassen intern eine sogenannte IVA Rules Engine laufen, also ein Automatisierungs-Skript auf dem Geraet selbst. Dieses Skript ueberwacht und erzwingt bestimmte Einstellungen, unter anderem die Motion Detection, voellig unabhaengig davon was ueber die Cloud API reinkommt.

Konkret passiert Folgendes: Die Integration sendet den Befehl per PUT /v11/video_inputs/{id}/motion an die Bosch Cloud. Die Cloud nimmt die Aenderung an (HTTP 200), und man sieht auch kurz dass sie greift, zum Beispiel geht das Motion Light einmal aus. Aber innerhalb von ungefaehr einer Sekunde setzt die Kamera-Firmware den Wert ueber ihre interne Regel wieder zurueck auf den Originalzustand. Da kann man von aussen leider aktuell nichts machen.

Spannend ist: Einstellungen die ueber den Smart Home Controller laufen, also Privacy Mode und Kameralicht, funktionieren einwandfrei und werden nicht zurueckgesetzt. Das liegt daran, dass der SHC diese direkt steuert und die IVA Rules Engine da nicht eingreift.

Ich habe bei der Analyse der iOS App einen Rules Endpoint entdeckt (GET /v11/video_inputs/{id}/rules), aber der liefert aktuell nur ein leeres Array zurueck. Die Regeln scheinen also ausschliesslich auf der Kamera selbst gespeichert zu sein und sind ueber die Cloud API nicht erreichbar. Ich bleibe dran, aber Stand heute gibt es leider keinen zuverlaessigen Weg das per API zu aendern.

Wer mithelfen moechte: Wenn jemand den Traffic der offiziellen Bosch App per mitmproxy (https://mitmproxy.org) mitschneiden kann waehrend man die Motion Detection Einstellungen in der App aendert, waere das extrem hilfreich. Vielleicht nutzt die App einen Endpoint den wir noch nicht kennen. Ich habe dafuer extra ein fertiges Script geschrieben (start_proxy.py), das mitmproxy vorkonfiguriert startet und Schritt fuer Schritt erklaert was auf dem Handy eingestellt werden muss. Das Script samt Anleitung findet ihr im Python CLI Repo: GitHub - mosandlt/Bosch-Smart-Home-Camera-Tool-Python · GitHub

Wichtig: Der mitmproxy Mitschnitt enthaelt private Daten wie euren Bearer Token und persoenliche Kamera-Informationen. Bitte die .mitm Datei auf keinen Fall oeffentlich posten, sondern schickt mir eine private Nachricht ueber das Kontaktformular auf dieser Seite, dann klaeren wir das direkt.

Hi, danke für die ausführlichen Infos. Das macht alles Sinn, ist aber natürlich auch sehr ärgerlich, dass Bosch da so eine Differenzierung vornimmt, die über den SHC integrierten Befehle via Cloud änderbar zu machen, und die anderen lokal über die Firmware abzusichern.

Ich konnte mir mitmproxy jetzt erst ansehen - bringt ja vermutlich keine neuen Erkenntnisse mehr. Wenn ein Protokoll trotzdem hilft, kann ich das aber gerne teilen.

Viele Grüße und nochmals vielen Dank für die Integration, die ja ansonsten ein ganz anderes Spektrum ermöglicht als es bisher in HA möglich war mit den Bosch Cams.

Vielen Dank für dein freundliches Feedback, das motiviert wirklich!

Ja, die Architektur von Bosch ist schon etwas eigenwillig – dass manche Einstellungen über die Cloud-API problemlos funktionieren, während andere tief im Kamera-Firmware verankert sind, macht die Sache unnötig kompliziert. Aber zumindest weiß man jetzt, wo die Grenzen liegen.

Das mitmproxy-Protokoll würde mich tatsächlich noch interessieren – falls du eine andere Firmware-Version oder ein anderes Kameramodell hast, tauchen manchmal kleine Unterschiede auf, die neue Hinweise geben. Kein Muss, aber wenn du es noch hast, gerne! Gerne per PM einfach anschreiben.

Schön, dass die Integration so nützlich ist. Falls du Wünsche oder Probleme bemerkst, einfach melden.

Viele Grüße

Super dass es endlich eine Integration für die Bosch Kameras gibt. Ganz vielen Dank auch!

Die oben genannten Probleme bestehen aber auch, so sind einige Einstellungen nicht möglich oder nicht dauerhaft.

Die naheliegende Automation, dass man eine Bewegungserkennung gemeldet bekommt und dazu auch einen Snapshot, habe ich etwas umständlich hinbekommen. Mein Trigger ist dabei aber der Event-Zähler. Die oben genannte Option 1 bzw Option 2 für Automationen habe ich nicht hinbekommen.

Könnten sie bitte die beiden Optionen noch einmal ausführlich erklären ganz vielen Dank auch.

Hi @geotie, danke fürs Feedback — beides geht eigentlich problemlos, hier die Schritte mit Beispielen.

Option 1 — HA Event-Bus (empfohlen, kein Setup nötig)

Die Integration feuert bei jeder Bewegung automatisch ein HA-Event. Du musst gar nichts aktivieren. In der Automation einfach:

trigger:
  - platform: event
    event_type: bosch_shc_camera_motion
condition:
  # optional: nur die Garten-Kamera
  - condition: template
    value_template: "{{ trigger.event.data.camera_name == 'Garten' }}"
action:
  - service: notify.mobile_app_dein_handy
    data:
      title: "Bewegung – {{ trigger.event.data.camera_name }}"
      message: "{{ trigger.event.data.timestamp }}"
      data:
        image: "{{ trigger.event.data.image_url }}"

Verfügbare Datenfelder im Event: camera_id, camera_name, timestamp, image_url, event_id, event_type. Für Audio-Alarme nimmst du bosch_shc_camera_audio_alarm, für Person-Detection bosch_shc_camera_person.

Warum das oft nicht klappt: in Developer Tools → Events musst du den Listener auf den richtigen Namen setzen — bosch_shc_camera_motion, nicht bosch.shc.camera.motion oder ähnlich. Tippfehler beim Event-Type ist die häufigste Stolperfalle, die UI gibt keinen Fehler aus.

Option 2 — Binary-Sensor (für Trigger auf Boolean-State)

Die Binary-Sensoren werden standardmäßig disabled angelegt — das ist Absicht, damit das System nicht mit unnötigen Entities geflutet wird. Du musst sie einmal pro Kamera aktivieren:

  1. Einstellungen → Geräte & Dienste → Bosch Smart Home Camera → Geräte
  2. Pro Kamera den Eintrag öffnen → Entitäten anzeigen
  3. Die drei Binary-Sensoren binary_sensor.bosch_<name>_motion, _audio_alarm, _person_detected einzeln aufrufen → Zahnrad oben rechts → “Aktiviert” anschalten → speichern.

Danach steht die Automation:

trigger:
  - platform: state
    entity_id: binary_sensor.bosch_garten_motion
    to: "on"
action:
  - service: bosch_shc_camera.trigger_snapshot
  - delay: "00:00:02"
  - service: notify.mobile_app_dein_handy
    data:
      title: "Bewegung – Garten"
      message: "{{ now().strftime('%H:%M:%S') }}"
      data:
        image: "/api/camera_proxy/camera.bosch_garten"

Der Sensor flippt für 30 s auf on und dann automatisch zurück.

Bonus: das eingebaute 3-Step-Alert-System

Wenn du nur einen Push mit Text + Snapshot + Video-Clip willst, brauchst du gar keine Automation. In den Integrations-Optionen unter Alert services stellst du deinen notify.*-Dienst ein, fertig. Die Integration schickt dann pro Event:

  • Sofort: Text-Push
  • Nach ~3–5 s: Snapshot
  • Nach ~30–90 s: MP4-Clip

Pro Schritt kannst du verschiedene Empfänger einstellen (Familie kriegt nur Text, du kriegst alles). Das ist die einfachste Variante und deckt 95 % der Use-Cases.

Zu den “oben genannten Problemen”

Stimmt — Motion-Sensitivity, manche IVA-Rules und ein paar Audio-Alarm-Schwellen werden ~1 Sekunde nach dem Schreiben von der Kamera-Firmware (IVA Rules Engine via RCP) wieder überschrieben. Das ist eine Firmware-Limitierung, nicht über die Cloud-API fixbar. Die offenen Punkte sind in den GitHub-Issues dokumentiert.

Was zuverlässig funktioniert (alle vier Modelle): Privacy-Mode-Toggle, LED-Licht, Bewegungs-Zonen lesen + zeichnen, Sirene Gen2 Indoor II, Audio+ on/off, alle Notification-Toggles, Live-Stream LAN+Cloud mit automatischem Fallback.

Wenn weiter was hängt, gerne hier oder als GitHub-Issue.

Hi @mosandlt,

ganz vielen Dank für die guten Tipps.

Option 1: Mit dem Listener für Events hatte ich mich bisher nicht beschäftigt. Da habe ich viel dazugelernt, bin aber nicht zum Ziel gekommen. Es haben sich viele Bezeichnungen in HA 2026.4 geändert.

Bonus: Das Alert-System klingt vielversprechend. Da kann man aber wohl keine Automationen machen (nur bei Abwesenheit oder nachts)?

Option 2: Die obige Automation funktioniert, wird aber oft nicht ausgelöst.

(Meine Bosch Outdoor Eyes ist jetzt 4 Jahre alt)

In deiner Integration kann ich bei den Sensoren sehen, dass Motion bei vielen Bewegungen nicht frei wird. Dagegen werden “Events today” und “Last Event” gut erkannt, seltsam.

Ich werde an der Sache dranbleiben und bin froh, dass deine Integration doch vieles in Home Assistant einbinden kann.

Hi @geotie,

danke für den Hinweis — das ist tatsächlich ein Bug bei mir, kein Verhalten deiner Kamera. Habe es nachvollziehen und beheben können:

**Was passiert ist**

Der `Motion` (und auch `Person Detected` / `Audio Alarm`) binary_sensor liest die Events aus einem Cache des Coordinators. Wenn ein neues Event per FCM-Push reinkommt, wurde dieser Cache zwar geupdatet, aber das Daten-Dict, das die binary_sensors tatsächlich auswerten, erst beim nächsten Coordinator-Tick (alle 60 s). Bis dahin sieht der Sensor noch das vorletzte Event — und das ist außerhalb des 30-s-Fensters, also `off`. Ergebnis: der Sensor “verpasst” Events, während `Last Event` und `Events Today` (die einen anderen Pfad lesen) korrekt zählen. Genau das, was du beschrieben hast.

**Fix in v10.5.1** (kommt im nächsten Release):

1. FCM-Push spiegelt das frische Event jetzt synchron ins Coordinator-Daten-Dict — der binary_sensor sieht es ohne Verzögerung.

2. Das Aktiv-Fenster ist von 30 s auf 90 s erweitert, damit auch der reine Polling-Pfad (wenn FCM mal stumm ist) das Event zuverlässig erwischt.

Keine Konfig-Änderung nötig — bestehende Automationen auf `binary_sensor.bosch_*_motion` triggern danach zuverlässig.

**Bonus zum Alert-System:** Alerts sind nur das Notification-/Anwesenheits-Gating für Push/Snapshot/Clip-Versand, kein Trigger für Automationen. Für eigene Automationen ist eines davon der richtige Hebel:

- **Variante A — HA-Event** (geht *bevor* der binary_sensor sich setzt, also ohne Window-Abhängigkeit überhaupt):

yaml

trigger:
 - platform: event
event_type: bosch_shc_camera_motion       # oder \_person, \_audio_alarm
\# event_data:
\#   camera_id: "<deine cam-id>"           # optional, wenn nur eine Kamera

- **Variante B — binary_sensor** (nach dem v10.5.1-Fix wieder zuverlässig):

yaml

trigger:
 - platform: state
entity_id: binary_sensor.bosch\_<deine_kamera>\_motion
from: "off"
to: "on"

Sag gerne Bescheid, ob der Fix bei dir aufgeht sobald die v10.5.1 raus ist — dann kann ich’s hier im Thread schließen.

Viele Grüße

Thomas

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

@mosandlt Hallo, ich habe mich riesig über diese Integration gefreut, da wir uns damals diese Lampen/Kameras gekauft hatten und ich später bei der Einführung von HA festgestellt habe, dass das geschlossene System nicht integriert werden konnte - bis heute :slight_smile: vielen Dank dafür.

Die Integration funktioniert bei mir soweit auch fehlerfrei, aber ich hätte noch eine Frage. Ich nutze eigentlich nur die Funktion “Live Stream” und das aktive Bild mit einer Bildentität-Karte. Ich nutze keine Automation bei Erkennung oder ähnliches. Nun ist mir in der Bosch App aufgefallen, dass alle neuen Bewegungen/Aufzeichnungen immer als schon angesehen markiert sind und man diese nur unter “Alle ansehen” sieht in der Bosch App. Gibt es die Möglichkeit das Livebild in HA zu verwenden + zusätzlich die “Neuen Ereignisse” als ungelesen zu lassen (also so wie es standardmäßig bei Nur-App Nutzung ist)?

Danke und viele Grüße

Hallo ,

danke für die Rückmeldung — du hast völlig recht, das verursacht aktuell die Integration. Sie ruft an fünf Stellen PUT /v11/events {id, isRead: true} auf der Bosch-Cloud auf, sobald sie ein Event verarbeitet hat (Startup-Polling, normaler Coordinator-Tick, Auto-Download-Zyklus, FCM-Push, FCM-Clip-Download). Das war ursprünglich als „Aufräumen" gedacht, hat aber genau den Side-Effect den du beschreibst: in der Bosch-App erscheinen alle Events als schon „gesehen".

In v10.5.2 (gerade gepusht) gibt es dafür eine neue Option:

Einstellungen → Geräte & Dienste → Bosch Smart Home Camera → KONFIGURIEREN → “Ereignisse in der Bosch-Cloud als gelesen markieren”

  • Default ist AN (Verhalten wie bisher — damit nichts bei bestehenden Nutzern bricht).

  • AUS schalten → die Integration empfängt die Events weiterhin ganz normal (Live-Stream, Bildentität, Sensoren, Automationen), tippt aber den isRead-Flag in der Cloud nicht mehr an. Die Bosch-App zeigt neue Bewegungen damit wieder als „ungelesen", genauso wie ohne HA-Anbindung.

Lokales Dedup (damit dieselbe Bewegung nicht doppelt als HA-Event feuert) läuft unabhängig davon weiter — also kein Risiko von verpassten Triggern.

Update über HACS oder direkt von GitHub Releases v10.5.2.

Gib gerne Rückmeldung ob das Verhalten dann so ist wie du’s brauchst.

Viele Grüße

Thomas

Nachtrag:
Noch ein Hinweis: Die Steuerung der Lichter und des Privacy-Modes über meine Integration ist deutlich schneller. Während ich vorher einen Delay von ca. 5 Sekunden hatte, erfolgt die Änderung jetzt unmittelbar.

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Vielen Dank für die schnelle Umsetzung.

Ich kann bestätigen, dass die Funktion perfekt funktioniert. Livestream läuft stabil und fehlerfrei und neue Ereignisse bleiben in der originalen Bosch App ungelesen. Danke!

Nachdem ich “Events automatisch herunterladen” in der Integration aktiviert habe, finde ich über das Terminal die Aufnahmen im Ordner /config/bosch_events.
Wo findet man die Aufnahmen schneller im Dashboard oder sonst in HA?
(Bei meiner Reolink sind die Aufnahmen in Medien, Reolink.)

Hi @geotie — kommt frisch in v10.7.0 raus :slightly_smiling_face:

Genau diesen Pain-Point habe ich gerade gelöst. Ab v10.7.0 gibt es einen Media Source Provider — die heruntergeladenen Events erscheinen unter Media → Bosch SHC Camera, analog zu deinem Reolink-Eintrag.

Funktioniert mit zwei Backends, automatisch erkannt:

  • Lokal (enable_auto_download + download_path, z.B. /config/bosch_events) — Tree: Kamera → Datum → Event
  • NAS / SMB-Upload — Tree: Jahr → Monat → Tag → Event. Files werden on-demand via SMB gestreamt, also kein zusätzlicher HA-Disk-Verbrauch wenn du auf einer kleinen Kiste läufst.

Pro Event-Titel siehst du Zeit + Typ + Kamera (09:15:23 — MOVEMENT (Garten)). MP4-Clips spielen direkt mit Seek-Support, das passende JPEG dient als Thumbnail.

Falls beide Backends aktiv sind, gibt es zusätzlich eine neue Option „Quelle des Media Browsers" im Configure-Dialog (Auto / Nur Lokal / Nur NAS / Deaktiviert) — falls du z.B. nur die NAS im Browser sehen willst.

Release: Release v10.7.0 — Media Browser provider (local + NAS) · mosandlt/Bosch-Smart-Home-Camera-Tool-HomeAssistant · GitHub

HACS sollte das Update in der nächsten Stunde anzeigen. Nach dem Update HA neu starten (neuer Provider muss registriert werden), dann sollte der Eintrag direkt im Media-Browser auftauchen.

Hallo @mosandlt

vielen Dank für die Integration! Habe diese zufällig vor 2 Tagen entdeckt.

Ich haabe bisher fast alles in meinem Smart Home von BSH inkl Aussenkamera 2, die ich nicht in HA integrieren konnte (bisher). Habe deswegen eigentlich schon entschieden auf Reolink umzusteigen. Jetzt überlege ich wieder bei Bosch zu bleiben :slight_smile:

Habe allerdings ein Problem und hoffe, du hast einen Tipp für mich. Bin in Sachen HA noch ein Anfänger, daher schliesse ich nicht aus, etwas übersehen zu haben.

Die Integration klappte sofort und ohne Probleme, die custom:bosch-camera-card klappt ebendalls. Aber ich sehe unter Medien keine Erreignisse (in der Bosch Camera App sind sie da)
Ich sehe nur einen neuen Ordner “Bosch SHC Camera”, alledings leer.

Habe dann in der Konfiguration “Events automatisch heunterladen” aktiviert. Daraufhin wurden nach /config/bosch_events Bilder und Clips runtergeladen. Unter Medien - “Bosch SHC Camera” kam ein Unterordner dazu mit dem Namen der Kamera. Blieb allerdings auch immer leer

Was mache ich falsch, bzw was übersehe ich noch?

Im Prozokoll sehe ich bei jedem HA neustart folgendes:

Logger: custom_components.bosch_shc_camera.cf_unbuffer
Quelle: custom_components/bosch_shc_camera/cf_unbuffer.py:177
Integration: Bosch Smart Home Camera (Dokumentation, Probleme)
Erstmals aufgetreten: 6. Mai 2026 um 14:40:10 (1 Vorkommnis)
Zuletzt protokolliert: 6. Mai 2026 um 14:40:10

Bosch CF-tunnel HLS unbuffer patch applied — playlists [HlsMasterPlaylistView, HlsPlaylistView] get text/event-stream Content-Type, segments [HlsInitView, HlsPartView, HlsSegmentView] re-emit as chunked StreamResponse (both bypass cloudflared HTTP buffer)

Keine Ahnung, ob das damit zusammen hängt, aber ich denke Du kanns jeden Fehler/Warnung in der Entwicklungsphase gebrauchen :slight_smile:

Danke und Gruß

P.S. ist es geplannt die Erreignisse auch in der Card anzuzeigen und zu verlinken?

Hallo @Andreas74, gerne!

Das cf_unbuffer-Log ist völlig normal und harmlos — das erscheint bei jedem HA-Start wenn du einen Cloudflare-Tunnel nutzt. Hat nichts mit dem Media-Browser-Problem zu tun.


Media Browser leer — das ist die Ursache:

Der Media Browser hat eine dreistufige Hierarchie:

Bosch SHC Camera → [Kamera-Name] → [Datum, z.B. 2026-05-07] → Ereignisse

Wenn du auf den Kamera-Ordner klickst, siehst du zuerst Datums-Ordner (nicht sofort die Bilder). Du musst noch eine Ebene tiefer klicken um die Events zu sehen.

Falls aber auch die Datumsebene leer ist, prüfe bitte folgendes:

Schritt 1 — Pfad prüfen

In HA unter Einstellungen → Integrationen → Bosch Smart Home Camera → Konfigurieren sollte im Feld “Lokaler Speicher-Ordner (nur neue Events)” der Wert /config/bosch_events stehen. Falls das Feld leer ist, trag den Pfad ein und speichere.

Schritt 2 — Dateien prüfen

Via SSH auf deinen HA-Host:

ls /config/bosch_events/
ls /config/bosch_events/<Name-deiner-Kamera>/

Wenn dort .jpg-Dateien liegen, sollten sie im Media Browser erscheinen. Falls der Kamera-Unterordner leer ist, wurden die Events noch nicht heruntergeladen.

Schritt 3 — Downloads laufen nur bei neuen Events

Wichtig: der lokale Download wird nur beim nächsten FCM-Push ausgelöst (= wenn die Kamera eine neue Bewegung erkennt). Bereits vorhandene Events in der Bosch-App werden nicht nachträglich heruntergeladen. Einfach kurz vor der Kamera vorbeigehen — danach sollte das erste Bild im Media Browser erscheinen.


P.S. — Ereignisse in der Card anzeigen:

Noch nicht eingebaut, aber geplant. Die Idee ist ein Klick auf ein Event-Vorschaubild direkt aus der Card, das dann den Media Browser öffnet. Steht auf der Roadmap, aber ich kann noch keinen Termin nennen.

vielen Dank für sehr schnelle Antwort

eigentlich hatte ich das schon alles so gemacht, und gerade noch mal ausprobiert

wen ich das Häckchen Events automatisch herunterlade aktiviere (Ordner für Download war die ganze Zeit da so wie auf dem screenshot), dann werden Erreignisse runtergeladen, auch alte (zweites Bild)

die zwei Dateien ganz unten sind neu, kamen wenige Minuten später dazu

In Medien ist ein Unterordner aufgetaucht, ist aber immer leer, hab auch cache geleert und mehrmals mit F5 neugeladen

bin etwas ratlos :slight_smile:

Es kann nicht zufällig daran liegen, dass der Name der Kamera einen leerzeichen enthält und somit der Pfad unter Medien nicht “ausgelesen” werden kann?
Eine andere Idee hätte ich gerade nicht

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Hallo Andreas74,

vielen Dank für die Rückmeldung. Zwei getrennte Punkte:

1. Veraltete Events werden nach Reload heruntergeladen

Das ist ein bekanntes Problem: Bosch-FCM-Pushes, die während eines HA-Neustarts in der Queue lagen, werden beim nächsten
Start gesammelt zugestellt — auch wenn die Events Stunden alt sind. Ich habe das im nächsten Release mit einem
Session-Zeitstempel-Guard gefixed: Events, die älter als der Coordinator-Start sind (minus 60 s Toleranz), werden
übersprungen.

2. Media Browser → Unterordner immer leer

Das ist ein Diagnoseproblem — ich kann es ohne weitere Infos nicht eingrenzen. Drei häufige Ursachen:

a) Das Feld „Lokaler Speicher-Ordner" in den Integration-Optionen ist leer → dann wird kein lokales Backend angelegt und
der Ordner bleibt leer.

b) Die heruntergeladenen Dateien haben ein unerwartetes Namensformat. Das Media-Browser-Backend erkennt nur Dateien, die
exakt dem Muster KameraName_YYYY-MM-DD_HH-MM-SS_TYP_HEXID.jpg folgen. Wenn HEXID z. B. UNKNOWN oder ein anderer
Nicht-Hex-String ist, werden die Dateien ignoriert.

c) Kameraname enthält Sonderzeichen, die im Dateisystem anders kodiert ankommen als erwartet.

Bitte poste die Ausgabe dieser zwei SSH-Befehle:

ls -la /config/bosch_events/
ls -la "/config/bosch_events/KAMERANAME/"

(KAMERANAME = exakter Anzeigename der Kamera in HA)

Außerdem: welche Version der Integration ist installiert (Einstellungen → Integrationen → Bosch Smart Home Camera)?

Mit diesen Infos kann ich den genauen Fehler eingrenzen.

Version 10.7.1

ls -la /config/bosch_events/
total 12
drwxr-xr-x    3 root     root          4096 May  7 09:48 .
drwxr-xr-x   14 root     root          4096 May  7 11:55 ..
drwxr-xr-x    2 root     root          4096 May  7 10:32 Aussenkamera Einfahrt
➜  ~ ls -la "/config/bosch_events/Aussenkamera Einfahrt/"
total 69364
drwxr-xr-x    2 root     root          4096 May  7 10:32 .
drwxr-xr-x    3 root     root          4096 May  7 09:48 ..
-rw-r--r--    1 root     root        274948 May  7 09:48 2026-05-06_21-57-07_MOVEMENT_118180F0.jpg
-rw-r--r--    1 root     root       5622745 May  7 09:48 2026-05-06_21-57-07_MOVEMENT_118180F0.mp4
-rw-r--r--    1 root     root        266342 May  7 09:48 2026-05-06_22-10-22_MOVEMENT_25227EAC.jpg
-rw-r--r--    1 root     root       4697109 May  7 09:48 2026-05-06_22-10-22_MOVEMENT_25227EAC.mp4
-rw-r--r--    1 root     root        287948 May  7 09:48 2026-05-07_06-55-22_MOVEMENT_5902C628.jpg
-rw-r--r--    1 root     root       4760436 May  7 09:48 2026-05-07_06-55-22_MOVEMENT_5902C628.mp4
-rw-r--r--    1 root     root        283978 May  7 09:48 2026-05-07_07-01-22_MOVEMENT_78204A94.jpg
-rw-r--r--    1 root     root       5260772 May  7 09:48 2026-05-07_07-01-22_MOVEMENT_78204A94.mp4
-rw-r--r--    1 root     root        457936 May  7 09:48 2026-05-07_07-22-23_MOVEMENT_58D829C0.jpg
-rw-r--r--    1 root     root       6063728 May  7 09:48 2026-05-07_07-22-23_MOVEMENT_58D829C0.mp4
-rw-r--r--    1 root     root        277618 May  7 09:48 2026-05-07_08-55-22_MOVEMENT_1071D96D.jpg
-rw-r--r--    1 root     root       6012920 May  7 09:48 2026-05-07_08-55-22_MOVEMENT_1071D96D.mp4
-rw-r--r--    1 root     root        468442 May  7 09:53 2026-05-07_09-49-53_MOVEMENT_9C8BD71A.jpg
-rw-r--r--    1 root     root       5831996 May  7 09:54 2026-05-07_09-49-53_MOVEMENT_9C8BD71A.mp4
-rw-r--r--    1 root     root        471936 May  7 10:20 2026-05-07_10-18-35_MOVEMENT_09219FFD.jpg
-rw-r--r--    1 root     root       6137867 May  7 10:20 2026-05-07_10-18-35_MOVEMENT_09219FFD.mp4
-rw-r--r--    1 root     root        285127 May  7 10:20 2026-05-07_10-19-06_MOVEMENT_F6136039.jpg
-rw-r--r--    1 root     root       5802034 May  7 10:20 2026-05-07_10-19-06_MOVEMENT_F6136039.mp4
-rw-r--r--    1 root     root        471209 May  7 10:26 2026-05-07_10-21-45_MOVEMENT_68940C98.jpg
-rw-r--r--    1 root     root       5367032 May  7 10:26 2026-05-07_10-21-45_MOVEMENT_68940C98.mp4
-rw-r--r--    1 root     root        473851 May  7 10:26 2026-05-07_10-23-08_MOVEMENT_E2A1D87C.jpg
-rw-r--r--    1 root     root       5240277 May  7 10:26 2026-05-07_10-23-08_MOVEMENT_E2A1D87C.mp4
-rw-r--r--    1 root     root        465332 May  7 10:32 2026-05-07_10-31-19_MOVEMENT_6C94ADC6.jpg
-rw-r--r--    1 root     root       5688406 May  7 10:32 2026-05-07_10-31-19_MOVEMENT_6C94ADC6.mp4

Du schreibst von dem “lokalen Speicher-Ordner” Gemeint ist die Einstellungen-Option “Download-Ordner”? weil eine andere Ordner Konfiguration finde ich nicht

Ja, “Download-Ordner” in v10.x = “Lokaler Speicher-Ordner” in v11 — selbe Einstellung, nur umbenannt.

Ich habe auch den eigentlichen Grund gefunden: Deine Dateien wurden mit dem alten Namensformat gespeichert (ohne Kamera-Prefix im Dateinamen):

2026-05-06_21-57-07_MOVEMENT_118180F0.jpg

v11 hat intern ein anderes Format erwartet:

Aussenkamera_Einfahrt_2026-05-06_21-57-07_MOVEMENT_118180F0.jpg

Das war ein Bug in der Datei-Erkennung des Media Browsers — Dateien ohne Kamera-Prefix wurden ignoriert. Fix ist in v11.0.10 (heute).

Update-Schritte:

  1. HACS → Bosch Camera → auf v11.0.10 aktualisieren
  2. HA neu starten
  3. Media Browser → Bosch Camera → deine Kamera → vorhandene Dateien sollten jetzt erscheinen ✓

Neue Dateien nach dem Update bekommen automatisch das neue Namensformat.