I have put together the Indigo Plugin for BlueIris Windows based Camera Server Software. (if you are in the market for Camera surveillance software, you cannot go past BlueIris for features, price and capability)
This Indigo plugin creates a BlueIris Server Device and BlueIris Cameras within Indigo. These devices are created from within the Plugin Config window with bottom presses. It can also create an optional BlueIris User device (needs to be manually created) to monitor user login/interactions. With these devices you can monitor the current condition of Server (CPU/Mem etc) and also trigger Cameras to record. There are multiple actions that Indigo can perform on each or multiple cameras - IR on/IR off, Ptz cycle on, enable/disable camera/motion, change motion settings, change audio trigger on/off etc.
From within BI (BlueIris) we also setup communication back to Indigo - this enables immediate Indigo awareness of any camera based motion events. So Indigo based events can be triggered on one or multiple cameras - eg. if motion turn lights on etc. There is a small amount of setup required within BI for each Camera to enable this.
The Plugin and uptodate version can be downloaded here:
http://www.indigodomo.com/pluginstore/149/
If interested in each release, as can be pointers about various updated features in readmes can review all releases easily on github.
https://github.com/Ghawken/IndigoPlugin-BlueIris/releases
Code base is here:
https://github.com/Ghawken/IndigoPlugin-BlueIris/tree/cliplist
Indigo 7+ Only
Part 1: Installation and First time Setup
Download from PluginStore, Enable.
For Neatness I suggest creating a BlueIris Directory with the Devices - which the plugin will use.
Go to Plugin Config
Enter:
BlueIris Server: IP address of your BlueIris server
Port Used for BlueIris Webserver:
Username
Password
I would recommend that that BlueIris user created for Indigo (ideally create its own user) should have Administrator rights. You can limits this user to local-LAN only access which should further reassure.
The plugin tries to deal with non-admin users but will mean some device states will not populate and some actions, and indeed all Camera Config Actions are unavailable.
Local Port for Plugin Server
The Plugin runs its own simple http server, bypassing any communication issues.
This allows it to receive alerts from BlueIris Server, via below setup.
It also spawns a new python thread everytime a alert is received, enabling the plugin to manage multiple at same time alerts with no delay, or collusion.
You need to put port number of server in PluginConfig:
Default port 4556
Once these details are correctly entered: The Main Device and then Camera Devices need to be generated.
Click Login/Generate Server Device, here:
(This will generate a main BI server device in either BlueIris directory or main Device folder)
if all goes well -- Generate Cameras button should appear
Click this - to generate all your camera devices, if you later add cameras can click again to generate missing cameras.
(If disabled or cameras not interested in - can be deleted from Indigo via the device/delete option within Indigo)
Main BI Server Device
Generates this device with status options
Allows CPU,Mem Monitoring etc and triggering if CPU gets out of hand, or indeed on any state.
BlueIris Server Camera End Setup
IMPORTANT: This setup ideally needs to be also completed.
It involves setting settings on each Camera from with BlueIris server.
It only needs to be done once, and the correct http://address can be copied/pasted into each camera.
Essentially this allows BI to tell the plugin when an Alert/or typically Motion trigger has occured.
It should happen immediately
To enable triggers from with the plugin - add
- Code: Select all
http://192.168.1.6:4556/&CAM/&TYPE/&PROFILE/True
or
- Code: Select all
http://192.168.1.6:4556/&CAM/&TYPE/&PROFILE/False
eg. IndigoIP = 192.168.1.6, Port selected in PluginConfig: 4556
- Code: Select all
When Triggered
http://192.168.1.6:4556/&CAM/&TYPE/&PROFILE/True
POST text: Indigo
- Code: Select all
Request again when trigger is reset
http://192.168.1.6:4556/&CAM/&TYPE/&PROFILE/False
POST text: Indigo
to each camera in BlueIris; Camera: Alerts, request from web service: When triggered.
&
BI ScreenShots:
eg. Version 4
eg. BlueIris Server Version 5 - ScreenShots
For BI v5 select + button and select Web Request or MQTT, and complete as below illustrates.
Trigger On:
On Trigger Reset:
This Allows immediate Motion On& Off, and adds
Allows these Camera Device States:
lastMotionTriggerType possible results
- TEST [from the Test button]
- MOTION
- AUDIO
- EXTERNAL
- WATCHDOG
timelastMotion = time of last Motion Detection
This will trigger and update camera in Indigo everytime triggered or motion sensor changes - this happens immediately.
User Login Triggering
Finally setup from with BlueIris Server (v5) Alerts when a user interested in Logins.
From Within Blue Iris Server, Main Settings, Users, Choose particular User
Actions: On Login:
Web request or MQTT
Similar to Camera Alerts - just with username at end eg.
- Code: Select all
http://IndigoIP:4556/&CAM/&TYPE/&PROFILE/glenn
Post/payload: Indigo
And thats it, all setup and now time to play from within Indigo itself and see what the plugin can Offer.
Part 2: Usage and Tips
Actions:
There are multiple actions that can be performed on each/some/or the Server or Cameras
Recent Actions Added
Add Enable/Disable Generate Animated Gifs as Action Group per Camera/s
[this enables you to change the camera settings with an action as required - e.g arrived home; stop making them]
Add Status PluginTriggeringEnabled to each Camera.
[this enabled you as an action to disable any Plugin Based triggering [this doesn't affect BI Server]
eg. arrived home - Disable this setting and no Plugin Triggers for this camera will occur]
PluginTriggeringEnabled for all Cameras reset at Plugin startup to Enabled.
Triggers
The Plugin can creates a Trigger which is run when the selected one or the selected single Camera(s) detects motion.
You can select multiple cameras:
The triggering of these alerts is dependant in the settings that are created within BlueIris as above - including the retrigger timeout - will not retrigger until this time has passed.
Camera Device Options
The Camera Devices have a few user configurable options:
- Save Image if Camera Triggered
- Width in Pixels of image (up to maximum of the camera) Proportions are left unchanged
If this option is select the plugin will download an image from this camera locally everytime it is triggered.
It is stored in path
`/User/Documents/Indigo-BlueIris/`
This image can be used in Control Pages (showing last motion triggering) or used to send via iMsg/PushOver etc with these plugins.
Animated GIFs
The Plugin can also generate an Animated Gif for each Camera. This can be done automatically if triggered from within the Camera Device settings, or it can be performed as an Action on selected Cameras
The animated Gif once triggered is then generated - eg. if length is 10 seconds 15 images/10 seconds are taken, and then packaged and created, so if being used in a action group will need to add appropriate delay
for it all to be created.
The way I have done this is to use two external calls - one to built-in Sips app to convert jpg to Gif. The next is to package gifiscle within the plugin and this is called to create the Anims. Separate threads are created so there is no main-thread time impact for this.
There are no additional libraries required (I hope....)
Options
From within the Camera Device there are options
Most of these should be self-explantory, there is a some few seconds of system impact when creating animated Gifs, particularly if doing so for multiple cameras at the same time. (often when one triggered a few are)
Would suggest use this setting with care, and alternative is to generate animated gif via the Action.
These can then be sent via imsg very easily with the following Applescript action group.
- Code: Select all
delay 5
tell application "Messages"
set myid to get id of first service
set theBuddy to buddy "toemailaddress" of service "E:fromemailaddress note the E:"
send POSIX file "/Users/Username/Documents/Indigo-BlueIris/CameraNameShort/Animated.gif" to theBuddy
end tell
Would suggest this is best in a external script given the time to run aspects. Delay above depends on how long images are captured for.
Or can use the excellent iMessages Plugin to send Gifs to whomever you need to (particularly important as Apple Script soon to be depreciated)
More detailed Description of some Device States
Add Status PluginTriggeringEnabled to each Camera, and action group to enable/disable plugin Triggering
[this enables you as an action to disable any Plugin Based triggering [this doesn't affect the BI Server]
eg. arrived home - Disable this setting and no Plugin Triggers for this camera will occur]
PluginTriggeringEnabled for all Cameras reset at Plugin startup to Enabled.
Server Device States:
SystemName - Name of System
Admin - Whether current user is admin or not
Audio - Audio enabled
Clips
User - Reported Username from BI
Latitude
Longitude
Version - BI Version Number
diskfree, diskallocated, disktotal, diskused
(First disk only which should be main storage)
Are numbers so can run triggers when less than/greater than etc from within Indigo
diskname
Path to current main storage
clipsInfo state
eg. Something like this: As a string of current storage/drive/info
Clips: 30870 files, 0.97T/1.00T; \FILESERVER2012 +250.5G, C: +153.4G
Camera Device States
Camera Motion Detector On/Off True/False
Camera Paused -1,0 as per BI
Camera PtzCycle active True/False
Other BlueIris Plugin Devices
(Optional) BlueIris User
Variables
Plugin Creates Variable:
lastAnimGif which is automatically updated to the path of the last AnimGif created (can be used to send iMsg via Applescript without knowing what camera was triggered)
More Detailed Summary of Action Events
Action Group - Create Cliplist Html for Cameras
Select the Cameras (I do all) and then select the number of hours to go back and display the clips. (in hours)
This will go back the selected hours and for the selected cameras generate a cliplist of recent alerts/videos. The plugin then creates html file/s (stored in IndigoWebServer/static which can be used to display these clips).
Clicking on the clip then opens the video/playback/audio etc.
From within Indigo Touch - in a Control Page use go to external URL and use this URL to navigate here.
This will on my ipad open Safari and display nicely - can play videos by clicking, or just browse the thumbnails, and then click back top left arrow to go back to Touch.
(There is a Cross-Origin Domain issue with Chrome where the images won't show - so for the moment Safari it needs to be.)
- Code: Select all
eg.
Location:
IndigoIP:IndigoPort/static/CameraName-cliplist.html
eg
192.168.1.6:8176/static/FrontLow-cliplist.html
Add Action Group to Change BlueIris Macro Settings
These are the %1-%100 macros within BlueIris that you can overlay on any camera.
They go from 1-100, even though BI only shows first 10 in settings page.
This action setting allows the Plugin to change this Macro from within Indigo to anything..
eg.
Temp Overlays, Location overlays, multiple possibilities
Blue Iris Server: Camera Overlay Setup/Details.
This is Macro 1 - enter %1, as you'll see here below Macro one is currently defined as Pool Temp 12.1 (its winter!)
This Action changes the selected BI server Macro to whatever.
As you can see - supports Device and Variable Substitution
eg.
%%d:241092027:temperature%%
Essentially I have an Action group from within Indigo, that changes this BI Server Macro to Pool Temp whenever the temperature is updated.