Releases: Afrouper/steinel-cam-bridge
Releases · Afrouper/steinel-cam-bridge
Release list
Release v1.3.7-beta.1
🛡️ Steinel CAM Bridge v1.3.7-beta.1
Dieses Beta-Release enthält gezielte Härtungsmaßnahmen zur Verbindungsstabilität, Watchdog-Toleranz und SD-Karten-I/O-Schonung auf Basis einer 12-Stunden-Loganalyse.
🛡️ Verbindungsstabilität & Resilienz-Härtung
- Toleranter Video-Watchdog:
- Schwellwert für Videostille von
6sauf15sangehoben und Start-Grace-Period auf15serweitert. - Verhindert Fehlalarme und vorschnelle Session-Resets bei kurzen WLAN-Schwankungen oder I/O-Spikes der Kamera beim Encodieren.
- Schwellwert für Videostille von
- WebRTC ICE-Entprellung (
iceStateManager):- 5-Sekunden-Karenzzeit bei flüchtigem
Disconnected-Zustand: Kurze WLAN-Wackler erholen sich transparent, ohne dass die Verbindung getrennt wird. - Nur bei
FailedoderClosedwird sofort beendet.
- 5-Sekunden-Karenzzeit bei flüchtigem
- SD-Karten- & Flash-Schonung:
- Nach Bewegungserkennung wird das Abrufen der Eventliste 20 Sekunden verzögert, damit die Kamera das MP4-Video vollständig auf die SD-Karte schreiben kann (vermeidet I/O-Überlastungen).
- Standard-Pollintervall von 60s auf 120s (2 Minuten) entspannt.
- Reboot-Cooldown im Supervisor:
- Cooldown nach Stream-Abbruch von 30s auf 60s angehoben, um der Kamera während des Bootloader-/Kernel-Starts keine sinnlosen Handshakes zu schicken.
📦 Docker & Home Assistant Add-on
- Multi-Arch Docker Images:
ghcr.io/afrouper/steinel-cam-bridge:1.3.7-beta.1(linux/amd64,linux/arm64). - Home Assistant Beta Add-on:
steinel_cam_bridge_betaauf Version1.3.7-beta.1aktualisiert.
Full Changelog: v1.3.6...v1.3.7-beta.1
Release v1.3.6
🚀 Steinel CAM Bridge v1.3.6
Dieses Release bringt eine umfassende architektonische Modernisierung nach Enterprise-Go-Standards, spürbare Performance- und Speicheroptimierungen, strukturiertes Logging sowie eine verbesserte Home Assistant- und MQTT-Stabilität.
🏛️ Architektur, Stabilität & Performance
- Moderne, modulare Schichtenarchitektur:
- Vollständig entkoppelte Treiber- und Diensteschichten (
driver,app,supervisor,mqtt,webrtc) für höchste Stabilität und Ausfallsicherheit im 24/7-Dauerbetrieb. - Einheitliche Treiber-Schnittstelle (
CameraDriver) für Steinel L 625 CAM SC und Steinel L 620 CAM / XLED CAM 1.
- Vollständig entkoppelte Treiber- und Diensteschichten (
- Spürbare Performance- & Speicher-Optimierung:
- Deutlich reduzierter Speicher- und CPU-Bedarf durch Puffer-Wiederverwendung im RTSP-Stream, Audio-Transcoder (AAC) und Pure-Go Nabto-Netzwerkstack.
- Minimierte Garbage-Collection-Last – ideal für ressourcenschwächere Plattformen (z. B. Raspberry Pi, Home Assistant Green/Yellow).
- Strukturiertes Enterprise-Logging (
log_level):- Neues, modernes Logging-System mit konfigurierbaren Leveln (
trace,debug,info,warning,error) direkt über die Add-on-Einstellungen oder CLI-Flags. - Detaillierte Diagnose ohne Leistungsverlust und ohne Müll im normalen Betriebsprotokoll.
- Neues, modernes Logging-System mit konfigurierbaren Leveln (
- Optimierte Home Assistant & MQTT-Integration:
- Entkoppeltes MQTT-Subsystem mit robusterer Auto-Discovery aller Entitäten (Licht, Nachtlicht, Dämmerungsschwelle, Bewegung, Sirene, SD-Aufnahmen).
- Isolierte Ereignisverarbeitung ohne Blockaden oder gegenseitige Beeinflussung von Diensten.
- Harmonisierter SD-Karten- & Storage-Abruf:
- Einheitliche Fehlerbehandlung und saubere Bereitstellung von Videoaufnahmen ohne Schnittstellen-Timeouts.
📦 Docker & Home Assistant Add-on
- Multi-Arch Docker Images:
ghcr.io/afrouper/steinel-cam-bridge:1.3.6(linux/amd64,linux/arm64). - Home Assistant Add-on: Das offizielle Add-on
steinel_cam_bridgewurde auf Version1.3.6aktualisiert.
Full Changelog: v1.3.5...v1.3.6
Release v1.3.6-beta.6
What's Changed in v1.3.6-beta.6
⚡ Pragmatische Hot-Path Optimierungen (RTSP & Audio)
- Zero-Allocation Socket-Lesepuffer (
pkg/rtsp/interceptor.go):- Einführung eines festen 4-KB-Lesepuffers (
readBuf [4096]byte) auf deminterceptingConn-Struct. - Vollständige Eliminierung dynamischer
make([]byte, 4096)Allokationen bei jedem einzelnen TCP-Read im RTSP-Stream. - Schneller Puffer-Reset (
c.rBuf = c.rBuf[:0]) verhindert unbegrenztes Neuallokieren des Slices im Dauerbetrieb. - Benchmark:
BenchmarkInterceptingConnReadbestätigt 743 ns/op und 0 Allokationen pro Socket-Read.
- Einführung eines festen 4-KB-Lesepuffers (
- Wiederverwendbarer PCM-Reader & Puffer-Kompaktierung (
pkg/audio/transcoder.go):- Persistentes
pcmReader bytes.Readerauf demTranscoder-Struct analog zuadtsBuf. t.pcmReader.Reset(chunk)eliminiertbytes.NewReader(chunk)auf jedem einzelnen AAC-Frame (50x/Sekunde).- Shifting/Kompaktierung unkodierter PCM-Bytes verhindert Fragmentierung und Speicherwachstum im Puffer.
- Benchmark:
BenchmarkTranscoderProcessPCMUbestätigt 5.9 µs/op.
- Persistentes
- 100 % Erhalt der Code-Klarheit & Erweiterbarkeit:
- Alle modularen Schnittstellen (
DecodePCMU->Resample8kTo16k->EncodeAAC) bleiben unverändert erhalten, um zukünftige Codecs (z. B. Opus) oder neue Kameramodelle isoliert anbinden zu können.
- Alle modularen Schnittstellen (
Full Changelog: v1.3.6-beta.5...v1.3.6-beta.6
Release v1.3.6-beta.5
What's Changed in v1.3.6-beta.5
⚡ Pure-Go Nabto Buffer-Pooling (sync.Pool) & Zero-Allocation UDP-Framing
- Zero-Allocation UDP Datagram Framing (
pkg/nabtopure/packet_conn.go):- Einführung von
sync.Pool(udpBufPool, 2048 Bytes) für eingehende und ausgehende UDP-Pakete. WriteToerreicht nun 0 B/op und 0 Allokationen pro gesendetem Datagramm.- Eliminiert GC-Druck und Speicherfragmentierung bei kontinuierlichem Nabto Keepalive- und DTLS-Verkehr vollständig.
- Einführung von
- Optimierte Stream-Paketerzeugung (
pkg/nabtopure/stream.go):- Einsatz von
sync.Pool(streamBufPool) für SYN- und ACK-Pakete (buildSYNPacket,buildACKPacket). - Reduzierung des Speicherbedarfs bei Stream-Aushandlung und Segment-Bestätigung auf ein absolutes Minimum (1 Allokation/Op).
- Einsatz von
- Benchmark-Verifikation (
pkg/nabtopure/packet_conn_bench_test.go):- Automatisierte Benchmarks bestätigen Zero-Allocation Framing und maximale Durchsatzraten.
💾 SD-Karten & Storage Harmonisierung
- Einheitliche Fehlersemantik (
pkg/storage):- Bereinigung redundanter Error-Definitionen:
ErrSDCardBusy,ErrSDCardNotFoundundErrFeatureDisabledwerden auspkg/webrtcauf die zentralen Typen inpkg/storageharmonisiert. - Klare, standardisierte Fehlerbehandlung beim Video- und Thumbnail-Streaming.
- Bereinigung redundanter Error-Definitionen:
- Konsistente Thumbnail-Behandlung (Issue #23):
- Bei Sofia DVRIP-Aufnahmen (
pkg/xiongmai/sdcard.go) wirdThumbnailURLnun wie beim L 625-Treiber leer ("") belassen, um fehlerhafte oder ins Leere laufende Snapshot-Aufrufe in Home Assistant zu verhindern.
- Bei Sofia DVRIP-Aufnahmen (
Full Changelog: v1.3.6-beta.4...v1.3.6-beta.5
Release v1.3.6-beta.4
🚀 Entflechtung des MQTT-Subsystems & EventBus Dependency Injection
- Modularisierung des MQTT-Subsystems (
pkg/mqtt):client.govon 563 Zeilen auf 207 Zeilen reduziert und in vier fokussierte Module zerlegt:client.go: Verbindungs-Lifecycle, Auto-Reconnect, LWT (Last Will and Testament), Thread-Sicherheit.discovery.go: Home Assistant Auto-Discovery für alle 10 Entitäten (light,select,sensor,binary_sensor,number,siren,event) mit sauberen Metadaten.state.go: Status- und Telemetrie-Publizierung, Bewegungsevents (publishMotion) und SD-Karten-Aufnahmetelemetrie (PublishRecordingEvent).command.go: Sicheres Parsen und Dispatching eingehender MQTT-Kommandos (inkl. JSON-Payloads für Sirenen).
- Vollständige Dependency Injection für den
EventBus:- Beseitigung aller Singleton-Aufrufe von
events.GlobalBusim Produktivcode. - Zentrale Instanziierung via
events.NewBus()inpkg/app/app.gound saubere Injektion inonvif,mqtt,driverundwebrtc. - Transparenter
if eventBus == nil-Fallback zur garantierten Abwärtskompatibilität externer Aufrufe. - 100 % isolierte Unit-Tests ohne gegenseitige Beeinflussung globaler Zustände.
- Beseitigung aller Singleton-Aufrufe von
- 100 % Erhalt aller Fachlogik & Concurrency-Garantien:
- Alle Cooldowns, Reconnect-Intervalle (15s/30s) und Watchdogs bleiben unverändert erhalten.
- Go Race-Detector (
-race): 0 Data Races erkannt.
Docker Images (Multi-Arch: linux/amd64, linux/arm64):
ghcr.io/afrouper/steinel-cam-bridge:1.3.6-beta.4
Release v1.3.6-beta.3
Release v1.3.6-beta.2
Release v1.3.6-beta.1
Release v1.3.5
Full Changelog: v1.3.4...v1.3.5
Release v1.3.4
What's Changed
- chore(deps): bump github.com/pion/webrtc/v4 from 4.2.18 to 4.2.19 by @dependabot[bot] in #28
- chore(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #29
- feat(stability): harden connection lifecycle, cgo concurrency and throttle sd card sync by @Afrouper in #31
Full Changelog: v1.3.3...v1.3.4