BlueIris Cross Platform and Other Indigo Integration

Posted on
Wed Jan 18, 2023 3:39 pm
whmoorejr offline
User avatar
Posts: 762
Joined: Jan 15, 2013
Location: Houston, TX

BlueIris Cross Platform and Other Indigo Integration

I've been a BlueIris user for a little less than a week, but I'm totally blown away by the flexibility of the platform given this plugin. I thought I'd start a thread under your plugin to focus on integrations that a little out of the scope of the plugin but still have to do with making blue iris bend to the will of indigo.

My first example is a method for viewing my indigo server as a camera on blue iris.
Using "RemoteSight" https://bensoftware.com/remotesight/ For those unfamiliar, this creates 2 mac cameras. The 1st (camera 0) is your isight camera or a connected USB camera, the 2nd (Camera 1) is your desktop. I'm using my desktop in this example.

Once you begin streaming your desktop, you can "+" a camera to BlueIris with these settings:
http://URL:PORT <- find under "settings" on RemoteSight
User / Password <- Whatever you set it up as on RemoteSight
Make: Generic/ONVIF
Model: JPEG/GIF/etc. image requests
Cam# 1
Main (default) /image?cameraNum=1

For this camera I have everything shut off.... no motion, no recording, no webcast, etc.... I use it for live view only.

Bill
My Plugin: My People

Posted on
Wed Jan 18, 2023 3:55 pm
whmoorejr offline
User avatar
Posts: 762
Joined: Jan 15, 2013
Location: Houston, TX

Indigo Camera #2, 3 + 4

In addition to a live view of my indigo desktop, I wanted a couple other camera images.
Indigo Camera 2, 3 and 4 were all created with a control page.

Indigo Control Page:
Add a refreshing image URL of your choice.... for myself, I'm using the following:
- file:///Users/williammoore/Desktop/IPCamRotate/R.jpg
- file:///Users/williammoore/Desktop/StaticRotate/Status.jpg
- file:///Users/williammoore/Desktop/StaticRotate/Alert.jpg

The last two are static images which will make more sense in my next post.
The first is a rotational image. Different events with a priority structure run external scripts that replace the "R.jpg" with whatever the current event image is. So all my blue iris cameras when they detect motion a script runs to replace "R.jpg" with the recently captured "CAMNAME.jpg"

Back to the control page, put a check in the "Edit z-order" box and make a note of the refreshing image number is.... This is what you will need.
IndigoURL:PORT/refresingimage?page=(pagename)&id=(z-order id)
For my use, the result is: http://192.168.1.10:8176/refreshingimag ... ForBI&id=2

On BlueIris:
http://URL:PORT <- use the URL of your computer, not the local url and the indigo port
User / Password <- your indigo creds
Make: Generic/ONVIF
Model: JPEG/GIF/etc. image requests
Cam# 1
Main (default) /refreshingimage?page=ImageForBI&id=2

In addition to turning off motion, recording, etc... I dropped the frame rate down to 1FPS. I tried 1 per minute, but BlueIris was giving me connection issues, so I ramped it back to 1FPS.

Follow those steps and repeat for any indigo served images you want to display on your BlueIris system.

Bill
My Plugin: My People

Posted on
Wed Jan 18, 2023 4:18 pm
whmoorejr offline
User avatar
Posts: 762
Joined: Jan 15, 2013
Location: Houston, TX

Console Switching and why

The security of my home follows a layered approach and different layers mean different things. I have these prioritized 1 through 5.
1 - Alarm: House Alarm, Fire Alarm. Either of those will set my house priority level to 1.
2 - ACS: Access Control: Somewhere something is making entry to my house. Door sensors, keypad codes, etc.
2- Special: Not an alarm, but still an event more important that someone on my driveway..... like my gun safe opening
3- Perimeter: Not making entry, but blue iris identified a "person" within my property line... i.e., danger close.
4- Interior: Heads up on movement around the house on a regular basis. If the house is armed, this is a Priority 1.
5- Other: Non immediate, like weather updates or informational stuff.
So whatever priority my house it at (based on event) any lesser event is recorded, but silent for a time determined by a "Priority Timer". Timer expire, house goes back to priority 5 and all events are welcome.

So my blue iris console is connected to a monitor in my office which is on almost all day. Because of the number of cameras, I needed a way to switch to what I needed to see intuitively without me having to walk across the office and click stuff. I set up my 5 main camera groups as follows:
1: Static Alarm Camera "Indigo Camera" described in my post above with all the alert messages as macros updated with this plugin.
2: Fave5: All the cameras in or around entry points to cover whatever entry is being made.
3: Outdoor: Outdoor cameras only
4: Indoor: Indoor cameras only
5: Status Group: Status and R.Jpg "Indigo Cameras" described in my post above.

From indigo, I have the following actions to change camera groups.
Note: There are actions for changing individual cameras to "Fullscreen", but it's weird. Example, if you go fullscreen on your driveway camera, you have to minimize it before you can go fullscreen on another camera. If the camera you want to go fullscreen on isn't part of the current group, it won't do anything. I found it easier to make groups, even if it is a group of 1 camera, and then just switch between groups.

Code: Select all
import requests
url = 'http://BI_User:BI_Password@192.168.1.105:81/admin?console=Outside&fullscreen=1'
reply = requests.get(url)
reply.raise_for_status()
Where you use your user id, pw, IP address and the name you gave to the group.

Now I have triggers so when the priority changes, the group is automatically changed. When there isn't much going on, CPU time is saved because it switches to a non-recorded super low frame rate image with macro information on the weather, time, etc.

Bill
My Plugin: My People

Posted on
Thu Jan 19, 2023 5:40 pm
whmoorejr offline
User avatar
Posts: 762
Joined: Jan 15, 2013
Location: Houston, TX

External Triggering

A few ways to trigger BlueIris with python and what I think it all means....

MOTION_A through MOTION_G plus MOTION_H Triggers
Code: Select all
import requests
url = 'http://UserName:Password@BlueIrisURL/admin?camera=CameraName&trigger=1&zones=128'
reply = requests.get(url)
reply.raise_for_status()

#Zones A-G triggers will run through object detection and AI filters first then to Indigo if Object found.
#MOTION_A zones=1
#MOTION_B zones=2
#MOTION_C zones=4
#MOTION_D zones=8
#MOTION_E zones=16
#MOTION_F zones=32
#MOTION_G zones=64
#MOTION_H zones=128 <- Creates a BI Alert. (bypass any motion/AI rules to create a "HotZone" Alert)
The example script is for a MOTION_H trigger. MOTION_H is reserved for "HotZone" and creates an automatic Alert in BlueIris which will also flash motion on the corresponding blue iris plugin camera.
Motion_A through Motion_G will all trigger BlueIris, which will then run through any object detection or AI filters. If nothing is found, nothing happens.

Another method of tagging BlueIris is the "External Device" script. I like this one because it has a "Memo" field, but dislike that "External Device" clips are a little tucked away in BlueIris. (They are there, just gotta find them). As far as I can tell, running this script does not trigger any kind of motion or get picked up by the plugin. It just tags a clip in BlueIris

External Device Trigger
Code: Select all
import requests
url = 'http://UserName:Password@BlueIrisURL/admin?camera=CameraName&trigger&memo=Script Trigger'
reply = requests.get(url)
reply.raise_for_status()
Why? You may have a variety of devices that indicate presence (monitored doors, zwave motion sensors, etc) You can use these to trigger different things in BlueIris or to just attach a memo to the clip to give you more insight as to "why" you tagged the clip, etc.

You may want to spit your zones to filter different things, so Zone C, for example, requires a "Person" to alert. So any trigger with that condition will only have a "Person" so those actions can be different than actions from that camera based on a dog or car. Once your zone is split this way, a call to trigger Zone C will only result in a firing trigger if there is a Person, i.e., occupancy detection.

You can use the plugin to trigger off a specific zone. By default, all motion events will be MOTION_A.

Example: Blue Iris runs all my motion through AI. My driveway camera can see my cars and my neighbors' cars. One zone (zoneA) is the whole image, one is just my driveway (zoneB) and one is the road (zoneC). Now running the script with zone=2(zoneB), it will only check my driveway. I can then have a trigger for that camera that uses the condition "lastMotionTriggerType" is equal to MOTION_C set to tell me if there is a car in my driveway or not. Versus a general call to trigger motion that will examine the full image for cars.

Example 2: Which I think answers someone else's question. If you and your wife always parks in the same spot (like my wife and I do), you could create a zone for each car. Then when you check each zone for a car, that can populate a "WifeCarHere" variable. Could be handy if you are out of town and the indigo variable "MyCarHere" = true. :lol: Joking aside, I think this would work, but may be tricky setting up. I don't know how much of a car Deepstate needs to see to call it a car. Waiving my arm infront of a camera returned with "Person Found" even though it could have been a discombobulated arm floating about.

Example 3: You may have overlapping detection devices. So PIR motion sensors and Camera Motion sensors may cover the same area. You might want to tag BlueIris with the PIR detector especially if that will kick off high resolution recording a bit sooner that the Camera Motion... but you don't want two motion trigger notifications for one event. If your PIR runs a script to ZONE_H, for example, and your camera motion trigger is set to exclude that, i.e., "lastMotionTriggerType" is NOT equal to MOTION_H, then your PIR will kick start BlueIris recording but not fire off any additional notifications set in Indigo.

Between the plugin and BlueIris, you can pretty much do all of this already.... but this just offers some flexibility for tagging BlueIris in a few different ways that you may have a specific need for.

Bill
My Plugin: My People

Posted on
Tue Sep 19, 2023 10:05 am
mundmc offline
User avatar
Posts: 1060
Joined: Sep 14, 2012

Re: BlueIris Cross Platform and Other Indigo Integration

(This is pretty awesome, btw)

Page 1 of 1

Who is online

Users browsing this forum: No registered users and 1 guest