Skip to content

v0.14.0 — auto everything, instant live start

Choose a tag to compare

@github-actions github-actions released this 09 Jul 17:21

Milestone release rolling up the whole 0.13.x line. Update + full HA restart recommended.

✨ Highlights

  • Everything auto by default — Stream mode auto probes the video codec at startup and picks WebRTC for H.264 (audio + low latency) or MJPEG for HEVC (codec-agnostic, no go2rtc). No more needing to know your doorbell's codec (#35, #36, #37, #39).
  • Instant live start (GOP cache) — the relay replays the stream since the last keyframe to every new viewer, eliminating the 20-30 s blank wait on doorbells with long keyframe intervals (#37).
  • HPD7 label light works — read and write, via the IoT LightCtrl/NightLightEnable property (confirmed on real hardware) (#24, #34).
  • New read-only feature sensors (when the device reports them): microphone volume, mute, loitering, stranger detection, human detection (#34).
  • Live stream attributes — the camera exposes the active stream_source, stream_mode and video_codec, ready for an on-screen badge via picture-elements.

🛠 Fixes

  • MJPEG on HEVC: ffmpeg couldn't determine codec parameters and delivered 0 bytes (+nobuffer pinned the probe window to 0) (#39, HPD7 confirmed fixed).
  • Switches no longer bounce back after toggling — optimistic state with a 20 s grace window over the cloud's stale reading (#40).
  • Entities no longer blank to "unknown" on transient EZVIZ cloud errors — 1 min grace window keeping last-good values + automatic re-login when a session expires (#36).
  • Paired-monitor setups: 'NoneType' object has no attribute 'get' on composite serials (monitor reports WIFI: null) (#37, and others).
  • Relay watchdog: sessions whose ffmpeg produces no output now abort instead of leaking broadcast subscribers and ffmpeg processes (#41).
  • Config-entry reload no longer breaks entities (async_config_entry_first_refresh state error) (#38).
  • CAS TLS: safer expired-certificate handling (adopted from upstream pyEzvizApi).
  • DTS wrap on the LAN path (33-bit MPEG-TS clock) — wall-clock timestamps (#37).

🔧 New options

  • Relay listen host (relay_bind, default 127.0.0.1) — set 0.0.0.0 + a fixed port to let an external host (e.g. Frigate on another box) ingest the relay directly. ⚠️ unauthenticated raw stream: trusted LANs only (#41).
  • Debug diagnostic: with debug logging on, the relay dumps the first 64 KB of video ES to <config>/ezviz_hp7_es_dump_<serial>.bin for bitstream analysis (#41 HPD5 investigation).

🙏 Credits

  • albrzmr — CPD7 LAN protocol reverse engineering + MJPEG approach (vendored under MIT, with thanks)
  • RenierM26/pyEzvizApi — cloud API foundation
  • All the testers on #33-#43 whose logs drove these fixes.