Skip to content

Releases: Afrouper/steinel-cam-bridge

Release v1.3.7-beta.1

Release v1.3.7-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:59

🛡️ 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 6s auf 15s angehoben und Start-Grace-Period auf 15s erweitert.
    • Verhindert Fehlalarme und vorschnelle Session-Resets bei kurzen WLAN-Schwankungen oder I/O-Spikes der Kamera beim Encodieren.
  • 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 Failed oder Closed wird sofort beendet.
  • 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_beta auf Version 1.3.7-beta.1 aktualisiert.

Full Changelog: v1.3.6...v1.3.7-beta.1

Release v1.3.6

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:40
e35a376

🚀 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.
  • 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.
  • 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_bridge wurde auf Version 1.3.6 aktualisiert.

Full Changelog: v1.3.5...v1.3.6

Release v1.3.6-beta.6

Release v1.3.6-beta.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 06:34

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 dem interceptingConn-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: BenchmarkInterceptingConnRead bestätigt 743 ns/op und 0 Allokationen pro Socket-Read.
  • Wiederverwendbarer PCM-Reader & Puffer-Kompaktierung (pkg/audio/transcoder.go):
    • Persistentes pcmReader bytes.Reader auf dem Transcoder-Struct analog zu adtsBuf.
    • t.pcmReader.Reset(chunk) eliminiert bytes.NewReader(chunk) auf jedem einzelnen AAC-Frame (50x/Sekunde).
    • Shifting/Kompaktierung unkodierter PCM-Bytes verhindert Fragmentierung und Speicherwachstum im Puffer.
    • Benchmark: BenchmarkTranscoderProcessPCMU bestätigt 5.9 µs/op.
  • 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.

Full Changelog: v1.3.6-beta.5...v1.3.6-beta.6

Release v1.3.6-beta.5

Release v1.3.6-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 06:18

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.
    • WriteTo erreicht nun 0 B/op und 0 Allokationen pro gesendetem Datagramm.
    • Eliminiert GC-Druck und Speicherfragmentierung bei kontinuierlichem Nabto Keepalive- und DTLS-Verkehr vollständig.
  • 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).
  • 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, ErrSDCardNotFound und ErrFeatureDisabled werden aus pkg/webrtc auf die zentralen Typen in pkg/storage harmonisiert.
    • Klare, standardisierte Fehlerbehandlung beim Video- und Thumbnail-Streaming.
  • Konsistente Thumbnail-Behandlung (Issue #23):
    • Bei Sofia DVRIP-Aufnahmen (pkg/xiongmai/sdcard.go) wird ThumbnailURL nun wie beim L 625-Treiber leer ("") belassen, um fehlerhafte oder ins Leere laufende Snapshot-Aufrufe in Home Assistant zu verhindern.

Full Changelog: v1.3.6-beta.4...v1.3.6-beta.5

Release v1.3.6-beta.4

Release v1.3.6-beta.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 06:02

🚀 Entflechtung des MQTT-Subsystems & EventBus Dependency Injection

  • Modularisierung des MQTT-Subsystems (pkg/mqtt):
    • client.go von 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.GlobalBus im Produktivcode.
    • Zentrale Instanziierung via events.NewBus() in pkg/app/app.go und saubere Injektion in onvif, mqtt, driver und webrtc.
    • Transparenter if eventBus == nil-Fallback zur garantierten Abwärtskompatibilität externer Aufrufe.
    • 100 % isolierte Unit-Tests ohne gegenseitige Beeinflussung globaler Zustände.
  • 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.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 20:57

Release v1.3.6-beta.2

Release v1.3.6-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 20:19

Release v1.3.6-beta.1

Release v1.3.6-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:47

Full Changelog: v1.3.5...v1.3.6-beta.1

Release v1.3.5

Choose a tag to compare

@github-actions github-actions released this 05 Sep 10:33

Full Changelog: v1.3.4...v1.3.5

Release v1.3.4

Choose a tag to compare

@github-actions github-actions released this 05 Sep 09:39

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