NEWS
Webcam Bild in Widget "vergrößern"
-
@crazy32 said in Webcam Bild in Widget "vergrößern":
@topsurfer Wo hast Du den http-Stream her? In meiner Surveillance Station finde ich nur einen rtsp-Stream.
Gute Frage, woher oder wer mir das genannt hat.
Ist der Key vom RTSP Stream der Surveilance,
sieht dann so aus und geht im Browser (!):
http://192.168.yy.xx:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=5&StmKey=2a06decfzzzzzzzzzzzzzzzzzzcc86 -
@topsurfer Nee, das funktioniert leider so nicht. Für die Funktion muss der User klicken!
Aber du kannst eine andere View nutzen mit Vollbild von dem Kamerabild und dann bei DP true die VIEW umschalten.on({id: '0_userdata.0.showCamFullscreen', change: 'ne'}, obj => { if (obj.state.val === true) { setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'cam_fullscreen'})); setState('vis-2.0.control.command', 'changeView'); } setTimeout(function(){ /* zurück auf Standard-Bildschirm */ setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'cam_normal'})); setState('vis-2.0.control.command', 'changeView'); },10000) });
-
@mcu Puhh, danke;
hört sich kompliziert an ...
Mit dem "anderen DP" meinst du einen/den DP, der das Vollbild ein/ausschaltet?Und obiges Code würde wieder nach "Scripte" gehören ?
-
@topsurfer Eigentlich nicht sooo kompliziert.
- In der VIS2 eine neue Seite (kameraFull) anlegen in dem das Kamerabild auf der ganzen Seite angezeigt wird.
- in ioBroker unter Skripte ein neues javascript anlegen Name
KameraUmschaltung
Diesen Code in das neue javascript enifügen
Skripte
-> +
->
-> Hinzufügen klicken
->
-> Namen Eintragen und ok klicken
->/* Dein DP mit dem man erkennt, dass da jemand an der Tür ist , KlingelDP oder so */ let dp = '0_userdata.0.besuchanderTuer' on({id: dp , change: 'ne'}, obj => { if (obj.state.val === true) { setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'kameraFull'})); setState('vis-2.0.control.command', 'changeView'); } setTimeout(function(){ /* zurück auf Standard-Bildschirm */ setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'normal'})); setState('vis-2.0.control.command', 'changeView'); },10000) });
-> Code einfügen und Speichern
-> DP anpassen, views anpassen für kameraFull und normal und Speichern -
@mcu said in Webcam Bild in Widget "vergrößern":
Kurze Frage noch
Für einen andere Kamera habe ich bereits einen Datenpunkt, wo der aktuelle Timestamp der erkannten Bewegung immer reingeschrieben wird.
Wie kann man diesen DP (Objekttyp: Text) zum umschalten der View nutzen, sobald sich dieser Wert geändert/aktuallisiert hat?Kenn mich mit Java leider nicht aus,
diese zwei Zeilen sind/wären es wohl:on({id: dp , change: 'ne'}, obj =>
{ if (obj.state.val === true) {
.../* Dein DP mit dem man erkennt, dass da jemand an der Tür ist , KlingelDP oder so */ let dp = '0_userdata.0.besuchanderTuer' on({id: dp , change: 'ne'}, obj => { if (obj.state.val === true) { setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'kameraFull'})); setState('vis-2.0.control.command', 'changeView'); } setTimeout(function(){ /* zurück auf Standard-Bildschirm */ setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', JSON.stringify({view: 'normal'})); setState('vis-2.0.control.command', 'changeView'); },10000) });
-
auf dieser seite ist ein Beispiel
https://www.smarthome-tricks.de/software-iobroker/vis-ereignisgesteuerter-view-wechsel/die Zeile mit instance und data sieht anders aus.
Ich glaube die Notation fürt die view ist
projekt/viewname
und kein json objekt
instance ist die browser instanz, die man in der vis definieren kann. in allen vis-client die view umschalten soll, dann diese mehrachen Fs. Ansonsten die genaue Angabe der Browserinstanz.
Die sieht man in vis1 im Tools-Reiter
passt auch besser zur Dokumentation hier
https://github.com/ioBroker/ioBroker.vis?tab=readme-ov-file#control-interfaceAber keine Ahnung ob der Code von MCU auch funktionieren könnte.
-
@oliverio Da wirst du wohl Recht haben.
/* Dein DP mit dem man erkennt, dass da jemand an der Tür ist , KlingelDP oder so */ let dp = '0_userdata.0.besuchanderTuer' on({id: dp , change: 'ne'}, obj => { // if (obj.state.val === true) { setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', 'project/kameraFull'); setState('vis-2.0.control.command', 'changeView'); // } setTimeout(function(){ /* zurück auf Standard-Bildschirm */ setState('vis-2.0.control.instance', 'vis.0'); setState('vis-2.0.control.data', 'projekt/normal'); setState('vis-2.0.control.command', 'changeView'); },10000) });
@topsurfer Der Zeitpunkt der eingetragen wird ist ja nie gleich, oder?
Also würde es auch so funktionieren.
-> dp anpassen -
@mcu
OK, also sollte es genügen, wenn ich nur den DP ändere?
Hab ich gemacht, der Inhalt vom DP ändert sich auch, aber das Umschalten der Kamera erfolgt nicht.
In der Log-Ausgabe sieht man den Scriptstart, und dann das starten des Timeouts, aber in den Teil "true" (mit umschalten der Kamera) springt er nicht. -
@topsurfer ja,dorry die if obj.state.val Zeile muss raus und dir klammer dazu unten weiter
-
Hier noch ein Artikel zur Verwendung der Instanz id des Browsers.
https://www.smarthome-tricks.de/software-iobroker/iobroker-vis-browser-id/amp/Also soe wie es da steht ist nicht falsch, insbesondere dann wenn du mehrere Clients/Browser hast über du dann deine views abrufen wills, aber der View Wechsel genau nur auf einem Browser ändern willst.
Da sich die aus Versehen aber auch mal ändern kann und wenn du überall alles gleich funktionieren lassen willst, würde ich lieber als Instanz id das hier verwenden FFFFFFFF