Blue Iris smart home integration, free and open source

Blue Iris video security, locally: camera images, motion, AI alerts, profiles, PTZ.
Overview
This integration connects Gladys to Blue Iris, the video security software for Windows, through its local JSON interface (the one its own web interface uses). Nothing goes through a cloud.
- one device per camera: its image, whether it is online, sees motion or is triggered, and the person and vehicle confirmed by the AI of Blue Iris when you use one;
- a Blue Iris server device: active profile, arming signal (green, yellow, red), CPU load and clip storage;
- commands: change the profile, arm, trigger a camera, move a PTZ camera or send it to a preset. Disarming is off by default, as for an alarm;
- a scene trigger "Alert on a Blue Iris camera", with what was seen, and a dashboard widget.
Developed without the hardware: feedback welcome. This integration was written from the documentation of the JSON interface of Blue Iris and from other integrations, without a Blue Iris server at hand. Tell what works and what does not in the issues.
This integration is not affiliated with Perspective Software, the publisher of Blue Iris.
Requirements
- Blue Iris 5 or later, with its web server on (Settings → Web server), reachable from Gladys (port 81 by default).
- A dedicated Blue Iris user for Gladys (Settings → Users), with a password:
- a plain user (not administrator) is enough to read the cameras, the profile and the alerts;
- allow it to change profiles to arm and change the profile from Gladys;
- allow it PTZ to move the cameras;
- triggering a camera needs an administrator in Blue Iris.
- If the web server limits access ("Non-LAN only", auto-ban), the address of Gladys is on the LAN: nothing to change. Blue Iris can ban an address after a few wrong passwords; the integration stops at the first refusal.
Configuration
In Gladys, Integrations → Blue Iris → Configuration:
| Setting | Role |
|---|---|
| Server address | IP address or name of the Windows PC running Blue Iris, e.g. 192.168.1.20. |
| Web server port | 81 unless you changed it in Blue Iris. A port written in the address wins. |
| HTTPS | Only if the web server of Blue Iris serves HTTPS on this port. Its certificate is not checked. |
| User name / Password | The dedicated Blue Iris user. The password is sent to Blue Iris only. |
| Refresh | How often Blue Iris is read (5 s to 1 min, 10 s by default): motion, triggers and alerts are seen at this pace. |
| Camera images | How often the image of each camera added to Gladys is refreshed (or "Only on alerts"). An alert always sends a fresh one. |
| Hold the chosen profile | On (default): a profile chosen from Gladys stays, the schedule of Blue Iris no longer switches it. Off: until its next change. |
| Allow disarming from Gladys | Off by default. See below. |
| Other disarmed profiles | Profiles in which your cameras do not watch (e.g. Home), by name or number, separated by commas. |
| Language of the names | Language of the feature names and of the texts sent to scenes. Names are set when a device is added. |
Then Test the connection: the report gives the server, the number of cameras, the active profile and the rights of the user. Open the Discover tab and add the server and the cameras you want.
Arming and disarming. Arming (green signal, any profile that watches) is always allowed. Disarming — the red signal, profile 0 "Inactive" (in which Blue Iris cameras do not trigger), or a profile listed in Other disarmed profiles — is refused until you turn on Allow disarming from Gladys: a disarming sent by mistake leaves the cameras blind. Disarming is never a switch: neither a voice assistant nor a dashboard toggle can do it by accident.
Devices
Blue Iris server
| Feature | Meaning |
|---|---|
| Online | Blue Iris answers. |
| Profile | The active profile (0 to 7, with the names of Blue Iris). A command: choose another one. |
| Arming signal | Armed (green), Arming (yellow) or Disarmed (red). A command: green arms, red disarms if allowed. |
| CPU load | CPU load of the server, in %. |
| Storage used | How full the clip storage of Blue Iris is, in %. |
| Free space | Free space of the clip disks, in GB. |
Profile and signal are read-only for a user who may not change profiles.
Cameras
One device per camera of Blue Iris (groups and the "all cameras" view are left out), named as in Blue Iris:
| Feature | Meaning |
|---|---|
| Image | The camera image, on the dashboard camera box. |
| Online | The camera is enabled and receives video. |
| Motion | Blue Iris sees motion. |
| Triggered | The camera is triggered (recording, alerts per its settings). |
| Person | An alert confirmed a person (AI). Appears once Blue Iris reported one. |
| Vehicle | An alert confirmed a vehicle (AI). Appears once Blue Iris reported one. |
| Pan, tilt, zoom | PTZ cameras: the arrows and the zoom of the dashboard camera box. A move stops by itself after 2 seconds. |
| Preset position | PTZ cameras with presets: go to a preset position saved in Blue Iris. |
Person and Vehicle stay on 30 seconds after the alert at least, then until the camera is no
longer triggered. They appear in the Discover tab ("Update") the first time the AI of Blue Iris
reports one; the alerts of the last 24 hours are read at start for this. The labels of the AI
(CodeProject.AI, DeepStack…) are read from the alert memo: person, car, truck, bus,
motorcycle, bicycle…
Dashboard widget
The Blue Iris widget shows, for every camera or the one chosen in its settings:
- the active profile, Armed / Arming / Disarmed, the cameras online and the alerts over 24 hours;
- the last alerts with what was seen and the image taken at that moment;
- an Arm button while not armed; Disarm only once allowed in the configuration, with a confirmation; Trigger for the chosen camera.
Scene trigger
Alert on a Blue Iris camera: Blue Iris raised an alert on a camera. Filters: the camera, and
What was seen: Person, Vehicle, Animal, Motion, Sound, External trigger, Other alert (the most
telling first: an alert with a person and motion is "Person"). The camera image is fresh when the
scene starts. Variables: Camera name, What was seen, AI labels (the memo of Blue Iris,
e.g. person:87%).
Only the alerts Blue Iris keeps (not the ones its AI cancelled) start a scene, one scene event per alert. If the user may not read the alerts, an alert is still seen (as "Other alert") from the time of the last alert of the camera.
Scene actions
- Change the Blue Iris profile: by name (
Away) or number (1). A disarmed profile only if allowed. - Arm or disarm Blue Iris: green arms; red disarms only if allowed.
- Trigger a Blue Iris camera: as its "Trigger now" button (administrator in Blue Iris).
- Refresh a camera image: takes a fresh image for Gladys, to send it in a message right after.
Scene examples
- Leaving home: when the house alarm is armed → Change the Blue Iris profile to
Away. - Someone at the door at night: Alert on a Blue Iris camera, camera "Front door", What was seen = Person, between 22:00 and 6:00 → turn on the porch light, then send the camera image in a Telegram message.
- Watch the gate: a door opening sensor opens → Trigger a Blue Iris camera "Gate", then move the PTZ camera to its preset "Gate".
Refresh and load
Blue Iris is a local server without quota: the integration reads status and camlist at the
Refresh interval (two small requests), and the alert list only for a camera with a new alert.
Two requests at most are in flight. Images are asked scaled by Blue Iris (1280 px, then smaller if the
image is over the 150 KB Gladys accepts): nothing is decoded in the container. An unchanged value is
sent again every 6 hours, so the dashboard never says "no recent value".
Troubleshooting
- "Blue Iris does not answer": check the address, the port, that the web server of Blue Iris is on and that the firewall of Windows lets Gladys in.
- "Password refused: stopped so Blue Iris does not ban Gladys": fix the user name or the password, then Test the connection (one more try). Check in Blue Iris that the address of Gladys is not banned.
- "No Blue Iris JSON interface at this address": wrong port, or another web server answers.
- "This Blue Iris user is not allowed to do this": give the right in Blue Iris (change profiles, PTZ, administrator to trigger).
- Disarming refused: on purpose, see "Arming and disarming".
- No Person / Vehicle feature: the AI of Blue Iris has not reported one yet; it appears in Discover ("Update") at the first one.
- For details, set
LOG_LEVEL=debugon the integration: every alert and read is then logged.
Limits
- One Blue Iris server per integration.
- No live video stream (Gladys shows images), no clip playback, no DIO outputs, no schedule change.
- Motion and alerts are seen at the refresh pace (10 s by default), not instantly: Blue Iris pushes its events by MQTT or web calls, which the sandbox of Gladys cannot receive here.
- Yellow is a transition of Blue Iris (arming delay): it is shown, never sent.
- Feature names are set when a device is added; groups of cameras are not devices.
- Developed without the hardware: feedback welcome.
Configuration settings
These are the settings Blue Iris asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Your Blue Iris server | section | No | Blue Iris must have its web server on (Settings → Web server). Create a dedicated Blue Iris user for Gladys: a plain user is enough to read; allow it to change profiles to arm from Gladys. Nothing goes through a cloud. |
| Server address | string | Yes | IP address or name of the Windows PC running Blue Iris. |
| Web server port | number | No | 81 unless you changed it in Blue Iris. |
| HTTPS | boolean | No | Only if the web server of Blue Iris serves HTTPS on this port. Its certificate is not checked. |
| User name | string | Yes | |
| Password | secret | Yes | Sent to Blue Iris only. Blue Iris can ban an address after wrong passwords: the integration stops at the first refusal. |
| Refresh | select | No | How often Blue Iris is read: motion, triggers and alerts are seen at this pace. |
| Camera images | select | No | How often the image of each camera added to Gladys is refreshed. An alert always sends a fresh one. |
| Arming and disarming | section | No | Arming (green signal, any active profile) is always allowed. Disarming (red signal, profile 0 "Inactive" or the profiles listed below) is off by default, as for an alarm. |
| Hold the chosen profile | boolean | No | A profile chosen from Gladys stays until changed again, the schedule of Blue Iris no longer switches it. Off: until the next change of the schedule. |
| Allow disarming from Gladys | boolean | No | Off by default: a disarming sent by mistake (a scene, a tap) leaves the cameras blind. |
| Other disarmed profiles | string | No | Profiles in which your cameras do not watch (e.g. Home), by name or number, separated by commas. Profile 0 always counts. |
| Language of the names | select | No | Language of the feature names and of the texts sent to scenes. Names are set when a device is added. |
How to install Blue Iris in Gladys
- In Gladys, open Integrations: Blue Iris appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-blue-iris:1.0.1), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-blue-iris.
Blue Iris requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Blue Iris is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation