Ich habe es nun auf folgendem Weg selbst gelöst bekommen,
hier meine Lösung als Proof-of-Concept:
Teil 1: Datenpunkte
Zunächst habe ich unter Objekte in der Admin-Oberfläche 3 Datenpunkte angelegt:
[image: 1598782612505-2aca83c8-7ce0-449c-a0b6-30377e87b04f-image.png]
javascript.0.zTEST.Cam215-LiveView enthält als Text den Link zum Live-Video-Stream:
http://192.168.1.80:4481/mjpg/Cam215/video.mjpg width="981" height="734"
javascript.0.zTEST.Cam215-StaticPicture enthält als Text den Link zum Standbild:
http://192.168.1.80:4481/image/Cam215?h=732&w=983
javascript.0.zTEST.Cam215-Link4VIS hat als Startwert ebenfalls den vorherigen Link zum Standbild
Teil 2: VIS Widget
Ich habe eine View erstellt, diese heißt TEST_CameraV2 und gehört zum Projekt main.
Im VIS-Editor habe ich auf meiner View ein basic - HTML Widget eingefügt. Unter Allgemein - HTML habe ich folgendes eingetragen:
<img src="{javascript.0.zTEST.Cam215-Link4VIS}">
Also auf den Wert des Datenpunktes verwiesen.
Im VIS-Editor wird da erst einmal nichts angezeigt - wenn Ihr die View aber dann betrachtet wird das Bild eingefügt.
Teil 3: Skript
Nun kommt noch ein Blocky-Skript zum Einsatz:
[image: 1598783354805-a9238fd8-72a8-4390-a06f-255ce56268bb-image.png]
on({id: "vis.0.control.data"/*Data for control vis*/, change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (value == 'main/TEST_CameraV2') {
setState("javascript.0.zTEST.Cam215-Link4VIS"/*Cam215-Link4VIS*/, getState("javascript.0.zTEST.Cam215-LiveView").val, true);
} else {
setState("javascript.0.zTEST.Cam215-Link4VIS"/*Cam215-Link4VIS*/, getState("javascript.0.zTEST.Cam215-StaticPicture").val, true);
}
});
Erklärung:
In der View ist zunächst immer nur ein Standbild der Kamera.
Und das Skript hängt am Datenpunkt
vis.0.control.data
und reagiert sobald dieser sich verändert. In diesem Datenpunkt steht nämlich immer die aktuell aktive View.
Stellt das Skript nun fest das die aktive View main/TEST_CameraV2 ist so ändert es den Datenpunkt für das HTML-Widget und setzt dort die URL des Live-Video-Streams ein - worauf VIS auch sofort reagiert.
Wird die Ansicht wieder verlassen ändert sich ja auch der Wert des aktiven Views - das Skript springt wieder an und setzt wieder den Wert des statischen Bildes ein.
Das funktioniert bei mir - wenn ich die View anzeigen lassen so geht die CPU-Last auf meinem BlueIris-Server hoch, wenn ich die View wieder wechsle so dauert es etwa 10 Sekunden und die Last geht wieder runter. Ich nehme an der BlueIris-Webserver braucht einen Moment bis er merkt das keiner mehr zuhört.
Aber damit kann ich gut leben.
Zudem kann ich mir auf Basis dieser Lösung eine View mit allen IP-Kameras bauen.