Releases: steveAbratt/VIGICam
Release list
v0.7.4b4 — download diagnostics (beta)
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)
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_forcancels 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
KeyErroron 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
cameradomain 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)
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_modeholds the writable preference, whilenight_vision_modebecame 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,offandcustomall reportinf_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_modekeep 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_modeon 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)
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 cameras —
entity_idon everyvigicam.*service now takes either a single entity or a list, so one call can address several cameras at once. Forspeak,play_fileandupload_audiothe 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_audiorejected 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 whatplay_filealready 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_filewith 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
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, givinginvalid portor404 Not Foundwhen 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
Fixed
- RTSP connection storm on snapshot requests —
async_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
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
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
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
Changed
smart_frame.pyrenamed toevent_image.py; all internal names updated — no entity changes- Configure dialog capability summary now shows "Event Image Capture" instead of "Smart Frame"
- Orphaned
logo.pngremoved from repo root;hacs.jsonfilenamefield removed (icon is incustom_components/vigicam/brand/icon.png)
After installing: reload the integration or restart HA.