Durch Nutzung dieser Webseite stimmen Sie dem Einsatz von Cookies und Werbung zu. Weitere Informationen



KnowHow 11.7 ''Raspberry Webcam einrichten''
Stand: 18.05.2017 16:35:46

Inhalt | Suche | Homepage | Kontakt | Impressum

- Durch Anklicken im Inhaltsverzeichnis kann direkt zum Thema gesprungen werden.
- Begriffe auf dieser Seite können mit Ihrer Browser-Funktion ''Bearbeiten -> Suchen'' oder mit den Tasten [Strg]-[F] gesucht werden.
- Des weiteren gibt es noch eine Suchfunktion über alles.
- Es sind mehr Informationen verfügbar, als hier angegeben. Falls Sie etwas vermissen, scheuen Sie sich nicht nachzufragen, wir antworten gerne.




11.7.1 Raspberry Webcam einrichten

Hier wird mit Hilfe eines Linux Mint Systems eine Raspberry Webcam eingerichtet.



11.7.1.1 Geräte

- Raspberry Pi
- Raspberry Gehäuse
- Raspberry Kamera-Modul
- Zwei schnelle SD-Karte mit min. 4GB (eine davon als Backup)
- USB-WLAN (EDIMAX EW-7811UN Wireless USB Adapter)
- USB-Hub, falls der Raspberry nicht mehr als 2 USB-Anschlüsse hat
- Steckernetzteil Micro USB 5V 1200 mA für Raspberry Pi B und A Model
- USB-Tastatur zum Einrichten
- USB-Maus zum Eintrichten
- Monitor mit digitalem Anschlusskabel zum Einrichten
- Rechner mit Linux Mint und SD-Kartenleser



11.7.1.2 Betriebssystem auswählen und holen

Betriebssystem Image download:
-> http://www.raspberrypi.org/downloads/
  -> Raspbian
  -> http://downloads.raspberrypi.org/raspbian_latest
    => z.B. 2013-09-25-wheezy-raspbian.zip  (1,0 GB)

Datei in einen beliebigen Ordner auspacken
    => 2013-09-25-wheezy-raspbian.img  (3,3 GB)

selbst verwendete Images:
   2013-09-25-wheezy-raspbian   3,0 GB  -> funktioniert
   2015-02-16-raspbian-wheezy   3,3 GB
   2015-11-21-raspbian-jessie   3,9 GB  -> Problem (s.u.)

Problem mit 2015-11-21-raspbian-jessie:
Apache2 meldet beim Zugriff vom Browser auf das HTML-Verzeichnis ein Rechteproblem.
Dieses habe ich bis jetzt noch nicht lösen können.



11.7.1.3 SD-Karte vorbereiten

Auf dem laufenden Linux-PC

- SD-Karte in den SD-Karten einstecken und warten bis die Karte gemountet wurde
- Tool GParted aufrufen
- Das SD-Karten-Laufwerk auswählen (Achtung!! Nicht das falsche Laufwerk auswählen!!!)
- Die SD-Karte mit FAT32 formatieren
- Die SD-Karte aus Kartenleser entfernen und wieder einsetzen

- Terminal öffen
- Device-Namen im Terminal ermitteln:
df -h
  /dev/sdd1   (= Partition der Karte)

=> Device-Name = /dev/sdd

- Image auf der Karte installieren:
*** Achtung *** Bei falschem Device-Namen könnte auch die Festplatte gelöscht werden!!!!
sudo dd bs=4M if=<image> of=<device>

(Statt dd kann auch dcfldd mit Ausgabe genutzt werden)

Beispiel:
sudo dd bs=4M if=/home/bur/Downloads/2013-09-25-wheezy-raspbian.img of=/dev/sdd

dauert ca. 5 Min., dd gibt währenddessen keine Meldungen aus, die LED des Card Reader blinkt

  381+0 Datensätze ein
  381+0 Datensätze aus
  1598029824 Bytes (1,6 GB) kopiert, 124,363 s, 12,8 MB/s
  781+1 Datensätze ein
  781+1 Datensätze aus
  3276800000 Bytes (3,3 GB) kopiert, 271,021 s, 12,1 MB/s
  oder beim Media-Player:
  325+0 Datensätze ein
  325+0 Datensätze aus
  1363148800 Bytes (1,4 GB) kopiert, 100,817 s, 13,5 MB/s

- SD-Karte aus dem Kartenleser des Linux-PCs entfernen

  Die Installation auf der Karte ist erst nach neuem Einstecken sichtbar
  Es wurden 2 Partitionen angelegt:
  - Datenträger 2,9GB mit allen Verzeichnissen
  - boot mit allen Boot-Dateien



11.7.1.4 Raspberry Hardware montieren

- Raspberry in einem Gehäuse montieren
- Kamera-Modul aufstecken und montieren
- USB-WLAN anschließen
- Tastatur und Maus anschließen
- Monitor anschließen
- SD-Karte in Raspberry einsetzen



11.7.1.5 Raspberry Start

-Steckernetzteil am Raspberry anschließen und mit Stromnetz verbinden

  Der Raspberry startet mit blinkenden LEDs

- Im Konfigurations-Menü: Start mit grafischem Desktop auswählen
  oder Konfigurations-Menü später im Betrieb aufrufen: sudo raspi-config

- Systemsprache festlegen
sudo dpkg-reconfigure locales

- "de_DE.UTF-8" auswählen

- Tastatur festlegen:
sudo dpkg-reconfigure keyboard-configuration

- entsprechende Tastatur auswählen



11.7.1.6 Raspberry Konfiguration

Einstellungen:
Quelle: http://elinux.org/RPiconfig#Video_mode_options

- Terminal öffen

- Konfigurationsdatei anpassen:
sudo leafpad /boot/config.txt

Beispiel:
arm_freq=800
force_turbo=1
sdtv_mode=2    # PAL
sdtv_aspect=3  # 16:9
disable_overscan=1
gpu_mem=128
start_file=start_x.elf
fixup_file=fixup_x.dat



11.7.1.7 System Update

- System Update (für nachfolgende Installationen notwendig):
sudo apt-get update
sudo apt-get upgrade



11.7.1.8 Zeit setzen

- Profile öffnen
sudo leafpad /home/pi/.profile

- Folgende Zeile einfügen:
TZ='Europe/Berlin'; export TZ



11.7.1.9 Perl Module installieren

Perl ist in der Distribution enthalten

- LWP installieren (muss als Erstes gemacht werden):
sudo apt-get --assume-yes install libwww-perl

- Modul Grafik Library installieren:
sudo apt-get install libgd-graph-perl

(Kann im Perl Script wie folgt eingebunden werden: use GD;)

- Modul zum Laden von Internet-Seiten installieren:
use LWP::Simple qw ($ua head get);
$ua->timeout(30); # Timeout = 30 sec

(Timeout 180 sec laesst sich nur durch Nutzung und Vererbung von LWP::Useragent aendern)

Quellen:
http://www.raspberrypi.org/forums/viewtopic.php?f=34&t=15020



11.7.1.10 Perl Email installieren

- In der CPAN Shell die Bibliothek Net::SMTP::SSL installieren:
sudo perl -MCPAN -e shell
cpan> install Net::SMTP::SSL

(Kann im Perl Script wie folgt eingebunden werden: use Net::SMTP::SSL;)



11.7.1.11 Samba Server einrichten

http://jankarres.de/2013/11/raspberry-pi-samba-server-installieren/

- Samba Server installieren:
sudo apt-get install samba
sudo apt-get install samba-common-bin


-- Verzeichnis "/media" freigeben:
sudo leafpad /etc/samba/smb.conf

- gewünschter Inhalt:
[global]
workgroup = smb
security = share
share modes = yes
 
[homes]
comment = Home Directories
browsable = no
read only = no
create mode = 0750
 
[public]
path = /media/storage/
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes


- Datei Speichern und Editor schließen


- Samba Password setzen:
sudo smbpasswd -a pi

- Rechte setzen:
sudo chown -R pi:pi /media

- Samba starten
sudo /etc/init.d/samba restart

- Freigabe für /media/storage einrichten

- Zugriff auf das Raspberry Samba-Verzeichnis im Netzwerk:
smb://raspberrypi/public/



11.7.2 Apache Server einrichten

- Apache Server installieren:
sudo apt-get install apache2
-> /var/www

- Konfigurationsdatei /etc/apache2/ports.conf anpassen:
sudo leafpad /etc/apache2/ports.conf

- Folgendes:
NameVirtualHost *:80
Listen 80

- ändern zu:
NameVirtualHost *:8070
Listen 8070


Beispiel Webzugriff intern:
http://192.168.178.28:8070/
http://raspberrypi:8070/

Beispiel Webzugriff extern:
http://talky.selfhost.eu:8070



11.7.2.1 Apache-Server für Perl-CGI-Script (cgi-bin) einrichten

Quelle: http://perlmaven.com/perl-cgi-script-with-apache2

- Konfigurations-Datei öffnen:
sudo leafpad /etc/apache2/sites-enabled/000-default.conf

- Inhalt (ohne Kommentarzeilen):
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

- Folgendes hinter "DocumentRoot /var/www/html" in der Datei eintragen:
    ScriptAlias /cgi-bin/ /media/storage/www/cgi-bin/
    <Directory "/media/storage/www/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Require all granted
    </Directory>
(Das Verzeichnis "/media/storage/www/cgi-bin" kann beleibig gewählt werden)

Der Port <VirtualHost *:80> muss dem definierten in /etc/apache2/ports.conf entsprechen!

- Default-mäßig ist bei Apache das CGI-Module nicht enabled.
  Dieses kann man daran erkennen, dass das Verzeichnis "mods-enabled" keine cgi-Dateien enthält:
ls -l /etc/apache2/mods-enabled/ | grep cgi
ls -l /etc/apache2/mods-available/ | grep cgi
-rw-r--r-- 1 root root   115 Jul 20  2013 cgid.conf
-rw-r--r-- 1 root root    60 Jul 20  2013 cgid.load
-rw-r--r-- 1 root root    58 Jul 20  2013 cgi.load
-rw-r--r-- 1 root root    89 Jul 20  2013 proxy_fcgi.load
-rw-r--r-- 1 root root    89 Jul 20  2013 proxy_scgi.load

- Zum Aktivieren erzeugt man symbolische Links für die zwei cgid-Dateien:
sudo ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/
sudo ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/

- Danach kann man nochmal prüfen:
ls -l /etc/apache2/mods-enabled/ | grep cgi
lrwxrwxrwx 1 root root 37 Mar 19 14:39 cgid.conf -> /etc/apache2/mods-available/cgid.conf
lrwxrwxrwx 1 root root 37 Mar 19 14:39 cgid.load -> /etc/apache2/mods-available/cgid.load

- Jetzt den Apache-Server neu laden, damit er die neue Konfiguration erhält:
sudo service apache2 reload

- Eventuell ist Folgendes noch nötig:
sudo a2enmod cgi
sudo service apache2 restart

Andere Quellen:
http://forum.ubuntuusers.de/topic/bekomme-mit-apache2-kein-cgi-zum-laufen/
http://httpd.apache.org/docs/2.4/mod/core.html#servername
http://askubuntu.com/questions/403067/cgi-bin-not-work



11.7.2.2 Server Probleme

Perl-CGI-Script läuft nicht

Fehler-Hinweise in /var/log/apache2/error.log

Fehler "Bad header=* failed to open vchiq instanc"
bei Perl-CGI-Script mit system("raspistill -o webcam.jpg ");


Lösung:
sudo chgrp -R pi /media/storage/www
sudo chown -R pi /media/storage
sudo chmod -R 777 /media/storage
(sudo chmod -R 0755 /media/storage)

sudo chmod o+rwx /dev/vchiq
-> Für Perl-CGI-Script mit system("raspistill -o webcam.jpg ") bei jedem Neustart nötig!
   In /var/log/apache2/error.log tritt sonst folgender Fehler auf: "Bad header=* failed to open vchiq instanc"


Remote mit Perl-Script über Samba-Server ausführbar:
system("cp /var/log/apache2/error.log /media/storage/error.log ");
system("sudo chgrp -R pi /media/storage/www ");
system("sudo chown -R pi /media/storage ");
system("sudo chmod -R 777 /media/storage ");
system("sudo chmod o+rwx /dev/vchiq ");

Quellen:
http://www.raspberrypi.org/forums/viewtopic.php?f=32&t=87886
http://www.perlmonks.org/bare/?node_id=367605



11.7.2.3 Remote Zugriff mit SSH

- SSH auf dem Raspberry aktivieren:
sudo raspi-config
  -> Avanced Options -> SSH
  SSH auswählen und enablen

- oder bei älterer Version:
sudo apt-get install ssh
sudo /etc/init.d/ssh start
-> Starting OpenBSD Secure Shell server: sshd.

- oder automatisch starten lassen:
sudo update-rc.d ssh defaults


- Port 22 für SSH auf der Fritzbox freigeben

- IP-Adresse des Raspberry ermitteln:
ifconfig
z.B.: 192.168.178.22

- Auf dem Linux Remote-Rechner eine SSH-Verbindung aufbauen:
ssh pi@192.168.178.22
Password: raspberry (oder raspberrz bei englicher Einstellung), oder eigenes Password


-> Mögliches Problem: "Connection closed by 192.168.178.22"
   Lösung:
   ssh ist nicht getartet:
   sudo /etc/init.d/ssh start  (temporär starten)
   sudo update-rc.d ssh defaults  (automatisch starten)

-> Mögliches Problem: "Read from socket failed: Connection reset by peer"
  Lösung:
  http://www.raspberrypi.org/forums/viewtopic.php?f=27&t=15814
  sudo rm /etc/ssh/ssh_host_*
  sudo dpkg-reconfigure openssh-server
  ps aux | grep sshd
  Light-ssh-Verbindung versuchen:
  sshd pi@192.168.178.22
  hierzu ist "sudo apt-get install openssh-server" nötig

-> Mögliches Problem: "Permission denied"
  ssh pi@192.168.178.22
  -> pi@192.168.178.22's password:
  -> Permission denied, please try again.

  Lösung:
  - falsches Password, vielleicht wurde das Password neu gesetzt?

  andere Lösungsversuche:
  http://www.forum-raspberrypi.de/Thread-ssh-verbindung-auf-den-pi
  ssh -vvv pi@IPDerPI
    debug3: packet_send2: adding 64 (len 56 padlen 8 extra_pad 64)
    debug2: we sent a password packet, wait for reply
    debug1: Authentications that can continue: publickey,password
    Permission denied, please try again.
  telnet 192.168.178.28 22
    Trying 192.168.178.28...
    Connected to 192.168.178.28.
    Escape character is '^]'.
    SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u1

   http://www.forum-raspberrypi.de/Thread-ssh-verbindung-auf-den-pi
   ssh -vvv pi@192.168.178.28   (-> mit Debug-Info)
   Password: raspberry
     debug3: packet_send2: adding 64 (len 56 padlen 8 extra_pad 64)
     debug2: we sent a password packet, wait for reply
     debug1: Authentications that can continue: publickey,password
     Permission denied, please try again.

Eigene Ideen:
- Port 22 für SSH auf der Fritzbox freigeben?
- SSH vielleicht nicht über WLAN möglich?
  -> http://raspberrypi.stackexchange.com/questions/10035/cannot-connect-to-raspi-by-ssh-with-wifi-interface-only
  /etc/ssh/sshd_config

Quellen:
http://raspberrypiguide.de/howtos/ssh-zugriff-unter-raspbian-einrichten/
http://www.forum-raspberrypi.de/Thread-ssh-verbindung-auf-den-pi
http://www.youtube.com/watch?v=MXi-Tk1Wbpc
http://raspberrypi.stackexchange.com/questions/10035/cannot-connect-to-raspi-by-ssh-with-wifi-interface-only
http://www.raspberrypi.org/forums/viewtopic.php?f=27&t=15814
http://raspberrypi.stackexchange.com/questions/7112/ssh-not-working
http://askubuntu.com/questions/205179/ssh-problem-read-from-socket-failed-connection-reset-by-peer



11.7.2.4 Remote Desktop

- Remote Desktop Protocols für Linux auf dem Raspberry installieren:
sudo apt-get install xrdp
sudo /etc/init.d/xrdp restart
  [ ok ] Stopping RDP Session manager : sesman xrdp.
  [ ok ] Starting Remote Desktop Protocol server : xrdp sesman.


Konfigurations-Dateien:
/etc/xrdp/xrdp.ini
/etc/xrdp/sesman.ini

- Client Software Rdesktop auf dem Remote-Linux-Rechner:
sudo apt-get install rdesktop

- Verbindung mit IP-Adresse des Raspberry aufbauen:
rdesktop -u pi -p raspberry 192.168.178.22
User: pi, Password: raspberry (oder anderes)


Mögliches Problem:
  connecting to sessman ip 127.0.0.1 port 3350
  sesman connect ok
  sending login info to sesman
  xrdp_mm_process_login_response: login failed
-> http://linuxtoolkit.blogspot.de/2013/03/xrdpmmprocessloginresponse-login-failed.html

-> http://wiki.ubuntuusers.de/rdesktop
   angeblich nur für Windows Slave-Rechner
   für Linux -> http://www.xrdp.org/

Quellen:
http://jankarres.de/2014/02/raspberry-pi-remote-desktop-installieren/
http://wiki.ubuntuusers.de/rdesktop
http://www.rdesktop.org/



11.7.2.5 Script für Webcam-Steuerung

Hier wird ein ständig laufendes Perl-Script eingesetzt, um die Webcam periodisch abzurufen
und ein Bild auf der Webseite bereit zu stellen:
/media/storage/schedulerpi.pl

Die Programmierung bleibt jedem selbst überlassen.
Ich verwende hier eine eigene spezielle Lösung für meine Bedürfnisse.


=== Verwendbare Befehle

- Webcam-Foto erzeugen und im Raspberry abspeichern:
system("raspistill -n -w 1280 -h 960 -q 10 -sh 80 -co 20 -br 50 -sa -30 -ex auto -awb horizon -o $pathwww/webcam.jpg ");



11.7.2.6 Autostart eines Scripts

Automatischer Start von Anwendungen nach dem Einschalten.

- Datei autostart editieren:
cd /etc/xdg/lxsession/LXDE
(alt: cd ~/.config/lxsession/LXDE )
sudo leafpad autostart

- Z.B. folgendes eigenes Tool eintragen:
@perl /media/storage/schedulerpi.pl

http://www.raspberrypi-spy.co.uk/2014/05/how-to-autostart-apps-in-rasbian-lxde-desktop/



11.7.2.7 Raspberry-Pi-Image sichern und kopieren

Raspberry-Pi-Image unter Linux sichern

- Die zu sichernde SD-Karte des Raspberry in den Kartenleser einstecken

- Terminal öffnen

- Device-ID ermitteln (mit Ausgabe-Beispiel):
bur@Axel ~ $ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   1,8T  0 disk
  sda1   8:1    0  97,7G  0 part
  sda2   8:2    0  97,7G  0 part /
  sda3   8:3    0   9,8G  0 part [SWAP]
  sda4   8:4    0   1,6T  0 part /media/d
sdd      8:48   1   7,4G  0 disk
  sdd1   8:49   1   1,2G  0 part
  sdd2   8:50   1     1K  0 part
  sdd3   8:51   1    32M  0 part /media/bur/SETTINGS
  sdd5   8:53   1    60M  0 part /media/bur/BOOT
  sdd6   8:54   1     6G  0 part /media/bur/root
sr0     11:0    1  1024M  0 rom  

- Hier ist die Device-ID "/dev/sdd"

- SD-Karte auslesen und eine Image-Datei "~/raspberry-pi.img" erzeugen, z.B.:
bur@Axel ~ $ sudo dd if=/dev/sdd of=~/raspberry-pi.img

- Das Lesen dauert eine Weile, dann kommt z.B. folgende Ausgabe:
15398912+0 Datensätze ein
15398912+0 Datensätze aus
7884242944 Bytes (7,9 GB) kopiert, 412,869 s, 19,1 MB/s

- Die SD-Karte aus dem Kartenleser entfernen

- Eine zweite leere SD-Karte (sollte mindestens genauso viel Speicherplatz haben) in den Kartenleser einstecken

- Device-ID ermitteln (mit Ausgabe-Beispiel):
bur@Axel ~ $ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   1,8T  0 disk
  sda1   8:1    0  97,7G  0 part
  sda2   8:2    0  97,7G  0 part /
  sda3   8:3    0   9,8G  0 part [SWAP]
  sda4   8:4    0   1,6T  0 part /media/d
sdd      8:48   1  14,9G  0 disk
  sdd1   8:49   1  14,9G  0 part /media/bur/3330-6133
sr0     11:0    1  1024M  0 rom  
Hier ist die Device-ID "/dev/sdd"

- SD-Karte mit der Image-Datei "~/raspberry-pi.img" beschreiben, z.B.:
*** ACHTUNG *** Hier ist die richtige Device-ID bei "of=" sehr wichtig,
                bei falscher Eingabe kann auch eine Festplatte gelöscht werden!!!
bur@Axel ~ $ sudo dd if=~/raspberry-pi.img of=/dev/sdd

- Das Schreiben dauert etwas länger, dann kommt z.B. folgende Ausgabe:
15398912+0 Datensätze ein
15398912+0 Datensätze aus
7884242944 Bytes (7,9 GB) kopiert, 1578,15 s, 5,0 MB/s


Mit Gparted kann man noch die Größe jeder Partition ohne Datenverluste ändern.

http://linuxundich.de/raspberry-pi/linux-images-fuer-den-raspberry-pi-auf-sd-karte-installieren/


Besucher seit 30.01.2003:

© 2013 Burgermeister  | Home | Main Server | Mirror Server | Kontakt | Impressum | Datenschutz