Skip to content

Releases: steveAbratt/VIGICam

v0.7.4b4 — download diagnostics (beta)

Choose a tag to compare

@steveAbratt steveAbratt released this 01 Sep 15:43
888c793

Beta release — opt in via HACS → VIGICam → ⋮ → Enable Beta Versions.

Includes everything from v0.7.4b1–b3, plus the addition below.

Added

  • Download diagnostics. Settings → Devices & Services → VIGICam → ⋮ → Download diagnostics now produces a report with the camera's model, firmware, detected capabilities and the full raw payload every entity is built from.

    Most problems with this integration turn out to be differences between camera models — night vision fields, recording event types, alarm behaviour — and each one has previously meant asking the reporter to open browser DevTools against their camera and paste JSON by hand. This replaces that with one button.

    Safe to attach to a GitHub issue: credentials, IP, MAC, serial numbers, per-device hashes and the camera's own alias (which is usually a room or place name) are all redacted automatically.

If you are reporting a bug

Please attach a diagnostics download. It answers the first three questions — model, firmware, and what the camera actually reports — without any back and forth.

After installing: reload the integration or restart HA.

v0.7.4b3 — stability fixes from code review (beta)

Choose a tag to compare

@steveAbratt steveAbratt released this 01 Sep 15:27
1d10946

Beta release — opt in via HACS → VIGICam → ⋮ → Enable Beta Versions.

Includes everything from v0.7.4b1 and b2, plus eleven fixes from an external code review.

Fixed

  • Orphaned ffmpeg processes exhausted the camera's RTSP sessions. asyncio.wait_for cancels the wait, not the subprocess, so a timed-out snapshot left ffmpeg running with its RTSP connection open. VIGI cameras allow only a handful of concurrent sessions, so these accumulated until streams and snapshots failed camera-wide — often needing a camera reboot. All three call sites now kill and reap the process. This is the most impactful fix in the release.
  • PTZ was disabled on any PTZ camera with no presets saved — support was inferred from the preset count, so such a camera lost its jog buttons, PTZ services and target-tracking switch. Capability is now probed directly.
  • A malformed OpenAPI reply could break every coordinator listener — the person and vehicle detection switches raised KeyError on an error reply that lacked the expected key.
  • ONVIF events stayed dead if the camera was offline when Home Assistant started — the poll loop only started if the first subscribe succeeded, so a rebooting camera needed a manual reload. It now always starts and re-subscribes with a backoff.
  • Selecting a PTZ preset that no longer exists raised StopIteration; now logged and ignored.
  • Rapid PTZ jog presses cut each other short — the first press's auto-stop fired during the second move.
  • Service entity pickers were empty when the camera-stream feature was off — the selectors filtered to the camera domain unnecessarily.
  • The spotlight toggle bounced back to off before settling.
  • PTZ presets added or renamed on the camera never reached HA — they now refresh about every 5 minutes.

Changed

  • Local file paths passed to the audio services are checked against Home Assistant's allowlist before being read.
  • The uptime sensor gains device_class: duration.

Worth testing

  • PTZ jog buttons and services on a camera with no presets saved
  • Starting HA with a camera offline, then bringing it up — ONVIF events should connect on their own
  • Leaving it running a while and confirming streams stay healthy (the ffmpeg fix)

After installing: reload the integration or restart HA.

v0.7.4b2 — night vision fix for C340 / C350 / C340i (beta)

Choose a tag to compare

@steveAbratt steveAbratt released this 01 Sep 09:48
adb1f9b

Beta release — opt in via HACS → VIGICam → ⋮ → Enable Beta Versions.

Includes everything from v0.7.4b1 (multi-camera service calls, upload_audio conversion fixes) plus the night vision fix below.

Fixed

  • Night Vision Mode failed to set on C340 / C350 / C340i cameras. Newer firmware splits the setting in two: pre_night_vision_mode holds the writable preference, while night_vision_mode became a read-only status of which emitter is lit. VIGICam wrote and read the status field, so the camera rejected every change and the dropdown showed the wrong mode.

    The status field could not have worked as a readback — auto_ir, ir_always_on, off and custom all report inf_night_vision, so four different selections were indistinguishable.

    The dropdown now offers the camera's own seven GUI modes, reduced to the four IR-side modes on models with no white LED (e.g. C340i). Cameras without pre_night_vision_mode keep the previous behaviour unchanged. (#78)

  • The Spotlight light entity was broken the same way on those cameras — turning it on or off wrote the read-only status field and was rejected. It now writes pre_night_vision_mode on firmware that expects it.

Mode table contributed by @bcdaus across three cameras — thank you.

What would help to test

  • Every mode in the Night Vision dropdown actually applies and sticks
  • The dropdown shows the mode you picked, not a different one
  • The Spotlight entity turns on and off
  • On a C340i: only the four IR-side modes appear

After installing: reload the integration or restart HA.

v0.7.4b1 — multi-camera service calls + audio fixes (beta)

Choose a tag to compare

@steveAbratt steveAbratt released this 28 Aug 16:19
dd51dbf

Beta release — opt in via HACS → VIGICam → ⋮ → Enable Beta Versions.

This one touches every vigicam.* service, so it is going out as a beta first.

Changed

  • Services accept multiple camerasentity_id on every vigicam.* service now takes either a single entity or a list, so one call can address several cameras at once. For speak, play_file and upload_audio the audio is fetched or generated once and reused for every camera. A camera that fails is logged and skipped rather than aborting the whole call.

Fixed

  • upload_audio rejected Home Assistant media URLs and unconverted files — it now resolves /media/local/ and /local/ URLs to file paths and transcodes through ffmpeg to the 8 kHz mono WAV the camera requires, matching what play_file already did. Previously it uploaded raw bytes untouched, so anything not already a conforming WAV failed on the camera.
  • Audio longer than 15 seconds failed instead of being trimmed — clips are now cut to the camera's 15 s / 256 KB limit with a warning, rather than erroring and playing nothing.

What would be useful to test

  • A service call with a single camera, and the same call with two
  • upload_audio / play_file with a /media/local/ URL, and with an mp3
  • A clip longer than 15 s, to confirm it trims rather than errors

After installing: reload the integration or restart HA.

v0.7.3 — RTSP streams with special characters in credentials

Choose a tag to compare

@steveAbratt steveAbratt released this 28 Aug 16:17
1691252

Fixed

  • RTSP streams failed when credentials contained special characters — usernames and passwords are now percent-encoded before being placed in the RTSP URL. Previously a password containing @, :, #, %, / or ? made Home Assistant parse the URL wrongly, giving invalid port or 404 Not Found when starting the stream. (#80, #81)

Thanks to @tlazarski for both reporting and fixing this one.

After installing: reload the integration or restart HA.

v0.7.2 — Fix driveway camera RTSP connection storm

Choose a tag to compare

@steveAbratt steveAbratt released this 06 Jul 11:21
2281f4e

Fixed

  • RTSP connection storm on snapshot requestsasync_camera_image() opened a brand-new ffmpeg/RTSP connection to the camera's substream on every single snapshot request (dashboard thumbnails, notification snapshots), with no caching or lock against overlapping calls. On cameras that only tolerate a handful of concurrent RTSP sessions, this could pile up alongside the live view and push the camera past its connection limit, causing it to reject connections (429 Too Many Requests) and the live view — including the camera's own local web UI — to become unusable. Snapshot requests are now cached for 10 seconds and serialized behind a lock, so overlapping requests share one ffmpeg call instead of each opening a new connection.

After installing: reload the integration or restart HA.

v0.7.1 — stream quality option

Choose a tag to compare

@steveAbratt steveAbratt released this 19 Jun 08:22
98c3f6d

Added

  • Stream quality option — new toggle in Configure: Use main stream (HD, stream1). Off by default, which uses the sub-stream (stream2) for fast startup and smooth playback on Raspberry Pi and other low-powered hardware. Enable it for full HD resolution on more capable hosts.
  • Dashboard camera cards can now be set to Live view (edit the card → Camera View → Live) to show a continuous stream instead of a static snapshot.

Changed

  • Default live stream is now stream2 (sub-stream). Users who relied on stream1 previously can re-enable it via Settings → Devices & Services → VIGI & InSight Cameras → Configure → Use main stream (HD, stream1).

After installing: reload the integration or restart HA.

v0.7.0 — Target Tracking switch

Choose a tag to compare

@steveAbratt steveAbratt released this 18 Jun 20:31
ad32a07

Added

  • Target Tracking switch (PTZ cameras only) — enables/disables the camera's auto-tracking feature, which pans and tilts to follow a detected subject.

After installing: reload the integration or restart HA.

v0.6.2 — Hassfest compliance

Choose a tag to compare

@steveAbratt steveAbratt released this 18 Jun 19:39
7181293

Fixed

  • Removed deprecated `homeassistant` key from `manifest.json` (rejected by hassfest)
  • Sorted `manifest.json` keys to required order

Added

  • Hassfest validation workflow for HA integration compliance checks

After installing: reload the integration or restart HA.

v0.6.1 — Internal cleanup

Choose a tag to compare

@steveAbratt steveAbratt released this 18 Jun 19:28
3f6390d

Changed

  • smart_frame.py renamed to event_image.py; all internal names updated — no entity changes
  • Configure dialog capability summary now shows "Event Image Capture" instead of "Smart Frame"
  • Orphaned logo.png removed from repo root; hacs.json filename field removed (icon is in custom_components/vigicam/brand/icon.png)

After installing: reload the integration or restart HA.