WebCams und Überwachungskameras im WebFront

Dank automatischem Bilder-Update und der Ausklapp-Funktion für Bilder kann sich jetzt jeder beliebige WebCams und Überwachungskameras im WebFront anzeigen lassen.

Anleitung:

  • Dummy-Modul hinzufügen, Name kann z.B. Kameras sein.
  • Neues Skript unterhalb von Kameras mit Namen CamSelection anlegen.
  • Den Inhalt des unten angegebenen Skripts rein kopieren und abspeichern.
  • Skriptansicht schließen.
  • Im Objektbaum Rechtsklick auf das Skript.
  • Objekt bearbeiten anklicken.
  • Reiter Optionen anklicken.
  • Häkchen bei Versteckt setzen.
  • OK anklicken.
  • Integer-Variable Auswahl unterhalb von Kameras anlegen.
  • Per Doppelklick die Variable editieren.
  • Zeige Experteneinstellungen anklicken und auf Weiter klicken.
  • Neues eigenes Profil erstellen, Name kann z.B. CamChanger sein.
  • Verändern anklicken, Dialog mit Ja bestätigen.
  • Auf Ansicht neben Assoziationen klicken.
  • Dort Einträge anlegen mit Wert von 0 bis n und bei Text einen Namen für die Kameras vergeben (siehe Screenshot).
  • Auf OK klicken.
  • Profil speichern anklicken.
  • Bei Eigene Aktion auf Auswählen klicken.
  • Skript CamSelection im Objektbaum suchen und per Doppelklick auswählen.
  • Weiter anklicken und schließlich auf OK klicken.
  • Unterhalb von Auswahl für jede Kamera von 0 bis n eine String-Variable anlegen mit einer Zahl von 0 bis n als Name.
  • Dort dann jeweils eine Kamera-URL mit Doppelklick auf die Spalte Wert im Objektbaum eintragen.
  • Integer-Variablen mit Namen 0 Intervall bis n Intervall anlegen.
  • Dort dann für die jeweilige Kamera ein Aktualisierungsintervall in Sekunden mit Doppelklick auf die Spalte Wert im Objektbaum eintragen.
  • Rechtsklick im Objektbaum auf CamSelection und Objekt ausführen anklicken.

Skript:

<?php
$value = 0;
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
$camID = CreateMediaByName($parentID, "Bild", 1);
$selectionID = IPS_GetVariableIDByName("Auswahl", $parentID);
$selectionVar = IPS_GetVariable($selectionID);

if ($IPS_SENDER == "WebFront")
{
    $value = $IPS_VALUE;
    SetValueInteger($selectionID, $IPS_VALUE);
}
else
{
    $value = GetValue($selectionID);
}

$fileUri = GetValueString(IPS_GetVariableIDByName($value, $selectionID));
$interval = GetValueInteger(IPS_GetVariableIDByName($value." Intervall", $selectionID));
$fileName = "media/CamImage".$camID.".jpg";

IPS_SetMediaFile($camID, $fileName, false);

$imageContent = @Sys_GetURLContent($fileUri);
if ($imageContent !== FALSE)
{
   $fileHandle = fopen("../".$fileName, 'wb+');
    if (@fwrite($fileHandle, $imageContent) === FALSE)
    {
       $fileName = "";
        @unlink($fileName);
    }
    fclose($fileHandle);
}

IPS_SetScriptTimer($IPS_SELF, $interval);

function CreateMediaByName($id, $name, $type)
{
   global $IPS_SELF;
   $mid = @IPS_GetMediaIDByName($name, $id);
   if($mid === false) {
       $mid = IPS_CreateMedia($type);
      IPS_SetParent($mid, $id);
      IPS_SetName($mid, $name);
      IPS_SetInfo($mid, "this media object was created by script #$IPS_SELF");
   }
   return $mid;
}
?>

Variablenprofil.png

Assoziationen.png

Hallo Horst,

Zitat: Franz Beckenbauer
ja ham ma den scho Weihnachtn?

War das nicht „Ja ist denn heut scho Weihnachten?“ :wink:
Und wäre Weihnachten gäbe es das Update schon und ich müsste keine 29°C beim Einschlafen ertragen. So musst Du dich wohl noch gedulden, bis Du das Paket mit dem Entpackprogramm Deiner Wahl entpacken darfst.

Wenn es denn so weit ist, hab ich auch was :slight_smile:

Im ersten Post finden sich nun Anleitung und Skript.

@ Horst

DANKE für die Mühe eine Detailanleitung zu schreiben.

Ich denke das reduziert die Rückfragen und potentiellen Komplikationen massiv.

So würde ich persönlich mir den Roll-out neuer Funktionen öfter wünschen, da dies den zeitlichen Aufwand für die Implementierung garantiert massiv reduziert und die Sache nachvollziehbarer machen würde.

Beste Grüsse
B71

Hallo Horst, ich habe mir jetzt dein Script eingebaut und es lief sofort. Besten dank.

Eine Frage habe noch:
Wenn ich auf eine andere Kamera klicke, öffnet sich eine Einblendung „Fehlerkonsole“ mit der Uhrzeit und wenn ich die schliesse,
kommt das angeforderte Bild.
Fehlerhinweise in den Meldungen kommen nicht.
Wo kommt das her und wie kann ich das verhindern ?

Hammergeil!!! Ich frag mich immer, wie Ihr das alle so hinbekommt. Vor allem wie Ihr auf die Umsetzung kommt.

Eine Frage hätte ich jedoch noch.
Wie bekomme ich denn das hin, dass ich im Prinzip eine Extra Seite „Webcams“ über die obere Leiste auswählen kann. Denn zur Zeit ist das noch auf meiner Startseite und da finde ich es nicht so schön.

Schonmal danke für Eure Antworten.

@audi2010: Ich vermute mal, dass Du da am Anfang oder am Ende des Skripts ein Leerzeichen vor <?php oder nach ?> hast. Rückmeldungen von Aktionsskripts werden als Fehlermeldungen interpretiert. Und das Leerzeichen ist dann natürlich eine besonders aufschlussreiche Fehlermeldung ;).

@DoktorD: Das geht über den WebFront-Konfigurator (siehe WebFront konfigurieren - IP-Symcon :: Automatisierungssoftware). Dazu ein Modul vom Typ IP-Symcon Kategorie hinzufügen und Root auf die Kategorie mit der Webcam-Auswahl setzen.

Danke Horst für deine Information in oder nach der Geisterstunde.

Genau das war der Fehler. Ist jetzt weg.
Ich hätte nie gedacht, dass sowas die Ursache sein kann. Der Geist ist weg.

Habe in meiner internen Entwicklerversion jetzt ein trim() drum gepackt. Damit sollte dieses Verhalten in Zukunft nicht mehr auftreten.

Was kann denn alles als URL verwendet werden bzw. in welchem Format muss denn das anzuzeigende Bild vorliegen? Oder muss das ein Stream sein?

Irgendwie steig ich da noch nicht ganz durch…:slight_smile:

Bild muss jpg/png/gif/bmp sein, halt irgendwas, das Dein Browser anzeigen kann. Daher habe ich auch die neutrale Endung .img gewählt. Streams führen dazu, dass das Skript mit einem Timeout beendet wird, da man einen Stream nicht direkt herunterladen kann. Die URL muss direkt aufs aktuelle Kamerabild zeigen. Halt so, wie Du es direkt im Browser ansteuern würdest.

Hallo Horst,

vielen Dank für die Erklärung!

Ich hatte bei mir das Problem, dass statt eines Bildes nur ein Symbol (so eins, wenn im IE z.B. ein Bild nicht geladen werden kann) angezeigt wurde. Das hängt dann aber wohl eher damit zusammen, dass sich z.B. der Link auf das Bild mittlerweile geändert hat…

Ich habe gestern alles nach Deiner Anleitung gemacht, aber irgendwie muss ich mich vertan haben - ich bekam immer nur eine CAM zur Auswahl und nicht die vier angelegten. Muss ich heute wohl nochmal rangehen :frowning:

Hat jemand eine Empfehlung für eine USB-Webcam?

Wie ist das eigentlich, legen die CAMs eigentlich immer ein Bild unter dem gleichen Namen ab oder kann man das i.d.R. bei der CAM-Software einstellen? Das ist ja wichtig, weil das sonst mit dem Einbinden im Webfront nicht klappt…

Muss mal blöd fragen, geht die Übertragung der Webcam Bilder auch
mit iFront ?

Wäre ja der Hammer, wenn man einen mobilen Monitor dabei hätte…

Du kannst auf Bilder klicken und sehen, was los ist. Iich weiß jetzt aber nicht, ob die auch automatisch aktualisiert werden.

auch wenn man sie manuell aktualisieren müsste, wäre das super.

Auch als Klingelcam geil, da braucht man eh nur ein Standbild, um den
Besucher zu identifizieren :slight_smile:

Hab oben schon mal gefragt…hat jemand eine Empfehlung für eine USB-Webcam?

Hi dreamy,

Logitech und Philips bauen generell gutes P/L.
Je nachdem was die Cam können soll, welchen Erfassungsbereich und
wieviele Bilder pro Sekunde, vielleicht auch ein Mikro für den Ton ?

Simple Cams kosten ca. 20 Euro aufwärts, für eine konkrete Empfehlung
brauche ich mehr Infos.