Image downloader and SecuritySpy helper  

Developer: VTMikel's Plugins     Like this plugin? Show your appreciation!
Category: Security & Locks
Github: Github Repo
Assistance: Get help!    Check the online documentation
Plugin ID: com.vtmikel.securityspyimage
Latest release: v2026.7.0 released on July 25, 2026
Release downloaded: 19 times
Requires: Indigo v2024.2.0 or higher
(Check the Releases tab below for older releases that may have different requirements)
  Download release v2026.7.0

SecuritySpy Image Downloader (Indigo Plugin)

An Indigo plugin that downloads still images from SecuritySpy cameras (or any URL) so your automations can use them — most commonly to attach camera snapshots to notifications (e.g. Pushover) when a trigger fires.

Features

  • Single image download from a SecuritySpy camera or any custom URL (with optional basic/digest authentication)
  • Multi-camera stitching — combine up to 10 cameras into one image, arranged as a vertical stack, a horizontal row, or a 2-column grid
  • Animated GIFs — capture 2–10 seconds of frames from a camera and save them as an animated GIF
  • Resizing — bound images to a maximum width; for SecuritySpy cameras the resize happens on the SecuritySpy server itself (faster, less bandwidth), for custom URLs it happens locally
  • Automatic camera discovery from both major SecuritySpy Indigo plugins, with a manual camera-number fallback

Requirements

  • Indigo 2023.2 or later
  • A SecuritySpy server with its web server enabled (only needed for SecuritySpy sources — custom-URL downloads work without any SecuritySpy configuration)
  • Python dependencies (requests, Pillow) are installed automatically by Indigo from the plugin's bundled requirements when the plugin first starts — no manual pip step

Installation

  1. Download the latest release and double-click the .indigoPlugin bundle; Indigo installs and enables it.
  2. Open the plugin's config dialog (Plugins → Image Downloader and SecuritySpy Helper → Configure...).

Plugin Configuration

Setting Notes
SecuritySpy IP / Port The SecuritySpy web server address (default port 8000, or as configured in SecuritySpy). Leave both blank if you only download from custom URLs.
Use SSL Enable if SecuritySpy's web server uses HTTPS.
Verify SSL certificates Off by default — self-signed certificates are typical for SecuritySpy. Enable only with a trusted certificate. Also applies to custom-URL downloads.
Login / Password SecuritySpy web server credentials, if required.
Debug Verbose logging; takes effect immediately, including at plugin startup.

Camera Discovery

Camera dropdowns are populated automatically from either (or both) of:

  • Cynical SecuritySpy (org.cynic.indigo.securityspy)
  • SecuritySpy / Spy Connect by FlyingDiver (com.flyingdiver.indigoplugin.securityspy)

If neither plugin is installed, the dropdown falls back to manual camera numbers (0–15). Find a camera's number in the SecuritySpy web interface — it's the cameraNum value in the URL when viewing that camera.

Actions

Download URL/SecuritySpy Image

Downloads a single image to a file.

  • Source: a SecuritySpy camera, or a custom URL (supports %%v:variableId%% variable substitution and basic/digest auth)
  • Destination: a full file path, entered directly or read from an Indigo variable
  • Max Width: optional resize; SecuritySpy sources are resized by the server (aspect ratio preserved), custom URLs are resized locally
  • Animated GIF: instead of a single image, capture frames (one every 2 seconds) for 2–10 seconds and save a .gif (the extension is corrected automatically); frames can optionally play in reverse
  • Hide from Indigo log: suppress the success log line

The image file is guaranteed to exist on disk when the action completes, so a following action (e.g. a notification with attachment) can use it immediately.

Download and Stitch Multiple SecuritySpy Images

Downloads 2–10 SecuritySpy camera images and combines them into a single file.

  • Layout: vertical stack (default), horizontal row, or 2-column grid — cameras are placed in selection order
  • Max Width: applied per camera image (server-side), keeping mixed-resolution cameras consistent
  • Cameras that fail to download are skipped with a warning; the stitch proceeds with the rest

Example: camera snapshot in a Pushover notification

  1. Create an Indigo variable per camera holding a snapshot path, e.g. front_door_snapshot = /Users/you/Documents/CameraImages/front_door.jpg
  2. Create a "Download URL/SecuritySpy Image" action for the camera, using the variable (%%v:VARIABLEID%% or the variable picker) as the destination
  3. Create your Pushover (or similar) notification action with the same path as the attachment
  4. Tie them together in a trigger: motion detected while away → download snapshot → send notification

Troubleshooting

  • Enable Debug in the plugin config for verbose logging.
  • The plugin's own log lives at /Library/Application Support/Perceptive Automation/Indigo <version>/Logs/com.vtmikel.securityspyimage/plugin.log.
  • A "SecuritySpy connection not configured" error means a SecuritySpy-camera action ran without the IP/port set — custom-URL actions never need that.
  • If a stitch produces fewer cameras than expected, check the log for per-camera "Skipping camera" warnings.

Development

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m pytest      # 130+ tests, no network required
black .               # formatting

Bug reports and PRs: https://github.com/mlamoure/indigo-securityspy-image-downloader

Release details
Released on: July 25, 2026
Requires: Indigo v2024.2.0+
Downloaded: 19 times 
Changes in this release

SecuritySpy Image Downloader v2026.7.0

A major modernization and feature release.

New Features

  • Stitch layouts — the multi-camera stitch action can now arrange images as a vertical stack (default), a horizontal row, or a 2-column grid. Grid cells are uniform, so mixed-resolution cameras stay aligned.
  • Server-side resizing — when a max width is set for a SecuritySpy camera, the image is scaled by SecuritySpy itself (++image width parameter, aspect ratio preserved) instead of downloading the full-size image and resizing locally. Faster, less bandwidth.
  • Custom URLs no longer require SecuritySpy — download actions using a custom URL now work with the SecuritySpy IP/port left completely blank.
  • New "Verify SSL certificates" setting — off by default (self-signed certificates are typical for SecuritySpy); enable it if your server uses a trusted certificate. Applies to custom URL downloads too.
  • Connection validation — the plugin config dialog now validates the IP/port and probes connectivity (a warning only; an offline server never blocks saving).

Fixes

  • Debug logging now takes effect immediately at plugin startup (previously it was silent until the config dialog was opened and closed once).
  • The animated GIF duration menu had an invalid default; it now defaults to 4 seconds.
  • Multi-camera stitching no longer fails silently when the destination directory is missing, and skipped cameras are logged as warnings.
  • Temporary files use unique names, so concurrent actions targeting the same folder can no longer overwrite each other.
  • Passwords embedded in custom URLs are no longer written to the Indigo log.
  • Consistent high-quality (LANCZOS) resampling for all local resizing.

Internals

  • Restructured into a thin Indigo adapter over an Indigo-free securityspy_image package with typed exceptions and an injectable HTTP layer.
  • Dependencies updated: requests 2.34, Pillow 12.3 (installed automatically by Indigo 2023.2+ from the bundled requirements).
  • Test suite rewritten: 132 pytest tests, no network required.
  • README fully rewritten with installation, configuration, and action reference documentation.

Requires Indigo 2023.2 or later.

Release details
Released on: May 3, 2025
Requires: Indigo v2024.2.0+
Downloaded: 37 times 
Changes in this release

System Requirement • Indigo 2024.2 or later is now mandatory.

What’s New • Reverse‑GIF Mode – one‑click option to play animated GIFs backward.

Improvements • Complete codebase refactor for cleaner architecture and easier future enhancements. • Stronger error handling with clearer log messages and automatic recovery wherever possible. • Upgraded image library (latest Pillow) delivers faster decoding, broader format support, and fewer memory spikes.

Fixes & Tweaks • Miscellaneous UI polish and documentation updates.

Release details
Released on: April 24, 2024
Requires: Indigo v2022.1.0+
Downloaded: 42 times 
Changes in this release

Refactoring Moved SS auth to basic mode, removed l/p from the URL string Added support for auth for URL downloads Added animated gif and resizing support for URL downloads

Release details
Released on: Jan. 12, 2024
Requires: Indigo v2022.1.0+
Downloaded: 38 times 
Changes in this release

Fixed an issue with the stich resizing Added digest Auth (thanks peszko)

Release details
Released on: June 27, 2022
Requires: Indigo v2022.1.0+
Downloaded: 40 times 
Changes in this release

Fix for actions not utilizing variables

Release details
Released on: June 25, 2022
Requires: Indigo v2022.1.0+
Downloaded: 41 times 
Changes in this release

Python 3 Bug Fixes

Release details
Released on: May 1, 2022
Requires: Indigo v2022.1.0+
Downloaded: 47 times 
Changes in this release

Ready for Indigo 2022.01

Release details
Released on: April 1, 2020
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 45 times 
Changes in this release

Fix for previous log suppression option.

Release details
Released on: March 28, 2020
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 45 times 
Changes in this release

Added ability to hide execution from logs

Release details
Released on: Nov. 30, 2019
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 42 times 
Changes in this release

Bug fixes Added to the number of cameras for stitching Improved output Improved performance for GIF creation Changed the GIF fps / seconds options available

Release details
Released on: Nov. 28, 2019
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 37 times 
Changes in this release

Overall code improvements Improvements to output logs

Release details
Released on: April 14, 2019
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 43 times 
Changes in this release

support for creation of animated gifs logging improvements

Release details
Released on: Oct. 9, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 33 times 
Changes in this release

Fixed bugs for URL downloading

Release details
Released on: June 7, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 41 times 
Changes in this release

Updated the plugin update method Supports max width

Release details
Released on: May 31, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 43 times 
Changes in this release

Fixed a bug where you could not remove a camera from a stitch action Added selection lists for variables Removes password from the indigo log

Release details
Released on: May 17, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 41 times 
Changes in this release

Improvement to the cleanup of temporary files during stitching Automatically loads camera numbers and names if using Cynical SecuritySpy plugin

Release details
Released on: May 11, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 36 times 
Changes in this release

updates to image stitching to handle when a camera is not available.

Release details
Released on: May 5, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 37 times 
Changes in this release

Fixes and improvements to downloads from external URLs

Release details
Released on: April 3, 2018
Requires: Indigo v7.0.2 thru v2022.2
Downloaded: 38 times 
Changes in this release

First release to the Indigo Plugin store.