Die Bosch Smart Home Kameras sind solide Hardware — Indoor 360, Eyes Außenkamera, Eyes Innenkamera II, Eyes Außenkamera II. Nur an der Software-Seite für Home Assistant hat es bisher gehapert. Die offizielle SHC-Integration sieht die Kameras quasi nicht, die Cloud-App bleibt eine Insel. Dieses Projekt schließt die Lücke: eine vollständige, offene Integration, die direkt mit der Bosch-Cloud spricht, alle Features der App nach Home Assistant bringt und dazu Dinge kann, die sonst nirgendwo gehen.
Das Projekt besteht aus zwei Teilen: einer Home Assistant Custom Integration mit eigenem Lovelace Dashboard Card und einem Python CLI Tool für alle, die lieber auf der Kommandozeile arbeiten. Beide sind MIT-lizenzierter Open Source auf GitHub und via HACS installierbar. Der Rest dieses Artikels erklärt, was die Integration kann, wie sie aufgebaut ist und wie du sie installierst.
Ueberblick: Was die Integration leistet
Die Integration nutzt die gleiche Cloud-API, mit der auch die offizielle Bosch Smart Camera App auf iOS und Android arbeitet — keine Hardware-Modifikation, kein Reverse-Proxy, keine gebastelte Brücke über den SHC-Controller. Eingerichtet wird sie einmalig per OAuth2-Login mit dem Bosch SingleKey ID Konto. Ab dem Moment stehen alle Kameras als Home-Assistant-Entitäten zur Verfügung, bedienbar über Lovelace, über Automationen und über den HA REST API.
Unterstützt werden:
- Bosch Smart Home Indoor 360 (Gen1, FW 7.91.x) — 360 Grad Drehkamera für Innenraum
- Bosch Smart Home Eyes Außenkamera (Gen1, FW 7.91.x) — Outdoor-Kamera mit Frontlicht und Wallwasher
- Bosch Smart Home Eyes Innenkamera II (Gen2, FW 9.40.x) — Outdoor-taugliche Innenkamera der zweiten Generation
- Bosch Smart Home Eyes Außenkamera II (Gen2, FW 9.40.x) — Aktuelles Modell mit DualRadar-Bewegungserkennung und RGB-Beleuchtung
Gen1 und Gen2 haben teils unterschiedliche APIs. Die Integration erkennt das Modell automatisch am hardwareVersion-Feld der Cloud-Antwort und nutzt den jeweils richtigen Endpunkt. Du musst beim Einrichten nichts auswählen — es funktioniert einfach.
Installation in zwei Minuten
Option A: HACS (empfohlen)
- In HACS auf Benutzerdefinierte Repositories klicken und
https://github.com/mosandlt/Bosch-Smart-Home-Camera-Tool-HomeAssistantals Typ Integration hinzufügen. - Das Repo in HACS installieren, Home Assistant neu starten.
- Unter Einstellungen → Geräte & Dienste → Integration hinzufügen nach Bosch Smart Home Camera suchen.
- Der Einrichtungsdialog öffnet die Bosch SingleKey ID Anmeldeseite im Browser. Nach dem Login leitet Bosch Keycloak automatisch zurück zu Home Assistant — per PKCE (S256) abgesicherter OAuth2-Flow.
- Fertig. Alle Kameras deines Kontos erscheinen als Entitäten.
Option B: Manuell
Das custom_components/bosch_shc_camera/ Verzeichnis aus dem GitHub-Repo nach /config/custom_components/ kopieren. Danach Home Assistant neu starten und die Integration wie oben in Schritt 3 hinzufügen.
Lovelace Card aktivieren
Das Card-JavaScript wird vom Integration-Paket als Ressource mitgeliefert. Die Lovelace-Ressource auf /local/bosch-camera-card.js registrieren (Typ: module), dann in einem Dashboard einfügen:
type: custom:bosch-camera-card camera_entity: camera.bosch_terrasse title: Terrasse
Die Home Assistant Integration im Detail
Jede Kamera bringt rund 60 Entitäten mit sich — Schalter, Sensoren, Buttons, Slider, Selects, Lights. Die wichtigsten:
Kamera und Live-Streaming
- Live Video direkt im Dashboard — H.264 1080p 30fps inklusive AAC-Audio. Als Standard wird eine LOCAL-Verbindung zur Kamera im eigenen Netz aufgebaut (~2 Sekunden Latenz via WebRTC über go2rtc, optional Fallback auf HLS). Bei Problemen schaltet die Integration automatisch auf die REMOTE-Verbindung über die Bosch Cloud.
- Snapshots (Standbilder) — In einstellbaren Intervallen (Default 30 Minuten) oder direkt per Knopfdruck aus der Lovelace Card. Kamera 360 nutzt dabei automatisch die LOCAL Digest-Authentifizierung, die anderen Modelle die Cloud-Proxy-Route.
- RCP-Thumbnail-Fallback — Für mobile Ansichten und Benachrichtigungen liefert die Integration auf Wunsch ein kleines 320×180 Thumbnail aus dem RCP-Protokoll der Kamera. Ein paar Kilobyte statt 150 KB — spart Akku und Datenvolumen.
- Video-Qualität — Auto, Hoch (30 Mbps), Mittel oder Niedrig (1,9 Mbps) als separater Select für jede Kamera.
Schalter und Steuerung
- Privacy Mode — Kamera-Shutter öffnen/schließen. Cloud-API-Call, reagiert in ~150ms. Auf Gen2 mit zusätzlichem lokalen RCP-Fallback falls die Cloud gerade nicht antwortet.
- Kameralicht — Bei Außenkamera Gen1 Frontlicht und Wallwasher einzeln oder kombiniert schalten.
- Gen2 Beleuchtung — Drei separate Lichtgruppen (Frontlicht kaltweiß/warmweiß, oberes LED-Licht RGB, unteres LED-Licht RGB) als native Home Assistant Light Entity mit Farbrad und Helligkeits-Slider. Bewegungslicht und Dauerlicht als separate Schalter. Farbe und Helligkeit lassen sich vorkonfigurieren, ohne das Licht tatsächlich einzuschalten — Werte werden beim nächsten Einschalten angewendet.
- Benachrichtigungen — Master-Switch plus einzelne Typen: Bewegung, Person, Audio, Störung, Kamera-Alarm.
- Zeitstempel-Overlay — Datum und Uhrzeit im Videobild ein- und ausblenden.
- Bewegungserkennung — An/Aus plus Empfindlichkeit (6 Stufen).
- Auto-Follow — Automatisches Tracking bei der 360-Kamera.
- Gegensprechanlage — Zwei-Wege-Audio mit Lautstärkeregler.
- Pan-Position — ±120 Grad Slider für die 360-Kamera. Während Privacy-Mode ON ist der Slider deaktiviert (Motor ist im Shutter-Zustand gesperrt).
- Ton aufnehmen — Audio in Cloud-Recordings aktivieren/deaktivieren.
- Privacy-Ton — Akustisches Signal bei Privacy-Wechsel.
Gen2-spezifische Features
- Einbruchserkennung (Intrusion Detection) — DualRadar-basiert, 1-5 Stufen Empfindlichkeit, konfigurierbare Distanz in Metern.
- Alarm-Status-Sensor — Zeigt den aktuellen Zustand der internen Alarmanlage (armed, disarmed, alarm_active).
- Bewegungs-Zonen als Polygone — Gen2 liefert bis zu acht Eckpunkte pro Zone mit PERSON-Trigger und individueller Farbe. Das Lovelace Card rendert sie als SVG-Overlay auf dem Kamerabild.
- Privacy-Masken als Polygone — Schwarze Bereiche, in denen die Kamera nicht aufzeichnet. Werden ebenfalls als SVG-Overlay angezeigt.
- Sirene und Pre-Alarm-LED — 75 dB interne Sirene mit konfigurierbaren Delays (optional, standardmäßig aus).
- Status-LED — Rote Betriebs-LED an der Kamera ein- und ausschalten.
- Montagehöhe — Für die Personenerkennung in Metern einstellbar.
Sensoren und Diagnose
- Kamera-Status (ONLINE/OFFLINE) mit
/commissionedHealth-Check - WiFi-Signal in Prozent, Firmware-Version, Umgebungslicht
- Firmware-Update-Entity — native HA Update-Card mit Install-Button
- Zeitplan-Regeln — Anzahl und Details der aktiven Cloud-Automationsregeln
- Event-Zähler — Gesamt, Bewegung und Audio jeweils pro Tag
- Binary Sensors — Bewegung, Audio-Alarm, Personenerkennung
- Motion-Zonen-Sensor und Privacy-Masken-Sensor (Polygon-Daten bei Gen2)
- Cloud-Proxy-URL und LAN/Cloud-Badge (zeigt an, über welche Route der Stream läuft)
Der Lovelace Card
Die Dashboard-Karte ist mit der Integration ausgerollt und sammelt alle Steuerelemente auf engem Raum. Aufgebaut in drei Zonen:
- Kopf — Titel, Firmware-Version, Stream-Badge (LAN/Cloud/offline), Uptime-Zähler, Anzahl Events heute.
- Videobild — Live Video oder Snapshot-Modus, mit Pan-Steuerung und SVG-Overlays für Zonen und Privacy-Masken (abschaltbar).
- Steuerleiste — Hauptsteuerung (Ton, Licht, Privat, Benachrichtigungen) immer sichtbar plus drei aufklappbare Akkordeon-Menüs für Benachrichtigungstypen, erweiterte Einstellungen und Diagnose.
Der Snapshot-Button triggert eine aktuelle Bild-Aktualisierung mit 6-Sekunden-Timeout und Baseline-Vergleich: die Karte liest die Byte-Größe des aktuellen Bilds vor dem Service-Call, dann löst sie die Aktualisierung aus und pollt, bis sich die Größe ändert. Das verhindert, dass der Spinner ewig läuft, nur weil das Bild schon von einer anderen Karte im Dashboard aktualisiert wurde.
Bei Offline-Kameras blendet die Karte alle Bedienelemente aus und zeigt stattdessen ein dezentes offline-Overlay — so erkennt man den Fehler auf einen Blick, ohne dass die Schalter verwirrend halb-aktiv wirken.
Benachrichtigungen mit 3-Stufen-Alert
Klassische HA-Setups brauchen eigene Automationen für Kamera-Events. Diese Integration liefert sie direkt mit. Pro Ereignis (Bewegung, Person, Audio, Störung) werden bis zu drei Benachrichtigungen in eigenen Zeitfenstern verschickt:
- Sofort-Text — „Terrasse: Bewegung (10:31:56)”, in Echtzeit über den ausgewählten Notify-Service.
- Snapshot — JPEG-Bild des Ereignisses, typischerweise 4-8 Sekunden später.
- Video-Clip — MP4 mit dem vollen Event-Clip, meist nach 30-90 Sekunden verfügbar.
Jede Stufe kann einen eigenen Notify-Service bekommen (Telegram, Signal, iOS Push, E-Mail, was immer HA unterstützt). Stufen mit leerem Service werden sauber übersprungen — wer kein Video möchte, lässt das Feld frei, und die Integration sendet nur Text und Bild.
Die Event-Erkennung läuft dabei nicht über Polling, sondern über Firebase Cloud Messaging (FCM) — also den gleichen Push-Kanal, über den auch die offizielle Bosch-App arbeitet. Die Integration hat einen eigenen FCM-Push-Listener. Ergebnis: Ereignisse landen in ~2-3 Sekunden in HA, nicht erst alle paar Minuten bei der nächsten Abfrage. Bei FCM-Ausfall greift automatisch das Polling-Backup.
NAS-Upload und Aufbewahrung
Ereignis-Snapshots und Video-Clips lassen sich direkt auf ein SMB-Netzlaufwerk hochladen — FRITZ!Box NAS, Synology, QNAP, Windows-Freigabe, egal. Konfigurierbar sind Server, Share, Benutzer, Passwort, Ordnerstruktur und Dateinamen-Pattern. Eine automatische Aufbewahrungs-Politik löscht alte Dateien nach X Tagen (Default 180 Tage). Bei wenig freiem Speicher gibt es eine Warnung per HA-Persistent-Notification oder Notify-Service.
Seit v10.2.1 läuft die tägliche Aufräum-Routine als Hintergrund-Task — wenn der NAS gerade unerreichbar ist, blockiert das nicht mehr den Coordinator-Tick von Home Assistant.
Externer Recorder: Frigate, BlueIris und go2rtc
Wer die Kameras parallel in einem NVR-System aufzeichnen möchte — Frigate, BlueIris, go2rtc oder ein beliebiger RTSP-Recorder — kann dafür dauerhafte, passwortfreie RTSP-Endpunkte aktivieren. Die Integration betreibt dazu pro Kamera einen schlanken RTSP-Proxy, der Bosch-Digest-Credentials automatisch injiziert. Der Recorder bekommt einen stabilen URL, der weder rotiert noch abläuft.
Aktivierung: Einstellungen → Integrationen → Bosch Smart Home Camera → Konfigurieren → Externer Recorder. Dort den Haken bei „Frigate-Endpunkte aktivieren“ setzen. Anschließend pro Kamera den Schalter Frigate-Stream High einschalten (im HA-Geräte-Panel unter „Konfiguration“ sichtbar machen). Der Sensor Frigate RTSP URL (High) zeigt danach die fertige URL.
Optional lässt sich ein fixer Port setzen, damit die URL auch nach HA-Neustarts stabil bleibt (Standard: dynamischer Port). Ebenso konfigurierbar: Bind-Host (Standard 127.0.0.1, für LAN-Zugriff auf die Host-IP ändern), eine IP-Allowlist sowie die maximale Zahl gleichzeitiger Recorder-Verbindungen pro Kamera (Standard 8).
Die Endpunkte sind rein LOCAL — kein Cloud-Traffic, kein separates Addon, kein Zertifikat. Der Proxy läuft direkt im HA-Event-Loop.
Streaming: LOCAL bevorzugt, REMOTE als Backup
Das Live-Streaming läuft per RTSPS (RTSP über TLS) direkt zur Kamera, wenn Home Assistant und Kamera im selben Netz sind. Das ist nicht nur schneller (niedrigere Latenz, keine Cloud-Proxy-Hop), sondern auch sparsam mit dem Bosch-Cloud-Traffic. Besonderheit der Bosch-Kameras: sie akzeptieren nur HTTPS auf Port 443, mit Bosch Private CA Self-Signed-Zertifikat und HTTP Digest-Authentifizierung. FFmpeg — das Video-Backend von HA — kommt damit aus der Box nicht klar.
Deshalb startet die Integration für jede LOCAL-Verbindung einen internen TLS-Proxy: eine Thread-basierte TCP-zu-TLS-Brücke auf localhost, die den Self-Signed-Cert akzeptiert und das RTSP Transport-Feld von UDP auf TCP interleaved umschreibt. Aus FFmpegs Perspektive spricht er mit einem klartext-RTSP-Server auf dem lokalen Loopback-Interface. In der Praxis funktioniert das stabil, seit Version 7 haben sich hier viele Feinheiten eingespielt (RTP-Keepalive im interleaved Transport, Session-Renewal, Reconnect mit exponentiellem Backoff).
Falls die LOCAL-Verbindung scheitert (Kamera im Gastnetz, keine direkte Route, Firewall), schaltet die Integration automatisch auf REMOTE — Bosch-Cloud-Proxy als Zwischenstation. Langsamer (zusätzliche ~500-1000ms Latenz) aber funktioniert von überall.
Unter der Haube: Die Bosch Cloud API
Bosch veröffentlicht keine offizielle API-Dokumentation für die Consumer-Kameras. Das Fundament dieser Integration ist deshalb Reverse Engineering der iOS- und Android-App. Per mitmproxy wurden über 130 API-Endpunkte dokumentiert, von der OAuth-Authentifizierung über Privacy-Steuerung bis zur Gen2-Lichtsteuerung mit drei getrennten LED-Gruppen. Einige Highlights, die so in der offiziellen App gar nicht sichtbar sind:
- Direkte Privacy-Steuerung per Cloud API (
PUT /privacy, ~150ms) — signifikant schneller als der Umweg über den SHC Smart Home Controller (~1100ms) - Bewegungsempfindlichkeit in 7 Stufen (OFF bis SUPER_HIGH) — in der App gibt es nur drei
- Per-Typ Benachrichtigungen — einzelne Aktivierung von Bewegung, Person, Audio, Störung, Kamera-Alarm (App macht das meistens nur im Bundle)
- Cloud-Zeitplan-Regeln — CRUD-Operationen für zeitbasierte Automationen auf Server-Seite
- Kamera-Sharing — Freunde einladen mit zeitbegrenztem Zugang
- RCP-Protokoll — 893 Befehle auf Auth-Level 3 verfügbar (Live-Thumbnails, IVA-Regeln, Systemuhr, Netzwerk)
- OAuth2 mit PKCE (S256) via Bosch Keycloak (SingleKey ID), automatische Token-Erneuerung vor Ablauf
Die Authentifizierung läuft dabei über einen dedizierten OSS-OAuth-Client, den Bosch im April 2026 für Open-Source-Projekte bereitgestellt hat. Die Integration spricht also nicht mehr mit den App-eigenen Credentials, sondern mit einem eigenen, für diesen Zweck vorgesehenen Client.
Ausfallsicherheit: Wenn die Cloud mal hängt
Bosch-Cloud-Komponenten sind nicht immer 100% verfügbar. Die Integration geht davon aus und hat zwei separate Fallback-Pfade:
- Auth-Server Ausfall — Wenn
smarthome.authz.bosch.commit HTTP 5xx antwortet (wie zuletzt am 15.04.2026 um 05:47 CEST), erkennt die Integration das als Auth-Server-Outage und interpretiert es nicht fälschlich als Reauth-Fall. Exponential Backoff (60s → 120s → 240s → 480s, Cap bei 10 Minuten) verhindert, dass wir einen angeschlagenen Auth-Server zusätzlich bombardieren. Nach drei Ausfall-Zyklen gibt es eine einmalige Persistent-Notification in HA — kein kaputter Reauth-Button, kein Nachtpanik-Ticket. - Cloud-Proxy nicht erreichbar — Kritische Kommandos fallen auf direkt-lokale Wege zurück. Snapshot-Abruf via HTTPS+Digest direkt zur Kamera-IP. Privacy-Mode schalten per unauthentifiziertem RCP (
http://cam-ip/rcp.xml) auf Gen2-Modellen. Ephemere LOCAL-Digest-Credentials werden zwischengespeichert und bleiben nutzbar, bis die Kamera rebootet.
Wird ein Privacy-Befehl durch alle Fallback-Pfade durchgereicht, ohne dass eine davon durchkommt, zeigt HA eine Persistent-Notification „Privacy-Befehl nicht zugestellt”. Keine stillen Misserfolge.
Sicherheit: Pentest und Hardening
Das Projekt hat eine Pentest-Runde durchlaufen (12 Angriffsvektoren, keiner erfolgreich). Die daraus gewonnenen Erkenntnisse wurden in Version 10.0.0 als Security Hardening Release eingebaut:
- URL-Allowlist für alle ausgehenden HTTP-Calls — kein SSRF über manipulierte Cloud-Antworten
- Path-Sanitization für SMB-Uploads — kein Pfad-Traversal über Event-IDs
- Input-Validation auf sämtlichen Service-Call-Parametern
- Redaction von Credentials in Logs — LOCAL-Digest-Passwörter werden auf
abc***(24 chars)gekürzt, bevor sie in den Log gelangen - Refresh-Token-Rotation: nach Keycloak-
invalid_grantwird kein Exception-Body mehr geloggt, weil Keycloak-Antworten Token-Material echoen können
Vier Befunde des Pentests sind out of scope und von der Kamera-Firmware selbst abhängig (RCP-READ ohne Auth auf Gen2, TLS 1.0/1.1-Fähigkeit des Kamera-Servers, lokale RCP-Endpoints, ephemere userTokens). Die sind bekannt und an Bosch gemeldet.
Stabilität und Thread-Safety
Die Integration läuft in Home Assistants asyncio-Event-Loop, nutzt aber an einigen Stellen zusätzlich Threads — insbesondere für den Firebase-Push-Listener und den TLS-Proxy. Geteilte Felder sind durch Locks abgesichert (_fcm_lock für FCM-Zustand, per-Kamera _snapshot_fetch_locks für gleichzeitige Snapshot-Anfragen, zentrale Verwaltung von LOCAL-Session-Renewal-Tasks). Ein nicht erreichbares NAS blockiert den Coordinator-Tick nicht mehr länger — sämtliche Executor-Jobs haben jetzt Socket- und asyncio-Timeouts.
Diese Dinge sind im Normalbetrieb unsichtbar, aber sie sorgen dafür, dass das System auch nach Wochen Laufzeit und mehreren Cloud-Ausfällen dazwischen noch genauso reagiert wie am ersten Tag.
HA Services für eigene Automationen
Sechzehn Services stehen für eigene Automationen und Skripte zur Verfügung. Die wichtigsten:
# Snapshot sofort aktualisieren service: bosch_shc_camera.trigger_snapshot # Cloud-Zeitplanregel erstellen service: bosch_shc_camera.create_rule data: camera_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name: "Nachts: Privacy AN" start_time: "22:00:00" end_time: "06:00:00" weekdays: [0,1,2,3,4,5,6] is_active: true # Event-Clip für ein bestimmtes Ereignis herunterladen service: bosch_shc_camera.download_clip data: event_id: "12345678-..."
Zur Verfügung stehen ausserdem Services für das Pairen mit dem SHC, das Setzen von Bewegungs-Zonen und Privacy-Masken, das Senden von Lichtsteuer-Befehlen und — auf Wunsch — direkte RCP-Befehle an die Kamera.
Das Python CLI Tool
Für Leute, die lieber auf der Kommandozeile arbeiten, gibt es das separate Python CLI Tool. Es nutzt die gleiche Cloud-API und eignet sich für schnelle Checks, Debugging und Scripted Setups. Einmal pip install requests ausführen, OAuth-Login via localhost:8321/callback, dann läuft es. Ein paar typische Kommandos:
# Uebersicht aller Kameras python3 bosch_camera.py list # Privacy-Mode schalten python3 bosch_camera.py privacy on python3 bosch_camera.py privacy off # Licht steuern python3 bosch_camera.py light on python3 bosch_camera.py light off # Pan auf 45 Grad fahren (360-Kamera) python3 bosch_camera.py pan 45 # Events live beobachten (FCM Push) python3 bosch_camera.py watch --push # Komplette Status-Info mit 15+ API-Endpunkten python3 bosch_camera.py info --full
Ausserdem beherrscht das CLI rules add/edit/delete für Cloud-Zeitpläne, friends invite/share/remove für Kamera-Sharing, intercom, siren, privacy-sound, autofollow und direkte RCP-Befehle wie rcp snapshot, rcp clock, rcp alarms.
Architektur in einem Satz
Home Assistant → Integration-Coordinator (Python, asyncio) → Bosch Cloud API (via OAuth2/PKCE + FCM push) → Bosch Kamera (direkt per TLS 1.2+HTTPS+Digest für LOCAL Snapshots und RTSP-Stream via integriertem TLS-Proxy).
Was die Integration nicht kann (und warum)
Der Vollständigkeit halber die klaren Grenzen, damit es keine falschen Erwartungen gibt:
- Kein Motion-Zone-Editor bei Gen1 — Die Kamera-Firmware überschreibt Cloud-Settings per internem IVA-Rules-Engine (RCP 0x09f3) nach ~1 Sekunde. Das ist ein Firmware-Verhalten, das sich über die API nicht vermeiden lässt. Auf Gen2-Kameras mit Polygon-Zonen funktioniert der Editor hingegen zuverlässig.
- Kein Clip-Download aus dem Cloud-Speicher — Diese Funktion wurde bewusst entfernt.
- Keine Live-Audio-Wiedergabe im Dashboard — Die Kameras streamen AAC, HA zeigt das korrekt in einem HTML5-Audio-Element an. Dauerhafter Audio-Monitor in der Sidebar steht noch auf der Wunschliste.
- Keine Offline-Integration ohne Bosch-Cloud-Konto — Die Kameras sprechen heute noch kein offenes RTSP auf Port 554 und kein ONVIF. Bosch arbeitet an einem permanenten lokalen Benutzer (geplant für 2026), dann wird Offline-Streaming ohne Cloud-Abhängigkeit möglich.
FAQ
Ist mein Bosch-Konto sicher bei dieser Integration?
Ja. Die Integration nutzt den offiziellen, von Bosch im April 2026 für Open-Source-Projekte bereitgestellten OAuth-Client mit PKCE (S256). Der Login läuft über Bosch SingleKey ID — die Integration sieht dein Passwort nicht, sondern bekommt nur kurzlebige Access-Tokens und einen Refresh-Token. Alle OAuth-Tokens werden in Home Assistants verschlüsseltem Secrets-Storage abgelegt.
Brauche ich einen Bosch Smart Home Controller (SHC)?
Nein. Die Integration spricht direkt mit der Bosch Cloud. Falls du einen SHC hast, kann die Integration ihn als Sekundär-Pfad für Privacy-Befehle nutzen (Fallback, wenn die Cloud gerade nicht antwortet), aber er ist nicht Voraussetzung.
Funktioniert das mit beiden Kamera-Generationen?
Ja. Gen1 (Indoor 360, Eyes Außenkamera, FW 7.91.x) und Gen2 (Eyes Innenkamera II, Eyes Außenkamera II, FW 9.40.x) werden beide vollständig unterstützt. Gen2 hat mehr Endpunkte (Polygon-Zonen, RGB-Beleuchtung, Einbruchserkennung, Sirene), die die Integration automatisch erkennt und nutzt.
Warum dauert der erste Snapshot manchmal 5-10 Sekunden?
Der erste Snapshot-Abruf macht einen kompletten PUT /connection-Roundtrip zur Bosch-Cloud plus einen RCP-Handshake mit der Kamera. Das dauert einmalig. Nachfolgende Snapshots hit den internen Proxy-URL-Cache und liefern in 500ms-1s.
Kann ich einen Snapshot in einer Automatisierung nutzen?
Ja, ganz klassisch. service: bosch_shc_camera.trigger_snapshot erzwingt ein frisches Bild, dann camera.snapshot für den lokalen Save. Oder du verlässt dich auf den automatischen Refresh-Zyklus (Default 30 Minuten, konfigurierbar).
Wie komme ich an den Event-Clip-MP4?
Automatisch als dritte Stufe im Alert-System — in deinen alert_notify_video-Service. Alternativ manuell per bosch_shc_camera.download_clip, wobei du eine Event-ID mitgeben musst.
Was passiert, wenn Home Assistant neu startet?
Integration startet neu, OAuth-Tokens werden automatisch erneuert, FCM reregistriert sich, der TLS-Proxy startet pro Kamera beim ersten Streaming-Aufruf. Nichts Manuelles.
Wie sehe ich ob FCM-Push aktiv ist oder auf Polling zurückgefallen wird?
In den Integration-Details steht ein Attribut fcm_healthy. In den Logs siehst du alle 60 Sekunden einen Statushinweis. Im Dashboard gibt es einen Diagnose-Sensor, der dir die letzte FCM-Push-Zeit und den Modus (ios, android, auto) anzeigt.
Kann ich das parallel zur offiziellen Bosch Smart Camera App verwenden?
Ja. Beide sprechen die gleiche Cloud-API — sie kommen sich nicht in die Quere. Auf deinem Handy können also weiterhin Push-Benachrichtigungen landen, und in HA gleichzeitig die FCM-Pushes.
Ausblick
Auf der Roadmap für 2026 stehen mehrere Punkte, die das Projekt deutlich weiterbringen werden. Der größte ist der permanente lokale Kamera-Benutzer, an dem Bosch arbeitet und der voraussichtlich im Sommer verfügbar wird. Damit wird echtes Offline-Streaming möglich — Kameras, die auch dann funktionieren, wenn die Bosch-Cloud mal komplett weg ist. Gleichzeitig kommt mutmasslich ONVIF-Unterstützung und ein normaler RTSP-Port, was die Integration in andere NVR-Systeme deutlich einfacher macht.
Auf Integrations-Seite ist der nächste große Schritt der Cloud-Rules-Editor direkt im Dashboard — heute geht das nur via Service-Call, kommt aber demnächst als UI-Komponente. Ebenso der Motion-Zone-Editor für Gen2 und erweiterte Camera-Sharing-Funktionen über die Friends-API.
Installation, Updates, Links
- Home Assistant Integration — Installation via HACS oder manuell
- Python CLI Tool —
pip install requestsund loslegen - Releases und Changelog
- Issues und Feature-Requests
- Buy Me a Coffee
Fragen oder Probleme? Auf GitHub per Issue, oder im Home Assistant Community Forum. Auch per Kontaktformular erreichbar.
Aktueller Stand
Dieser Abschnitt wird mit jedem Release aktualisiert — alles andere oben bleibt wie es ist.
HA Integration v10.2.1 — 17. April 2026
- Snapshot-Fix für Gen1 Indoor: Die CAMERA_360 liefert auf REMOTE
snap.jpgHTTP 401, weshalb beim Oeffnen des Dashboards früher das Bild von gestern angezeigt wurde, bis der 30-Minuten-Hintergrund-Refresh sich darum kümmerte. Neu:async_camera_imageprobiert sofort die LOCAL-Digest-Route, genau wie der Hintergrund-Refresh. Aktuelles Bild schon auf dem ersten Ladevorgang. - Per-Kamera Snapshot-Lock: Gleichzeitige
async_fetch_live_snapshot()-Aufrufe für dieselbe Kamera werden jetzt serialisiert — kein doppeltesPUT /connectionmehr, wenn Erstladen und Hintergrund-Refresh sich überschneiden. - NAS-Aufräumen blockiert nicht mehr: Die tägliche SMB-Retention-Cleanup-Routine läuft jetzt als Hintergrund-Task. Coordinator-Tick fällt von ~30 s auf ~1,8 s an Aufräum-Tagen. Die wiederkehrende Warnmeldung SMB cleanup timed out after 30s ist Geschichte.
- Log-Level aufgeräumt: Stream-Fehler loggen nur noch bei Threshold-Übergang, nicht mehr bei jedem Retry. Keycloak-
invalid_grant-Fehler loggen den Exception-Body nicht mehr (Token-Leak-Risiko). Pan-bei-Privacy-ON von warning auf debug herabgesetzt. FCM-Push-Netzwerkfehler in warning (Timeouts/ClientError) und debug (sonstiges) aufgeteilt. - Card v2.8.8: Snapshot-Button lädt nicht mehr endlos, wenn das Bild schon vor dem Klick aktualisiert wurde. Baseline der Byte-Größe wird jetzt vor dem Service-Call gezogen statt danach. Polling-Timeout von 15 s auf 6 s verkürzt.
Vollständiger Changelog samt früheren Versionen im GitHub-Releases-Tab.
Download: v14.2.1 HA Integration · v10.10.4 Python CLI