Skip to main content

Blue Iris NVR

Integrates a Blue Iris video-management server (the Windows PC application) into GEM over its local JSON HTTP API. Each camera becomes a GEM zone you can enable, disable, pause, resume, force-trigger, and — for PTZ models — pan/tilt/zoom or recall presets. System-wide, the driver can switch the active profile (Blue Iris's schedule/arming modes) and the signal / hold state, which makes it a natural target for security macros ("Arm Away → Blue Iris profile 2").

This is a LAN integration: GEM talks directly to the Blue Iris PC, no cloud account required.

Prerequisites

  • Blue Iris 5 with the web server enabled: Options → Web server → Enable. Note the port (default 81).
  • A dedicated web-server user: Options → Users → Add. Give it admin (or at least the permissions for the commands you'll use). The JSON API authenticates as this user.
  • If GEM runs on a different subnet than the Blue Iris PC, allow the web-server port through the Windows Defender Firewall.
tip

Create a GEM-only Blue Iris user rather than reusing your personal login — it keeps the audit trail clean and lets you revoke access without changing your own password.

Setup steps

  1. In GEM, go to Devices → Add Device and choose the Blue Iris NVR driver.
  2. Fill in:
    • Blue Iris PC IP — the LAN IP or hostname of the Windows machine running Blue Iris.
    • Web Server Port — default 81.
    • Username / Password — the web-server user you created.
    • Protocol — leave http unless you enabled SSL on the Blue Iris web server.
  3. Save. The driver performs the two-step login handshake and marks the device connected.
  4. Run the get_cameras command (Script Console, or the device command panel) to list every camera and its short name.
  5. For each camera you want to control, create a zone whose Address is that camera's short name.

Login handshake

Blue Iris uses a nonce-style login rather than HTTP basic auth. The driver handles it automatically; it's documented here for troubleshooting:

If the server later replies {"result":"fail"} to a command (session aged out), the driver re-runs this handshake once and retries the command transparently.

Attribute reference

Device attributes

AttributeRequiredDefaultDescription
ipyesLAN IP / hostname of the Blue Iris PC.
usernameyesBlue Iris web-server user.
passwordyesThat user's password. Stored encrypted.
portno81Blue Iris web-server port.
protocolnohttphttp, or https if SSL is enabled on the web server.
poll_intervalno5000State-refresh interval in milliseconds.

Zone attributes (runtime, set by the driver)

AttributeDescription
stateon when the camera is enabled, off when disabled.
motiontrue while Blue Iris reports active motion.
recordingtrue while the camera is recording.
onlinefalse when Blue Iris reports "no signal" for the camera.

The device also exposes profile (active profile 0–7) and signal (hold state 0–2) as device attributes, refreshed each poll.

Zone address format

The zone Address is the Blue Iris camera short name — the code in Camera settings → General → Short name (e.g. front, gar, drive). It is case-sensitive and contains no spaces. Use get_cameras to read the exact short names; the display name is not accepted.

Commands

CommandArgsEffect
on / offaddressEnable / disable the camera.
pause / resumeaddressTemporarily pause / resume the camera.
triggeraddressForce a motion/alert trigger (recording, alerts, macros).
ptzaddress, buttonSend a raw PTZ button code.
ptz_presetaddress, presetRecall a stored PTZ preset (1–20).
set_profileprofileSwitch the active Blue Iris profile (0–7).
set_signalsignalSet the signal / hold state (0 = red, 1 = green, 2 = yellow).
get_camerasList cameras and their short-name addresses.
get_statusRead current profile, signal and system status.

PTZ button codes

ptz sends the raw Blue Iris button integer. The common directional codes are:

CodeActionCodeAction
0Pan left3Tilt down
1Pan right5Zoom in
2Tilt up6Zoom out

Preset recall uses ptz_preset (which sends 100 + preset under the hood). PTZ support and the exact code set depend on the camera and its Blue Iris PTZ configuration — verify against your hardware.

Known limitations

  • Snapshots and video streams are not exposed through this driver. Blue Iris serves JPEG/MJPEG/H.264 on separate image URLs (/image/<short>, /mjpg/<short>); wire those into a camera widget directly rather than through the JSON API.
  • Alert/clip retrieval (cmd=alertlist, cmd=cliplist) is not implemented — this driver focuses on live control, not media browsing.
  • Profile and signal are system-wide, not per-camera. Setting a profile affects the whole Blue Iris instance.
  • Camera state is polled (default every 5 s), so motion/recording flags lag real events by up to one poll interval. Lower poll_interval for snappier state at the cost of more requests.

Troubleshooting

SymptomCause / check
Login failedUsername/password don't match a Blue Iris web-server user, or the web server is disabled. Re-check Options → Users and Options → Web server.
Commands do nothingThe zone address isn't the exact camera short name (case-sensitive). Run get_cameras and copy the id value.
Connection timeoutWrong port, or the Windows firewall is blocking the web-server port from GEM's host.
PTZ ignoredThe camera isn't PTZ-capable in Blue Iris, or the button code isn't mapped for that model.
Repeated re-logins in the logThe Blue Iris session timeout is very short, or another client is invalidating the session. Increase the session lifetime in Options → Web server.