Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:geckocam

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:geckocam [2010/06/08 10:16]
christian angelegt
— (aktuell)
Zeile 1: Zeile 1:
-{{ :​computer:​Geckocam_Logo.jpg?​200|Geckocam-Logo}} 
  
-Die Geckocam ist ein Applikation in meinem Netzwerk, welche unsere beiden Leopardgeckos //Lilly// und //Luna// in periodischen Abständen fotografiert und diese Fotos mittels einem Webserver der Öffentlichkeit zugänglich macht. 
- 
-======Bestandteile====== 
- 
-{{ :​computer:​Geckocam_Grafik.jpg?​75|Bestandteile der Geckocam}} 
- 
-Geckocam besteht aus verschiedenen Bestandteilen:​ 
- 
-  * ausrangierte Logitech Quickcam Express Plus 
-  * IBM NetVista 2800 8364-EXX Thin-Client mit installiertem //Debian Lenny// und dem Tool //​fswebcam//​ 
-  * Webserver mit NFS-Unterstützung 
-  * ...und natürlich dem Terrarium. :-) 
- 
-======Funktionsweise====== 
- 
-In periodischen Abständen (//30 Sekunden//) wird ein neues Bild über das Tool **fswebcam** erfasst. Dieses Tool kann das Bild noch bearbeiten (//drehen, spiegeln, Helligkeit/​Kontrast modifizieren,​...//​) und auch (//​Unter-//​)Titel und die aktuelle Uhrzeit hinzufügen. Das hat den schönen Effekt, dass man immer sehen kann, wie aktuell oder nicht-aktuell ein Bild ist. 
- 
-Dieses Bild wird dann auf den Webserver übertragen,​ wo es von jedermann eingesehen werden kann. 
- 
-=====Web-Oberfläche===== 
- 
-{{ :​computer:​Geckocam_Webfrontend.jpg?​200|Webfrontend der Geckocam}} 
-{{ :​computer:​Geckocam_Webfrontend_Statistiken.jpg?​200|Statistikenansicht}} 
- 
-Um die Betrachtung zu erleichtern,​ werden die Bilder in einer HTML-Seite angezeigt. Mittels einem Meta-Tag wird diese Seite alle 30 Sekunden neu geladen, so wird also immer ein neues Bild angezeigt. 
- 
-Die ganze Ausgabe erfolgt über ein PHP-Skript, welches auch Statistiken über die eigens entwickelte **MisTasc**-Engine pflegt. Gespeichert werden folgende Informationen:​ 
- 
-  * Datum und Zeit des Zugriffs 
-  * IP-Adresse 
-  * Webbrowser 
-  * Sprache/​Land 
- 
-So kann ich sehen, wie stark die Nutzung der Geckocam ist. Natürlich werden auch Statistiken veröffentlicht. 
- 
-======Hardware-Teil====== 
- 
-Die Geckocam besteht aus diversen Hardware-Bausteinen,​ welche im Folegenden erklärt werden. 
- 
-=====Thin-Client===== 
- 
-Für die Geckocam wird ein etwas älterer **IBM NetVista 8364-EXX** mit folgender Hardwarekonfiguration verwendet: 
- 
-  * Intel Pentium MMX Prozessor mit **266 Mhz** 
-  * **192 MB** Arbeitsspeicher (//SDRAM PC-100//) 
-  * **4 GB** Compact Flash-Speicherkarte als stromsparender Festplattenersatz 
-  * 2x RS232- und 2x USB 1.1-Ports 
-  * LPT, Onboard Sound und Lautsprecher 
-  * VGA-Grafikkarte ​ 
- 
-Der Thin-Client wird neben der Geckocam auch als Pseudo-Bouncer für IRC und Jabber/ICQ verwendet. Die Rechenleistung reicht für diese Aufgaben aus. 
- 
- 
-=====Webcam-Umbau===== 
- 
-{{ :​computer:​Webcam_LEDs.jpg?​200|Die Platine der geöffneten Webcam}} 
- 
-In diesem Zusammenhang,​ zwei Fakten: 
- 
-  *//Geckos können nicht in vollkommener Dunkelheit sehen, sie benötigen eine schwache Lichtquelle//​ 
-  *//Die Webcam benötigt Licht, um brauchbare Ergebnisse zu erzielen// 
- 
-Das dachte ich, wäre möglich zu kombinieren. 
- 
-In der Logitech-Webcam ist eine SMD-LED verbaut, welche unter Windows dann leuchtet, wenn die Webcam benutzt wird. Unter Linux leuchtet diese LED permanent. Diese LED könnte man durch eine hellere SMD-LED ersetzen. 
- 
-Zum anderen bestünde die Möglichkeit am USB-Port eine weitere LED an den Plus-/​Minuspol anzubringen. 
- 
-Wegen mangelnder Widerstände kann ich das derzeit nicht durchführen,​ wird aber ein andermal nachgeholt. 
- 
-======Software-Teil====== 
- 
-Die Geckocam besteht aus diversen Open-Source Softwarepaketen,​ welche im Folgenden erläutert werden. 
- 
-=====Debian Lenny===== 
- 
-{{ :​computer:​Geckocam_Installation.jpg?​200|Installation von Debian Lenny}} 
- 
-Als Betriebssystem kommt das freie Linux-Derivat **Debian GNU/Linux** zum Einsatz. Zuvor habe ich für dieses Projekt mit **CRUX Linux** mein Glück versucht. Allerdings scheiterte ich hier an der Anbindung der Webcam und hatte auch mit den Umlauten meine Probleme (siehe http://​blog.christian-stankowic.org/?​p=1254). 
- 
-Debian verfügt über eine hervorragende Treiber-Unterstützung,​ auch für die angestaubte **i486**-Architektur. Die meisten Linux-Distributionen unterstützen diese Architektur nicht einmal mehr. 
- 
-Installiert wurde ein einfaches Debian-System,​ ohne jegliche Anwendersoftware - verwendet wurde hier für die **Netinstall-CD**. 
- 
-Nach der Grundinstallationen wurden noch einige weitere Anwendungen installiert:​ 
- 
-  * **openssh-server** - //für administrative Fernzugriffe//​ 
-  * **nfs-common** - //NFS Client-Anbindung//​ 
- 
-=====Webcam-Unterstützung===== 
- 
-Im Debian-Repo gibt es für Webcams **mit GSPCA(2)**-Chipsatz einen passenden Treiber. Für die **Logitech QuickCam Express Plus** wird genau dieser Treiber benötigt: 
- 
-<​code>​ # apt-get install gspca-modules-2.6.26-2-486</​code>​ 
- 
-Über den **Video4Linux**-Stack kann die Webcam nun angesprochen werden, eventuell ist es notwendig, folgenden Eintrag in die **/​etc/​modules** einzutragen:​ 
- 
-<​code>​ gspca</​code>​ 
- 
-=====fswebcam===== 
- 
-{{ :​computer:​Geckocam.jpg?​200|Testbild der Geckocam}} 
- 
-Auf der Webseite des fswebcam-Projekts gibt es neben dem Quellcode auch ein vorkompiliertes Debian-Paket. Dieses kann einfach herunterladen und installiert werden: 
- 
-<​code>​ wget http://​www.firestorm.cx/​fswebcam/​files/​fswebcam_20070108-1_i386.deb 
- dpkg -i fswebcam_20070108-1_i386.deb</​code>​ 
- 
-Für das Tool selbst kann eine Konfigurationsdatei angelegt werden - das hat den Vorteil, dass man nicht alle Parameter anhängen muss. Somit bleibt das Ganze relativ übersichtlich. 
- 
-Meine Konfigurationsdatei sieht wie folgt aus: 
- 
-<​code>​ # Webcam grabbing configuration for fswebcam 
- # Camera: Logitech QuickCam Express Plus 
- # 
- # (c) 2010 by Christian Stankowic <​webmaster@christian-stankowic.org>​ 
- # http://​wiki.christian-stankowic.org/​ 
- # 
-  
- #​Geraet und Aufloesung definieren 
- ​device v4l1:/​dev/​video0 
- ​resolution 352x288 
-  
- #Bild auf 640x480 vergroessern 
- scale 640x480 
-  
- #Alle 30 Sekunden ein neues Bild 
- loop 30 
-  
- #20 Frames auslassen, damit die Kamera richtig fokussieren kann 
- skip 20 
-  
- #​Optionales 
- #set brightness=60% 
- #set contrast=50% 
-  
- #Bild spiegeln und drehen (Decken-Montage) 
- flip h,v 
-  
- #​keine Ausgaben zeigen und Programm als Daemon benutzen 
- quiet 
- ​background 
-  
- #​Banner-Definieren 
- ​banner-colour #FF000000 
- ​line-colour #663300 
- ​underlay background.png 
-  
- ​top-banner 
- font /​usr/​share/​fonts/​truetype/​msttcorefonts/​arial.ttf:​16 
- ​no-shadow 
- title "​Geckocam"​ 
- ​subtitle "​...Lilly und Luna. :)" 
- ​timestamp "Bild vom %d.%m.%Y um %H:%M:%S (%Z)" 
-  
- #Bild als JPG 90% speichern 
- jpeg 90 
- save webcam.jpg 
-  
- #​Befehl der nach dem Speichern ausgeführt wird (bei SSH/​SCP-Verfahren) 
- #exec "scp /​home/​webcam/​webcam.jpg benutzer@webserver:/​pfad/​webcam.jpg"</​code>​ 
- 
-Um nun fswebcam als Daemon zu benutzen reicht ein: 
- 
-<​code>​ $ fswebcam --conf fswebcam.conf</​code>​ 
- 
-=====NFS-Anbindung===== 
- 
-Um die erfassten Bilder vom Thin-Client auf den Webserver zur Publizierung zu übertragen gibt es hier zwei Möglichkeiten:​ 
- 
-Um dies zu erledigen gibt es zwei Möglichkeiten:​ 
- 
- 
- 
-=====Lösungsansatz 1: SSH/​SCP===== 
- 
-Man könnte nach dem Erstellen des Fotos die Datei mittels SSH/SCP auf den Webserver übertragen. Dafür müsste ein Zertifikat erstellt und auf den Webserver übertragen werden: 
- 
-<​code>​ $ ssh-keygen -t rsa 
- $ ssh-copy-id -i ~/​.ssh/​id_rsa.pub benutzer@webserver</​code>​ 
- 
-Das hat allerdings einen schwerwiegenden Nachteil: die interne Flash-Speicherkarte des Thin-Clients wird belastet, da die Bilder erst auf dieser zwischengespeichert werden, bevor sie auf den Webserver übertragen werden. 
- 
-**Und genau hier liegt das Problem**. Speicherkarten haben gegenüber herkömmlichen Festplatten den bedeuteten Nachteil, dass die Anzahl der Lese-/​Speicherzugriffe beschränkt sind. Wenn diese Anzahl der Zugriffe erschöpft sind, ist die Karte defekt und kann nicht mehr benutzt werden. 
- 
-Wenn man mal überlegt, dass bei dieser Methode schon jede Minute 4 Zugriffe erfolgen, nämlich für das (//​Über-//​)Schreiben und Auslesen des Bildes zur Übertragung mittels SSH/SCP, wird klar, dass das keine gute Lösung ist. 
- 
-Rechnet man das mal für eine Woche durch, kommt man auf rund **40.320** Zugriffe - ob das die Karte lange durchmacht? :-) 
- 
-Weitere Informationen zu (//​non-//​)Journaling-Dateisystemen auf Speicherkarten/​SSDs gibt es [[Journaling-Dateisystem|hier]]. 
- 
- 
- 
-=====Lösungsansatz 2: NFS===== 
- 
-Viel durchdachter und sinnvoller ist es, den Home-Ordner des Webcam-Benutzers mittels NFS auszulagern. Sämtliche Speicher- und Lesezugriffe erfolgen dann nicht auf der Speicherkarte sondern auf dem NFS-Server. Hierzu wird auf dem Webserver einfach ein Ordner für den Benutzer angelegt und ein entsprechendes Recht in der NFS-Konfigurationsdatei **/​etc/​exports** gesetzt: 
- 
-<​code>​ /​var/​www/​gecko ​      ​192.***/​255.255.255.0(rw,​async)</​code>​ 
- 
-Anschließend werden die Rechte des NFS-Servers neu geladen: 
- 
-<​code>​ # exportfs -ra</​code>​ 
- 
-Auf dem Thin-Client wird in der **/​etc/​fstab** der Home-Order des Webcam-Benutzers einfach mittels NFS gemountet: 
- 
-<​code>​ 192.***:/​var/​www/​gecko/​ /​home/​fswebcam nfs defaults 0 0 </​code>​ 
- 
-**Hinweis:​** Damit der Beuntzer Rechte auf dem Server hat, müssen die beiden angelegten Benutzer auf dem Client und Server die selbe **UID** haben! Falls dies nicht der Fall ist, muss dies ggf. mit dem Befehl **usermod** implementiert werden. 
- 
- 
-Sämtliche Lese-/​Schreibezugriffe erfolgen nach diesen wenigen Schritten nicht mehr auf der Speicherkarte sondern auf dem Webserver. 
- 
-======Internet-Verweise====== 
-  * Webseite des **fswebcam**-Projekts:​ http://​www.firestorm.cx/​fswebcam/​ 
-  * Artikel über NFS-Freigaben:​ http://​wiki.ubuntuusers.de/​NFS 
computer/geckocam.1275984986.txt.gz · Zuletzt geändert: 2010/06/08 10:16 von christian