Beiträge von Nea
-
-
-
Die Cam ist eine PiCam aus China und eingebaut ist diese im Gehäuse wo früher die Auseneinheit der Klingeltaster war. Das sieht aus wie ein 3er Briefkasten nur das hier 2 nur als Briefkasten benutzt werden. Allerdings sind diese in die Wand eingelassen.
Ich kann ja morgen mal ein Bild machen.
Dies ist aber noch nicht die Finale Lösung daher bin ich auch noch am Ideen sammeln.
-
Im Anhang habe ich ein Bild mit Weitwinkel. Die Schärfe lässt noch ein bisschen zu wünschen übrig aber man erkennt alles ziemlich gut. Den Rand den man sieht ist einbaubedingt nich besser zu lösen gewesen. Meine Einfahrt hat auch nur 3m breite von daher kann man schön entlang am Haus von der Garage bis zur Strasse blicken.
Du kannst am GPIO auch die 5V Spannung anlegen. Das PiFace versorgt den Pi ja auch über den GPIO.
Beim Lautsprecher habe ich mich für eine 16 Ohm Variante mit Neodym und Kunstoff Membrane entschieden.
-
Was mich wundert ist das bei dir der Aufruf "raspistill" erst nach dem "make" ging. Dieser Aufruf hat noch nichts mit dem mjpg-streamer zu tun. Hast du Raspbian lite installiert?
-
Danke für den Hinweis, habe ich vergessen mit einzufügen.
-
Das liegt daran das Du die Ausgabe als yuv hast. Wenn der Patch sauber eingespielt wird geht die Systemlast wieder runter aber auch nur in dem Du das -y aus dem Aufruf weg lässt.
Habe jetzt oben nochmal den Formatierungungsfehler behoben, auf jedenfall funktioniert so der patch jetzt. Ich habe den Patch eben gerade nochmal ausgeführt.
-
Ich schmeiß einfach mal ein anderen Gedanken rein - nicht an die Türsprechanalge anschließen, sondern an eine InnenstationDie hat alles, was Du brauchst - Lautsprecher und Mic werden abgeklemmt und auf die Soundkarte geklemmt und den Button für den Türöffner gibt es dort vermutlich auch. Spannungen sind kein Problem und Wetterschutz auch nicht, da Du ehh schon im Haus bist
Aber ich wäre zuversichtlich, dass auch Deine Station TLE 051-01 direkt angeschlossen werden kann...
Thomas war schneller, hehe.
-
Hallo Andreas,
hiermit klappt die Aufnahme eines Snapshots! Danke, super.
Jetzt wäre es noch schön, dies in der mailto.py mit zu verarbeiten.
Es gibt in dem Skript ja die Variable "smtp_snapshot", die wenn sie auf "true" steht, ja einen Snapshot mit an die Mail packen soll.
Oder geht dies nicht mit dieser Art der Erstellung eines Snapshots?
Danke, jbadminDa ich dieses script mailto.py nicht verwende müsstest Du das mal versuchen. Ich hatte große Problem mit dem script mich mit meinem E-Mail Konto an zu melden oder ich war zu doof dafür. Ich verwende hierfür sendemail.
Bei mir sieht das script, mailbild.sh, so aus:
Codelast=`ls -tr | tail -1` if [ -z "$last" ] then echo "keine Datei gefunden" else echo "letzte Datei: $last" sleep 2 echo "DoorPi Klingel Mail" | sendEmail -f absender@absender.de -t empfaenger@ampfaenger.de -u DoorPi Klingel Bild -m Es hat geklingelt -s smtp:587 -xu Benutzername -xp Passwort -o tls=yes -a /backup/record-video/"$last" fi
Das script ist zwar nicht schön aber funktioniert. Wenn ich mal wieder etwas mehr zeit habe dann wird das ordentlich geschrieben. Ich hoffe Du kannst etwas damit anfangen.
Der Befehl in der doorpi.ini sieht dann so aus:
-
Hallo stonev,
zu 1) Ich habe bei mir ebenfalls die normale PiCam nur ist der Bereich, bei mir, gut ausgeleuchtet. Das Bild ist bei mir, in der Nacht, OK.
zu 2) Bei solchen Gehäusen solltest Du auch darauf achten das hier eine ausreichende Belüftung ist. Sonst stirbt dein Pi am Hitzetod.Wenn Du einen Pi2 einsetzt hat dieser genug resourcen um auch mit dem Bild fertig zu werden.
Zitat
Aber: Würde dann Doorpi mit linphone noch Sinn machen, oder besser Asterisk auf den PI bügeln?Die Frage verstehe ich nicht?
Ich habe bei mir ebenfalls Asterisk im DoorPi laufen und das funktioniert sehr gut. -
Hallo Flippi, dann zeige mal was Du bisher alles schon in der doorpi.ini eingetragen hast.
Zitat
Die Einbindung der IP Kamera in die Elcom App wäre super falls das Möglich ist.Ja das funktioniert, der stream der IP-Cam darf nur kein h264 sein. Damit kommt die App nicht klar.
Zitat
Ist es auch Möglich 2 Türöffner zu betreiben mit einer zweiten IP Kamera und nochmals 3 Tastern?Du kannst so viele Ein und Ausgänge belegen wie der Pi zur verfügung stellt.
-
Das sleep sollte nur gewährleisten das der Treiber vor dem mjpg-streamer gestartet wird.
-
Hallo Marcus,
das sollte kein gemecker sein! Im alten Forum stehen zu fast allen Problemen die Lösungen. Ich weiß das es dort wegen der Unübersichtlichkeit nicht leicht war Antworten auf viel Probleme zu finden ist. Es ist halt auch schwierig bei nur einem Thema überhaupt etwas zu finden. Darum hat Thomas ja dieses Forum eröffnet damit alles nun sortiert und geordnet eingepflegt werden kann.Habe ein bisschen Nachsicht mit uns das Forum ist erst ein paar Tage alt und alles braucht seine Zeit. Wir wissen das die Dukomentation eher bescheiden ist und das wollen wir alle gemeinsam ändern. Auch Ihr seid hier gefragt.
-
Upps, Du hast mich erwischt. Ich ändere es schnell.
-
Hey Joker, Achtung in meinem script hat sich ein Schreibfehler eingeschlichen:
Nach dem sleep Befehl stand hinten dran ein :2 der Doppelpunkt gehört da nicht rein.
sleep 2
Ich habe es oben schon abgeändert.
-
Snapshots erstellen mit mjpg-streamer:
Benötigt wird: PHP5 , PHP5-cli und eine IP Kamera oder die RaspiCam die das aktuelle Bild als Bilddatei bereit stellt.Installieren des PHP5-cli:
Achtung hier wird auch Apache2 mit installiert der standardmäßig auf Port 80 läuft und somit das Webinterface des DoorPi stört. Bitte ändert den Port des Apache2 auf einen anderen Port oder das Webinterface von DoorPi. Dies ist leicht in der doorpi.ini zu ändern.
Wenn diese Installation ausgeführt ist können wir PHP Scripte in der Shell ausführen.
Optional: Nun erstellst du den Ordner tools mit:
Hier erstellst Du die Datei take_snapshot_doorpi.php.Den nachfolgenden Code per copy and paste in die take_snapshot_doorpi.php einfügen und danach abspeichern.
PHP<?php #! /usr/bin/php -q $snapshot_file = $argv; $timestamp = time(); $datum = date("Ymd-His", $timestamp); $url="http://192.168.178.200:9000/?action=snapshot"; copy($url,"/backup/record-video/".$datum.'.jpg'); #copy($url,$snapshot_file); ?>
Dieses script sollte natürlich jeder anpassen so wie Du es benötigst.
Nun was macht diese script:
Es greift sich ein Bild ab von der Url und Pfad des Webinterfaces des mjpg-streamer und benennt diese nach Datum und Zeit und legt es unter dem Pfad /backup/record-video ab.Sehr einfach und simpel gehalten wie ich finde.
Ausführbar wird das script durch:Zum testen ob das PHP Script funktioniert folgendes eingeben:
Nun sollte ein Bild unter dem Pfad /backup/record-video zu finden sein. Bitte vorher den mjpg-streamer aber starten
So sollte dann der Befehl in der doorpi.ini aussehen:
Code[EVENT_OnKeyPressed_prodsystem.0] 10 = os_execute:php /usr/local/etc/DoorPi/tools/take_snapshot_doorpi.php
Das war es auch schon.
Über ein "Gefällt mir" würde ich mich freuen.
-
Den mjpeg-Streamer habe ich nach der folgenden Anleitung installiert (allerdings nach /usr/local/etc und später als service eingerichtet)
https://github.com/foosel/Octo…PG-Streamer-configurationDenn der eigentliche mjpg-streamer unterstützt keine raspi cam. Dazu musste ich auf die experimental Version zurückgreifen
Mehr habe ich nicht gemacht. Aber wie man sieht eine ganze Reihe von Sonder-Geschichten
Hallo Marcus,
wo Du nun den mjpg-streamer installierst ist an sich egal.Der mjpg-streamer unterstützt die raspicam sehr gut nur mit einem anderen treiber dieser nennt sich V4L2 (Video for Linux). Du kannst dir mal die Anleitung im Anleitungs Thread mal durchlesen. Die experimental Version ist veraltet und verbraucht unnötig mehr resourcen als die neuere Version, deswegen empfehle ich Dir auf die neuere Version zu upgraden.
Zitat
Die Zeile in setup.py musste ich ändern von:
os.chmod(new_filename, 0755)
auf.
os.chmod(new_filename, 0777)
Das sollte nun mit der angepassten Installationsroutine bzw. der neuen Version 2.1.4.8 der Vergangenheit angehören.Zitat
Dann habe ich mich an die take_snapshot Funktion drangesetzt, da auch die nicht mit dem mjpeg-Streamer und der raspi Cam ging (auch aus dem Forum)
http://www.forum-raspberrypi.de/Thread-h...#pid208852Setzt voraus: Mailserver vorher aufsetzen.
http://www.binarytides.com/linux-mail-command-examples/
Das hättest Du auch mittels PHP hin bekommen.Zitat
Also was habe ich gemacht? Im Image ist eine Installation des DoorPi von Github auf einem Jessi Image vom Februar. Das Jessi Image habe ich nach der Anleitung aus dem Forum aufgesetzt.
http://www.forum-raspberrypi.de/Thread-h...pid=192761
Versuche mal die Installation über pip. Die läuft aktuell ohne irgendetwas an den Rechten oder sonstwas zu ändern sehr gut. Ich habe erst gestern DoorPi neu installatiert. -
Ich zitiere mich mal hier selbst:
Zitat
Wenn man den mjpg_streamer beim booten automatisch gestartet haben möchte der sollte folgende Datei anlegen:
Code:Mit diesem Inhalt.
Code:
Bash
Alles anzeigen#!/bin/sh # /etc/init.d/mjpg_streamer ### BEGIN INIT INFO # Provides: mjpg_streamer # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: MJPG_Streamer_autostart ### END INIT INFO start() { modprobe bcm2835-v4l2 sleep 2 echo "Starting mjpg-streamer..." /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" >/dev/null 2>&1 & } stop() { echo "Stopping mjpg-streamer..." kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac exit 0
Mit diesem Befehl wird die eben erstellte Autostart-Datei in den Autostart eingetragen:
Code:Danach kannst Du es bequem per:
Code:
starten.Beenden kannst Du es mit:
Code:Mit diesem kleinen script startest Du jedesmal den V4l Treiber wieder nach dem Bootvorgang und startest ebenfalls den streamer gleich mit.
-
Installationschritte des mjpg-streamers.
Codesudo apt-get -y update && sudo apt-get -y upgrade sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev checkinstall sudo modprobe bcm2835-v4l2
Sollte es hier zu Problemen kommen ist wahrscheinlich die Kamera nicht aktiviert. „sudo raspi-config“Coderaspistill -o /tmp/test.jpg svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code cd mjpg-streamer-code/mjpg-streamer
Als nächstes erstellen wir einen Patch.
Diesen Inhalt per Drag and Drop einfügen.
Diff
Alles anzeigen--- plugins/input_uvc/input_uvc.c (revision 174) +++ plugins/input_uvc/input_uvc.c (working copy) @@ -405,9 +405,13 @@ if(pcontext->videoIn->formatIn == V4L2_PIX_FMT_YUYV) { DBG("compressing frame from input: %d\n", (int)pcontext->id); pglobal->in[pcontext->id].size = compress_yuyv_to_jpeg(pcontext->videoIn, pglobal->in[pcontext->id].buf, pcontext->videoIn->framesizeIn, gquality); + /* copy this frame's timestamp to user space */ + pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp; } else { DBG("copying frame from input: %d\n", (int)pcontext->id); - pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->buf.bytesused); + pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->tmpbytesused); + /* copy this frame's timestamp to user space */ + pglobal->in[pcontext->id].timestamp = pcontext->videoIn->tmptimestamp; } #if 0 @@ -418,8 +422,6 @@ prev_size = global->size; #endif - /* copy this frame's timestamp to user space */ - pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp; /* signal fresh_frame */ pthread_cond_broadcast(&pglobal->in[pcontext->id].db_update); Index: plugins/input_uvc/v4l2uvc.c =================================================================== --- plugins/input_uvc/v4l2uvc.c (revision 174) +++ plugins/input_uvc/v4l2uvc.c (working copy) @@ -450,6 +450,8 @@ */ memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused); + vd->tmpbytesused = vd->buf.bytesused; + vd->tmptimestamp = vd->buf.timestamp; if(debug) fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused); Index: plugins/input_uvc/v4l2uvc.h =================================================================== --- plugins/input_uvc/v4l2uvc.h (revision 174) +++ plugins/input_uvc/v4l2uvc.h (working copy) @@ -28,6 +28,7 @@ #include <stdio.h> +#include <stdint.h> #include <string.h> #include <fcntl.h> #include <unistd.h> @@ -105,6 +106,8 @@ int framecount; int recordstart; int recordtime; + uint32_t tmpbytesused; + struct timeval tmptimestamp; }; /* context of each camera thread */
Wir führen anschließend diese Befehle aus und verlassen danach das Verzeichnis wieder.
Codepatch -p0 < input_uvc_patch make USE_LIBV4L2=true clean all sudo make DESTDIR=/usr/local install cd
Nun geben wir folgendes ein, nur um zu schauen das auch alles richtig installiert wurde.
Hier dürfen keine Fehlermeldungen erscheinen.Jetzt kann der Streamer gestartet werden, mit folgendem Befehl:
Codemjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000"
Hier wird ein kleiner Webserver gestartet der unter Deiner Adresse des raspberypi zu erreichen ist aber mit der Port Nummer 9000.
Bsp.:
192.168.178.200:9000Man kann den Stream natürlich auch noch zusätzlich in eine Datei leiten zb. so:
Codemjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" -o "/usr/local/lib/output_file.so -f /backup/record-video -d 15000"
Hier wird der Stream in den Ordner /backup/record-video abgelegt.
Man kann auch die Parameter verändern zb. die Auflösung (Parameter -r) bzw. die Frames (Parameter -f) und die Quality (Parameter -q)
Es gibt noch mehr Parameter doch hier verweise ich auf folgende Web Seite: DokumentationDie Hilfe zu allen Plugins kann mit
aufgerufen werden.Wenn man den mjpg_streamer beim booten automatisch gestartet haben möchte der sollte folgende Datei anlegen:
Mit diesem Inhalt.
Bash
Alles anzeigen#!/bin/sh # /etc/init.d/mjpg_streamer ### BEGIN INIT INFO # Provides: mjpg_streamer # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: MJPG_Streamer_autostart ### END INIT INFO start() { modprobe bcm2835-v4l2 sleep:2 echo "Starting mjpg-streamer..." /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" >/dev/null 2>&1 & } stop() { echo "Stopping mjpg-streamer..." kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac exit 0
Mit diesem Befehl wird die eben erstellte Autostart-Datei in den Autostart eingetragen:
Danach kannst Du es bequem per:
starten.Beenden kannst Du es mit:
-
Installationschritte des mjpg-streamers.
Codesudo apt-get -y update && sudo apt-get -y upgrade sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev checkinstall sudo modprobe bcm2835-v4l2
Sollte es hier zu Problemen kommen ist wahrscheinlich die Kamera nicht aktiviert. „sudo raspi-config“Coderaspistill -o /tmp/test.jpg svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code cd mjpg-streamer-code/mjpg-streamer
Als nächstes erstellen wir einen Patch. Dieser wird benötigt damit der streamer mit motion jpg umgehen kann und wir auch eine Ausgabe im Webinterface sehen. Ohne diesen Patch bekommt man nur ein Bild als yuv Ausgabe und die Auslastung des Pi steigt enorm an. Deswegen ist der nächste Schritt sehr wichtig!
Diesen Inhalt per Drag and Drop einfügen.Code
Alles anzeigen--- plugins/input_uvc/input_uvc.c (revision 174) +++ plugins/input_uvc/input_uvc.c (working copy) @@ -405,9 +405,13 @@ if(pcontext->videoIn->formatIn == V4L2_PIX_FMT_YUYV) { DBG("compressing frame from input: %d\n", (int)pcontext->id); pglobal->in[pcontext->id].size = compress_yuyv_to_jpeg(pcontext->videoIn, pglobal->in[pcontext->id].buf, pcontext->videoIn->framesizeIn, gquality); + /* copy this frame's timestamp to user space */ + pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp; } else { DBG("copying frame from input: %d\n", (int)pcontext->id); - pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->buf.bytesused); + pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->tmpbytesused); + /* copy this frame's timestamp to user space */ + pglobal->in[pcontext->id].timestamp = pcontext->videoIn->tmptimestamp; } #if 0 @@ -418,8 +422,6 @@ prev_size = global->size; #endif - /* copy this frame's timestamp to user space */ - pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp; /* signal fresh_frame */ pthread_cond_broadcast(&pglobal->in[pcontext->id].db_update); Index: plugins/input_uvc/v4l2uvc.c =================================================================== --- plugins/input_uvc/v4l2uvc.c (revision 174) +++ plugins/input_uvc/v4l2uvc.c (working copy) @@ -450,6 +450,8 @@ */ memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused); + vd->tmpbytesused = vd->buf.bytesused; + vd->tmptimestamp = vd->buf.timestamp; if(debug) fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused); Index: plugins/input_uvc/v4l2uvc.h =================================================================== --- plugins/input_uvc/v4l2uvc.h (revision 174) +++ plugins/input_uvc/v4l2uvc.h (working copy) @@ -28,6 +28,7 @@ #include <stdio.h> +#include <stdint.h> #include <string.h> #include <fcntl.h> #include <unistd.h> @@ -105,6 +106,8 @@ int framecount; int recordstart; int recordtime; + uint32_t tmpbytesused; + struct timeval tmptimestamp; }; /* context of each camera thread */
Hier bitte auf die Formatierung des codes aufpassen. Es gab deswegen schon so manches Problem.
Ich habe mal den Inhalt des patches in eine .txt Datei eingefügt. hier muß nur noch die Endung .txt entfernt und auf den Raspi übertragen werden.
Wir führen anschließend diese Befehle aus damit der Patch installiert wird und verlassen danach das Verzeichnis wieder.
Codepatch -p0 < input_uvc_patch make USE_LIBV4L2=true clean all sudo make DESTDIR=/usr/local install cd
Nun geben wir folgendes ein, nur um zu schauen das auch alles richtig installiert wurde und um den neuen Treiber V4L2 zu starten.Hier dürfen keine Fehlermeldungen erscheinen.
Jetzt kann der Streamer gestartet werden, mit folgendem Befehl:
Codemjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000"
Hier wird ein kleiner Webserver gestartet der unter Deiner Adresse des raspberypi zu erreichen ist aber mit der Port Nummer 9000.
Bsp.:
192.168.178.200:9000Man kann den Stream natürlich auch noch zusätzlich in eine Datei leiten zb. so:
Codemjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" -o "/usr/local/lib/output_file.so -f /backup/record-video -d 15000"
Hier wird der Stream in den Ordner /backup/record-video abgelegt.
Man kann auch die Parameter verändern zb. die Auflösung (Parameter -r) bzw. die Frames (Parameter -f) und die Quality (Parameter -q)
Es gibt noch mehr Parameter doch hier verweise ich auf folgende Web Seite: DokumentationDie Hilfe zu allen Plugins kann mit:
aufgerufen werden.
Wenn man den mjpg_streamer beim booten automatisch gestartet haben möchte der sollte folgende Datei anlegen:
Mit diesem Inhalt.Bash
Alles anzeigen#!/bin/sh # /etc/init.d/mjpg_streamer ### BEGIN INIT INFO # Provides: mjpg_streamer # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: MJPG_Streamer_autostart ### END INIT INFO start() { modprobe bcm2835-v4l2 sleep:2 echo "Starting mjpg-streamer..." /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" >/dev/null 2>&1 & } stop() { echo "Stopping mjpg-streamer..." kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac exit 0
Hiermit das script ausführbar machen.
Mit diesem Befehl wird die eben erstellte Autostart-Datei in den Autostart eingetragen:
Danach kannst Du es bequem per:starten.
Beenden kannst Du es mit:
Sollten Fragen oder Anregungen sein dann stellt diese einfach, ich versuche diese zu beantworten.............................................................................................................................................................................................................................................................................
Neue Einstellungsmöglichkeiten der PiCam oder der USB-Cam
Mittlerweile habe ich eine Möglichkeit gefunden um zusätzliche Einstellungen für die Picam oder USB-Cam zu setzen diese ist zwar etwas umständlich aber ich habe es bis jetzt nicht anders hinbekommen.
Wir installieren ein tool hiermit:
Anschliesend wollen wir wissen welche Einstellungen sich verändern lassen:
Die Meldung sieht dann folgendermassen aus:
Code
Alles anzeigenpi@DoorPi:~ $ uvcdynctrl -cv [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00980001, name = 'User Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x00980001, name = 'User Controls' [libwebcam] Unknown V4L2 user control ID encountered: 0x0098090E (V4L2_CID_USER_BASE + 14) [libwebcam] Unknown V4L2 user control ID encountered: 0x0098090F (V4L2_CID_USER_BASE + 15) [libwebcam] Unknown V4L2 user control ID encountered: 0x00980914 (V4L2_CID_USER_BASE + 20) [libwebcam] Unknown V4L2 user control ID encountered: 0x00980915 (V4L2_CID_USER_BASE + 21) [libwebcam] Unknown V4L2 user control ID encountered: 0x0098091F (V4L2_CID_USER_BASE + 31) [libwebcam] Unknown V4L2 user control ID encountered: 0x00980922 (V4L2_CID_USER_BASE + 34) [libwebcam] Unknown V4L2 user control ID encountered: 0x0098092A (V4L2_CID_USER_BASE + 42) [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00990001, name = 'Codec Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x00990001, name = 'Codec Controls' [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x009909CE (V4L2_CID_MPEG_BASE + 206) [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x009909CF (V4L2_CID_MPEG_BASE + 207) [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x009909E2 (V4L2_CID_MPEG_BASE + 226) [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x00990A66 (V4L2_CID_MPEG_BASE + 358) [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x00990A67 (V4L2_CID_MPEG_BASE + 359) [libwebcam] Unknown V4L2 MPEG control ID encountered: 0x00990A6B (V4L2_CID_MPEG_BASE + 363) [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x009A0001, name = 'Camera Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0001, name = 'Camera Controls' [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x009A0913, name = 'Auto Exposure, Bias', type = 9 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0913, name = 'Auto Exposure, Bias' [libwebcam] Unknown V4L2 camera class (UVC) control ID encountered: 0x009A0914 (V4L2_CID_CAMERA_CLASS_BASE + 20) [libwebcam] Unknown V4L2 camera class (UVC) control ID encountered: 0x009A0916 (V4L2_CID_CAMERA_CLASS_BASE + 22) [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x009A0917, name = 'ISO Sensitivity', type = 9 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0917, name = 'ISO Sensitivity' [libwebcam] Unknown V4L2 camera class (UVC) control ID encountered: 0x009A0918 (V4L2_CID_CAMERA_CLASS_BASE + 24) [libwebcam] Unknown V4L2 camera class (UVC) control ID encountered: 0x009A0919 (V4L2_CID_CAMERA_CLASS_BASE + 25) [libwebcam] Unknown V4L2 camera class (UVC) control ID encountered: 0x009A091A (V4L2_CID_CAMERA_CLASS_BASE + 26) [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x009D0001, name = 'JPEG Compression Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009D0001, name = 'JPEG Compression Controls' [libwebcam] Unknown V4L2 control ID encountered: 0x009D0903 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009D0903, name = 'Compression Quality' Listing available controls for device video0: Brightness ID : 0x00000001, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 100, step size: 1 ], Default : 50 Contrast ID : 0x00000002, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ -100 .. 100, step size: 1 ], Default : 0 Saturation ID : 0x00000004, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ -100 .. 100, step size: 1 ], Default : 0 Red Balance ID : 0x0000100e, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 1 .. 7999, step size: 1 ], Default : 1000 Blue Balance ID : 0x0000100f, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 1 .. 7999, step size: 1 ], Default : 1000 Horizontal Flip ID : 0x00001014, Type : Boolean, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 1, step size: 1 ], Default : 0 Vertical Flip ID : 0x00001015, Type : Boolean, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 1, step size: 1 ], Default : 0 Power Line Frequency ID : 0x0000000d, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Disabled'[0], '50 Hz'[1], '60 Hz'[2], 'Auto'[3] }, Default : 1 Sharpness ID : 0x00000007, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ -100 .. 100, step size: 1 ], Default : 0 Color Effects ID : 0x0000101f, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'None'[0], 'Black & White'[1], 'Sepia'[2], 'Negative'[3], 'Emboss'[4], 'Sketch'[5], 'Sky Blue'[6], 'Grass Green'[7], 'Skin Whiten'[8], 'Vivid'[9], 'Aqua'[10], 'Art Freeze'[11], 'Silhouette'[12], 'Solarization'[13], 'Antique'[14], 'Set Cb/Cr'[15] }, Default : 0 Rotate ID : 0x00001022, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 360, step size: 90 ], Default : 0 Color Effects, CbCr ID : 0x0000102a, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 65535, step size: 1 ], Default : 32896 Video Bitrate Mode ID : 0x000030ce, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Variable Bitrate'[0], 'Constant Bitrate'[1] }, Default : 0 Video Bitrate ID : 0x000030cf, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 25000 .. 25000000, step size: 25000 ], Default : 10000000 Repeat Sequence Header ID : 0x000030e2, Type : Boolean, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 1, step size: 1 ], Default : 0 H264 I-Frame Period ID : 0x00003166, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 2147483647, step size: 1 ], Default : 60 H264 Level ID : 0x00003167, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { '1'[0], '1b'[1], '1.1'[2], '1.2'[3], '1.3'[4], '2'[5], '2.1'[6], '2.2'[7], '3'[8], '3.1'[9], '3.2'[10], '4'[11] }, Default : 11 H264 Profile ID : 0x0000316b, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Baseline'[0], 'Constrained Baseline'[1], 'Main'[2], 'High'[4] }, Default : 4 Auto Exposure ID : 0x0000000f, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Auto Mode'[0], 'Manual Mode'[1] }, Default : 0 Exposure Time, Absolute ID : 0x00000011, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 1 .. 10000, step size: 1 ], Default : 1000 Exposure, Dynamic Framerate ID : 0x00000010, Type : Boolean, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 1, step size: 1 ], Default : 0 White Balance, Auto & Preset ID : 0x00004014, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Manual'[0], 'Auto'[1], 'Incandescent'[2], 'Fluorescent'[3], 'Fluorescent H'[4], 'Horizon'[5], 'Daylight'[6], 'Flash'[7], 'Cloudy'[8], 'Shade'[9] }, Default : 1 Image Stabilization ID : 0x00004016, Type : Boolean, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 1, step size: 1 ], Default : 0 ISO Sensitivity, Auto ID : 0x00004018, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Manual'[0], 'Auto'[1] }, Default : 1 Exposure, Metering Mode ID : 0x00004019, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Average'[0], 'Center Weighted'[1], 'Spot'[2] }, Default : 0 Scene Mode ID : 0x0000401a, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'None'[0], 'Night'[8], 'Sports'[11] }, Default : 0
Lasst Euch nicht iritieren von den Fehlermeldungen.
Man kann erkennen das man die Rotation sowie Horizontaler bzw. Vertikaler Flip und auch viele andere Einstellungen angepasst werden können.Aber konzentrieren wir uns auf die Funktion Rotation:
Wir geben nun folgendes ein:
Et voila, das Bild hat sich um 90° gegen den Uhrzeigersinn gedreht.Ich hoffe ich konnte Euch/Dir damit helfen.