Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:geckocam

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
computer:geckocam [2010/06/08 10:57] – christiancomputer:geckocam [2010/06/18 13:10] (aktuell) – gelöscht christian
Zeile 1: Zeile 1:
-<note tip>**Hinweis:** Dieser Artikel ist veraltet und wird nicht mehr aktualisiert.</note> 
  
-{{ :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. 
- 
-Seit Anfang 2010 betreibe ich die Geckocam nicht mehr. 
- 
-======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.1275987466.txt.gz · Zuletzt geändert: von christian