Meine Gartencam
Verfasst: 13 Feb 2019, 12:37
Es handelt sich um eine Foscam FI8905 kompatible Cam
Link zum aktuellen Standbild: Meine Gartencam
___________________________________________________________________________________________
Einbau in eine Webseite als Live Video:
<p><strong> Garten live</strong></p>
<p><img name="GartenCam" src="http://IP der Webcam:Port/videostream.cgi?user=none&pwd=none" width="640" height="480" alt="Live Feed" style="background-color: #009999" /></p>
_____________________________________________________________________________________________
PHP Script zum Einbau eines Standbildes in eine Webseite:
<?php
/* Auslesen eines Einzelbildes aus der IP-Kamera 7Links, PX-3309.
=================================================================
Autor: Stefan Meisel
Datum: 30.03.2010
Systemvoraussetzungen:
----------------------
- Web-Server mit PHP und den Modulen CURL und GD.
- Die konfigurierte IP-Kamera 7Links, PX-3309, erreichbar unter einer öffentlichen URL.
Hinweise zum Setup:
-------------------
- Die öffentliche URL der Kamera muss der Variablen $url übergeben werden.
- In der Kamera muss ein Benutzerkonto aus der Gruppe "Visitor" definiert sein. Die Zugangsdaten müssen
der Variablen $credentials nach dem Schema "benutzer:passwort" übergeben werden.
- Optional kann das Programm einen Bild-Titel und die Uhrzeit einstempeln.
Hierzu können die entsprechenden Parameter für den Text das Datumsformat, die Optionen für Positionen, Größe
Farbe usw. - s. dort - gesetzt werden. Wenn nicht gewünscht, leer lassen ($title = "";).
- Es kann auch je ein TrueType-Font für die Schriftart hinterlegt werden.
*/
# Voreinstellungen:
// URL der Kamera und Zugangsdaten:
$url = "http://ip der Cam:Port/snapshot.cgi";
$credentials = "none:none";
// Weitere Parameter:
$imgwidth = "640"; // Breite des Bildes in Pixel (für Fehlerseite)
$imgheight = "480"; // Höhe des Bildes in Pixel (für Fehlerseite)
$errorText = "Die Webcam ist im Moment leider nicht verfügbar."; // Fehlertext
$errorTextPositionX = 4; // In Prozent von links
$errorTextPositionY = 95; // In Prozent von oben
$errorBackgroundColor['r'] = "0"; // Rotanteil der Hintergrundfarbe bei Fehlerbild
$errorBackgroundColor['g'] = "0"; // Grünanteil der Hintergrundfarbe bei Fehlerbild
$errorBackgroundColor['b'] = "0"; // Blauteil der Hintergrundfarbe bei Fehlerbild
# Programmteil:
// erzeuge einen neuen cURL-Handle
$ch = curl_init();
// setze die URL und andere Optionen
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $credentials);
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, $referer);
// Hole die Daten von der URL:
$imgStream = curl_exec($ch);
// Schließe den cURL-Handle und gebe die Systemresourcen frei
curl_close($ch);
// HTML-Header senden:
header("Content-type: image/jpeg");
if (($title) or ($dateformat)) {
// Wenn Titel oder Datum gewünscht, diese ins Bild stempeln:
$image = @ImageCreateFromString($imgStream);
if ($image) {
$drawColor = ImageColorAllocate($image, $fontColor['r'], $fontColor['g'], $fontColor['b']);
if ($title) {
if ($titleFont) {
ImageTTFText($image, $titleSize, 0, $imgwidth * $titlePositionX / 100, $imgheight * $titlePositionY / 100, $drawColor, $titleFont, $title);
} else {
ImageString($image, 4, $imgwidth * $titlePositionX / 100, $imgheight * $titlePositionY / 100, $title, $drawColor);
}
}
if ($dateformat) {
if ($dateFont) {
ImageTTFText($image, $dateSize, 0, $imgwidth * $datePositionX / 100, $imgheight * $datePositionY / 100, $drawColor, $dateFont, date($dateformat));
} else {
ImageString($image, 4, $imgwidth * $datePositionX / 100, $imgheight * $datePositionY / 100, date($dateformat), $drawColor);
}
}
} else {
$error = true;
}
if ($error) {
$image = imageCreate($imgwidth, $imgheight);
$background_color = ImageColorAllocate($image, $errorBackgroundColor['r'], $errorBackgroundColor['g'], $errorBackgroundColor['b']);
$drawColor = ImageColorAllocate($image, $fontColor['r'], $fontColor['g'], $fontColor['b']);
if ($dateFont) {
ImageTTFText($image, $dateSize, 0, $imgwidth * $errorTextPositionX / 100, $imgheight * $errorTextPositionY / 100, $drawColor, $dateFont, $errorText);
} else {
ImageString($image, 4, $imgwidth * $errorTextPositionX / 100, $imgheight * $errorTextPositionY / 100, $errorText, $drawColor);
}
}
// Ausgabe des Bildes:
imagejpeg($image, "", 85);
} else {
// Weder Titel noch Datum - Bild direkt ausgeben
echo $imgStream;
}
?>
_______________________________________________________________________________________________
Dazu muss es einen User none mit Passwort none geben, der nur Beobachter sein darf, also keinesfalls hier einen User mit allen Rechten z.B. admin etc. eintragen...
Link zum aktuellen Standbild: Meine Gartencam
___________________________________________________________________________________________
Einbau in eine Webseite als Live Video:
<p><strong> Garten live</strong></p>
<p><img name="GartenCam" src="http://IP der Webcam:Port/videostream.cgi?user=none&pwd=none" width="640" height="480" alt="Live Feed" style="background-color: #009999" /></p>
_____________________________________________________________________________________________
PHP Script zum Einbau eines Standbildes in eine Webseite:
<?php
/* Auslesen eines Einzelbildes aus der IP-Kamera 7Links, PX-3309.
=================================================================
Autor: Stefan Meisel
Datum: 30.03.2010
Systemvoraussetzungen:
----------------------
- Web-Server mit PHP und den Modulen CURL und GD.
- Die konfigurierte IP-Kamera 7Links, PX-3309, erreichbar unter einer öffentlichen URL.
Hinweise zum Setup:
-------------------
- Die öffentliche URL der Kamera muss der Variablen $url übergeben werden.
- In der Kamera muss ein Benutzerkonto aus der Gruppe "Visitor" definiert sein. Die Zugangsdaten müssen
der Variablen $credentials nach dem Schema "benutzer:passwort" übergeben werden.
- Optional kann das Programm einen Bild-Titel und die Uhrzeit einstempeln.
Hierzu können die entsprechenden Parameter für den Text das Datumsformat, die Optionen für Positionen, Größe
Farbe usw. - s. dort - gesetzt werden. Wenn nicht gewünscht, leer lassen ($title = "";).
- Es kann auch je ein TrueType-Font für die Schriftart hinterlegt werden.
*/
# Voreinstellungen:
// URL der Kamera und Zugangsdaten:
$url = "http://ip der Cam:Port/snapshot.cgi";
$credentials = "none:none";
// Weitere Parameter:
$imgwidth = "640"; // Breite des Bildes in Pixel (für Fehlerseite)
$imgheight = "480"; // Höhe des Bildes in Pixel (für Fehlerseite)
$errorText = "Die Webcam ist im Moment leider nicht verfügbar."; // Fehlertext
$errorTextPositionX = 4; // In Prozent von links
$errorTextPositionY = 95; // In Prozent von oben
$errorBackgroundColor['r'] = "0"; // Rotanteil der Hintergrundfarbe bei Fehlerbild
$errorBackgroundColor['g'] = "0"; // Grünanteil der Hintergrundfarbe bei Fehlerbild
$errorBackgroundColor['b'] = "0"; // Blauteil der Hintergrundfarbe bei Fehlerbild
# Programmteil:
// erzeuge einen neuen cURL-Handle
$ch = curl_init();
// setze die URL und andere Optionen
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $credentials);
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, $referer);
// Hole die Daten von der URL:
$imgStream = curl_exec($ch);
// Schließe den cURL-Handle und gebe die Systemresourcen frei
curl_close($ch);
// HTML-Header senden:
header("Content-type: image/jpeg");
if (($title) or ($dateformat)) {
// Wenn Titel oder Datum gewünscht, diese ins Bild stempeln:
$image = @ImageCreateFromString($imgStream);
if ($image) {
$drawColor = ImageColorAllocate($image, $fontColor['r'], $fontColor['g'], $fontColor['b']);
if ($title) {
if ($titleFont) {
ImageTTFText($image, $titleSize, 0, $imgwidth * $titlePositionX / 100, $imgheight * $titlePositionY / 100, $drawColor, $titleFont, $title);
} else {
ImageString($image, 4, $imgwidth * $titlePositionX / 100, $imgheight * $titlePositionY / 100, $title, $drawColor);
}
}
if ($dateformat) {
if ($dateFont) {
ImageTTFText($image, $dateSize, 0, $imgwidth * $datePositionX / 100, $imgheight * $datePositionY / 100, $drawColor, $dateFont, date($dateformat));
} else {
ImageString($image, 4, $imgwidth * $datePositionX / 100, $imgheight * $datePositionY / 100, date($dateformat), $drawColor);
}
}
} else {
$error = true;
}
if ($error) {
$image = imageCreate($imgwidth, $imgheight);
$background_color = ImageColorAllocate($image, $errorBackgroundColor['r'], $errorBackgroundColor['g'], $errorBackgroundColor['b']);
$drawColor = ImageColorAllocate($image, $fontColor['r'], $fontColor['g'], $fontColor['b']);
if ($dateFont) {
ImageTTFText($image, $dateSize, 0, $imgwidth * $errorTextPositionX / 100, $imgheight * $errorTextPositionY / 100, $drawColor, $dateFont, $errorText);
} else {
ImageString($image, 4, $imgwidth * $errorTextPositionX / 100, $imgheight * $errorTextPositionY / 100, $errorText, $drawColor);
}
}
// Ausgabe des Bildes:
imagejpeg($image, "", 85);
} else {
// Weder Titel noch Datum - Bild direkt ausgeben
echo $imgStream;
}
?>
_______________________________________________________________________________________________
Dazu muss es einen User none mit Passwort none geben, der nur Beobachter sein darf, also keinesfalls hier einen User mit allen Rechten z.B. admin etc. eintragen...