Einbinden der Wetterdaten der Davis Vantage Pro2 in das Webcam-Bild der Mobotix M25 (HD-Cam)

Als Ergänzung zu meiner Wetterstation Vantage Pro2 von Davis Instruments sind seit Januar 2014 zwei Full-HD Cams vom Typ M25 im Einsatz.

Die Wahl auf die Kameras aus dem Hause Mobotix fiel aus folgenden Gründen:

  1. hohe Auflösung und gute Restlichtempfindlichkeit
  2. Outdoor Kamera (IP65)
  3. PoE Versorgung der Kamera
  4. Integrations-/Anzeige-Möglichkeit von Wetterdaten

Der Standort der Wetterstation wie auch der Kameras sind auf der OpenStreetMap Karte eingetragen. Die eine Kamera ist 'gen westlichen Himmel (Blickrichtung Landsham/München) und die andere 'gen östlichen Himmel (Blickrichtung Gelting/Markt Schwaben) ausgerichtet. Die aktuellen Livebilder sind über die folgende URL bzw in der Full-HD Auflösung hier erreichbar.

Im ersten Konfigurationsbeispiel nutzen wir die vorhandenen Möglichkeiten der Mobotix-Kamera, genauer gesagt, die Möglichkeit der Einblendung von Netzwerkmeldungen in das Kamerabild.

Bildausschnitt einer Texteinblendung

Netzwerkmeldungen definieren

Zur Aktivierung der Netzwerkmeldungen rufen wir die Konfigurationsseite der Kamera unter der folgenden URL auf:

https://{IP-der-Kamera}/control/text

Die Variable {IP-der-Kamera} ersetzen wir entweder mit der IP-Adresse oder dem FQDN unserer Kamera.

 $ firefox https://{IP-der-Kamera}/control/text

Im Setup-Menü - Darstellungs- und Texteinstellungen definieren wir nun einen Bereich, der für die spätere Texteinblendung genutzt werden soll.

Bild des Einstellungsmenüs für die Darstellungs- und Texteinstellungen

Die erste Option ist selbsterklärend - wir setzen diese auf Ein, da wir die Wetterdaten ja eingefügt haben wollen.

Die beiden Nächsten Optionen Textfarbe und Hintergrundfarbe wählen wir entsprechend unseren Wünschen an. In dem gezeigtem Beispiel ist das weiß auf schwarz.

Die Option Deckkraft des Hintergrunds regelt, ob und ggf. wie stark das Bild von dem eingestelltem Text in den Hintergrund gesetzt wird. Der Wert Transparent bewirkt, dass der engestellte Text, transparent über das Kamerabild gelegt wird.

Der nächste Konfigurationspunkt Datum und Uhrzeit, definiert, wie unsd im welchen Format das Datum rechts oben im Bild eingefügt werden soll.

Im nächsten Konfigurationswert/Textfeld Kommentar fürgen wir nun folgende zwei Zeilen ein:

Name und Beschreibung der Webcam
^S7

Die erste Zeile benötigt keiner großen Erklärung, sie steht für die Stationsbeschreibung. Mit dem Platzhalter ^S7 definieren wir nun einen Bereich von 7 Zeilen, in denen die späteren Wetterdaten, die die Kamera via Netzwerkmeldungen erhalten soll, eingeblendet werden.

Nachrichtenereignis definieren

Zur Definition eines eigenen Ereignisses rufen wir die Konfigurationsseite der Kamera unter der folgenden URL auf:

https://{IP-der-Kamera}/control/events

Bild des Einstellungsmenüs für die Ereignisse

Unserem Nachrichtenereignis Netzwerkmeldung geben wir einen passenden Namen und klicken auf die Schaltfläche [Bearbeiten…].

Bild des Einstellungsmenüs für die Nachrichtenereignisse

Der Konfigurationswert Port legt fest, auf welcher Port-Nummer die Kamera die Nachricht erwartet, sprich an welchen Port wir später die Nachricht schicken müssen.

Den Defaultwert von 5 Sekunden beim Punkt Ereignistotzeitdefiniert, wieviel Zeit zwischen den einzelnen Textnachrichten vergehen müssen. Da wir die Wetterdaten nur alle Minuten aktualisieren wollen, reicht die Totzeit von 5 Sekunden allemal aus.

Die nächsten drei Optionen Vergleichsmodus, Groß/Kleinschreibung ignorieren und Meldung übergehen wird, da wir keinen Text- oder Mustervergleich vornehmen wollen und werden.

Beim Punkt Sender geben wir entweder die IP-Adresse oder den FQDN unseres Netzwerkhosts an, von dem aus die Wetterdateninformationen an die Mobotix-Kamera geschickt werden wird.

Dies ist insofern wichtig, da wir ja nicht wollen, dass Leute aus unserem eigenen Netzwerk plötzlich irgendwelche unsinnigen Textnachrichten in Richtung Kamera schicken!

Scharfschalten der Kamera(einstellungen)

Damit unsere Textnachrichten auch wirklich in das Kamerabild eingefügt werden können,müssen wir die Kamera(einstellungen) noch scharf schalten.

Wir rufen hierzu die folgende Adresse auf:

 $ firefox https://{IP-der-Kamera}/control/settings

Bild des Menüpunktes Allgemeine Ereigniseinstellungen

Bei der Konfigurationsoption Scharfschaltung wählen wir Aktiviert aus, da sonst die Nachrichten nicht übernommen werden.

Sichern der aktuellen Konfiguration

Zum Schluß sichern wir dann unsere aktuelle Konfiguration in den permanenten Speicher der Kamera:

 $ firefox https://{IP-der-Kamera}/admin/saveconfig

Bild des Menüpunktes Konfiguration permanent sichern

Die Konfiguration der Mobotix-Webcam ist somit abgeschlossen und wir fahren mit der Aufbereitung der erfassten Wetterdaten fort.

Mit Hilfe der HTML-Engine htmlgend unserer wview-Installation lassen wir uns einfach die gewünschten Messdaten in eine Textdatei schreiben, die wir dann später in die M25 „schieben“ und anzeigen lassen.

Bildausschnitt einer Texteinblendung

Diese Textdatei schreibt und dann alle 60 Sekunden der wview-Daemon in unseren Pfad auf unserem Webserver und hat in dem obigen Beispiel folgende Daten:

10.8°C  bei 71% Feuchte
1018.8 hPa Tendenz +
Solarstrahlung: 5 W/m^2  -  UV-Index: 0.0
0 km/h aus ONO mit max. 11.3 km/h
Regen: 0.0 mm  bei 0.0 mm / Std.
Wolkenuntergrenze: 631 m

Die für die Generierung der Wetterdaten zugehörige Vorgabedatei m25-display.htx im Konfigurationsverzeichnis /usr/local/etc/wview/html/ hat hier folgenden Inhalt:

/usr/local/etc/wview/html/m25-display.htx
<!--outsideTemp-->°C  bei <!--outsideHumidity-->% Feuchte
<!--barometer-->hPa Tendenz <!--baromtrend-->
Solarstrahlung: <!--solarRad--> W/m^2  -  UV-Index: <!--UV-->
<!--windSpeed--> km/h aus <!--windDirectionDegrees-->° mit max. <!--hiWindSpeed--> km/h
Regen: <!--dailyRainMM--> mm  bei <!--rainRate--> mm / Std.
Wolkenuntergrenze: <!--cumulusBase--> m

Wir legen uns also eine Datei mit obigem Inhalt an:

 $ vim /usr/local/etc/wview/html/m25-display.htx

Damit der wview-Daemon diese Datei auch alle 60 Sekunden erzeugt, tragen wir unsere /etc/wview/html-templates.conf die benötigte Konfiguration ein.

 # vim /usr/local/etc/wview/html-templates.conf
###############################################################################                                                                                             
### Mobotix Texteinblendungsvorlage                                                                                                                                         
###############################################################################
m25-display.htx

Anschließend starten wir den wview-daemon einmal durch, damit die Änderungen aktiviert und alle 60 Sekunden die Datei mit den Texteinblendungen aktualisiert werden können.

 # service wview stop
 # service wview start

Damit nun die Wetterdaten unserer Wetterstation im Bild der Kamera eingeblendet werden können, ist es notwendig den Inhalt der erstellten Datei /usr/local/var/wview/img/m25-display.htm via TCP zum vorher definierten Port unserer Mobotix-Kamera zu schicken.

 $ cat /usr/local/var/wview/img/m25-display.htm  >/dev/tcp/{IP-der-Kamera}/{Port}

Für die automatisierte Aktualisierung unserer Wetterdaten im WEB-Cam-Bild bedienen wir uns nun eines einfachen Shell-Scriptes, welches wir im /bin Pfad unseres Webcam-Users ablegen. Mit dem besten Editor unser Wahl legen wir nun also dort eine Datei cam-update.sh an.

$ vim ~/bin/cam-update.sh
cam-update.sh
#!/bin/bash
# Script zum Aktualisieren der Wetterdaten
# im Webcam-Bild der Mobotix M22M
# Version 0.01 vom 2008-03-06
 
cat /usr/local/var/wview/img/m25-display.htm  >/dev/tcp/{IP-der-Kamera}/{Port}

Anschließend machen wir unser Shell-Script noch ausführbar:

$ chmod +x ~/bin/cam-update.sh

Und schon können wir das erste mal Testen, ob die Wetterdaten in das Webcam-Bild eingefügt werden.

$ cam-update.sh

Damit nun auch dieser Datenfluss jede Minute automatisch abläuft, legen wir noch einen cronjob für unseren Web-Cam-User an. Hierzu schlüpfen wir in die Rolle unseres Webcam-Users

 su - webcam-user

und bearbeiten die nutzereigene crontab:

$ crontab -e
#Wetterdatenupdate der Webcam
*  *  *  *  *  /home/webcam/bin/cam-update.sh

Das war es dann auch schon! Nun werden alles 60 Sekunden die aktuellen Wetterdaten aktualisiert und in das Bild unserer Wetter-Webcam eingefügt.

Bild: Wetterwebcam-Bild mit eingefügten Wetterdaten

Bei einer Auflösung von z.B. 640×480 erscheint der eingeblendete Text noch hinreichend groß.

Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 640x480

Verwendet man aber hochauflösende Bilder der Mobotix-Kamera, so verlieren sich die eingeblendeten Wetterdaten bei einer Auflösung von 1920×1080 sich doch arg, vor allem, wenn die Bilder dann noch weiter verkleinert werden.

Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 960x540

Leider gibt es bei der Konfiguration der Mobotix-Kameras keine Option, die Schriftgröße zu verändern. Somit muss ein anderer Weg gefunden werden. Da wir die Webcam-Bilder nicht direkt den Gästen von der Kamera aus präsentieren sondern von unserem Web-/Proxy-Server, werden wir einfach die Wetterdaten mit Hilfe von ImageMagick, einem freien Softwarepaket zur Erstellung und Bearbeitung von Rastergrafiken, in die Bilder einfügen.

Eine Bildauflösung von 1920×1080 Bildpunkten benötigt pro Sendeaktion eine Bandbreite von ca. 2.074kBit je Bild. Das ergibt bei den zwei Kameras und einem Besucher 4 Mbit. Werden nun von einem oder mehreren Usern Bilder der Webcam abgerufen, so wird das sehr schnell sehr große Datenmengen nach sich ziehen. Bei der Nutzung von asymetrischen Anbindungen, wie aDSL oder vDSL wird sehr schnell negativ auf die vorhandene Upstreambandbreite auswirken. Besonders kritisch wäre dies noch dazu, wenn der böswillige Nutzer die Frameraten selbst einstellen könnte.

Abhilfe kann hier zum Beispiel leisten, die Bilddaten nicht für das WWW, vom Webserver der „kleinen Kamera“ abzufackeln, sondern von einem Webserver, der eine entsprechend „dicke“ Upstreamleitung zum Internet besitzt. Freilich könnte man nun die Bilder von der Kamera via FTP auf einen Webserver schieben, dies ginge recht gut bei Standbildern - bei Echtzeitkommunikation wird es hier auch schon schwerer. Ganz zu schweigen von der andauernden Übertragung von Nutzer-/Logindaten beim Upload.

Unter Umständen, wie auch in der Konfigurationsumgebung im SOHO-LAN, steht auf dem Webserver gar kein FTP-Server zur Verfügung. Wir müssen also dies anders und auch eleganter lösen.

Wir cashen den Traffic über einen zentralen Proxy, holen uns von dort die Kamerabilder direkt von der Mobotix-Kamera, fügen dort die Wetterdaten ein und gestatten über diesen Proxy den Zugriff für das gemeine Fußvolk.

Hierzu sind ein paar Vorarbeiten auszuführen.

Damit nun unser Caching nicht auf Lasten der Festplatten-Stapel geht (Datendurchsatz und Schreib-/Lesezugriffe) nutzen wir für unseren VHost eine RamDisk.
Diese legen wir wie folgt an:

 # vim /etc/fstab
/etc/fstab
...
 
# django : 2013-02-16 RAM-Disk für Wetterwebcam-Bilder
/dev/shm                			/var/www/webcam/	tmpfs   defaults,size=25m,mode=750,uid=48,gid=48 0 0
 
...

Die User- und Group-ID stellen wir dann auf den/die User/Gruppe apache ein.

Anschließend mounten wir unsere zusätzliche RAM-Disk:

 # mount /var/www/webcam

Da wir sowohl über das Verzeichnis record wie auch current unsere Bilder bzw. Liveimages weitergeben wollen, legen wir diese beiden Verzeichnisse an:

 # mkdir /var/www/html/webcam/control/
 # mkdir /var/www/html/webcam/record/

Anschließend passen wir noch die betreffenden Userrechte an:

 # chown apache:apache /var/www/html/webcam/control/
 # chown apache:apache /var/www/html/webcam/record/

Für unsere Webcam(s) legen wir nun einen VHost an:

# vim /etc/httpd/conf.d/vhosts.conf
vhosts.conf
#
# webcam.nausch.org
#
<VirtualHost *:80>
        ServerAdmin webmaster@nausch.org
        ServerName webcam.nausch.org:80
        ServerAlias webcam.nausch.org *.webcam.nausch.org
        ServerPath /
        DocumentRoot "/var/www/html/webcam"
        <Directory "/var/www/html/webcam">
                Options FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DirectoryIndex index.html index.php
        ErrorLog logs/webcam_error.log
        CustomLog logs/webcam_access.log combined
</VirtualHost>

Nach einem Restart unseres Apache-Webservers steht uns nun dieser VHost zur Verfügung.

Für einen ersten Test holen wir uns jeweils ein aktuelles Webcambild und speichern dieses Im Verzeichnis /var/www/webcam/record/ ab.

 # cd /var/www/webcam/record/
 # wget https://cam-west.intra.nausch.org/record/current.jpg
 # mv current.jpg current_2.jpg
 # wget https://cam-ost.intra.nausch.org/record/current.jpg
 # cp /var/www/webcam/record/current.jpg /var/www/webcam/control/cam1.jpg
 # cp /var/www/webcam/record/current.jpg /var/www/webcam/control/cam2.jpg

Damit in der Überschrift die aktuellen Daten der Wetterstation eingefügt werden, nutzen wir die automatische Seitengenerierung durch wview. Wie legen uns also im Arbeitsverzeichnis von Wview ein Grundgerüst unserer HTML-Seite an.

# vim /usr/local/etc/wview/html/webcam.htx
webcam.htx
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>Private Wetterstation Pliening in Bayern</title>
   <meta http-equiv="refresh" content="1" ;="">
</head>
 
 <script language="JavaScript">
  function openURL(urlname)
   {
    window.location=urlname;
   }
 </script>
 
 <body style="background-image: url(django_bg.jpg);">
 
 <center>
  <img src="https://wetterstation-pliening.info/wetterstation-pliening.info-banner.png" banner="0" height="100" width="800" alt="Wetterstation Pliening Info Banner">
  <hr><br>
 </center>
 
<!-- nav-buttons_Plus.incx -->                                                                                                                                                      
<table align="center" border="0" cellpadding=2 cellspacing=2>
 <tr>                                                                                                                
  <td colspan="5" align="center" valign="top" height="30">
   <input type="button" value=" &Uuml;bersicht  " onclick="openURL('https://wetter.nausch.org/index.html')">
   <input type="button" value="    Almanach     " onClick="openURL('https://wetter.nausch.org/Almanac_Plus.htm')">
   <input type="button" value="  aktuelle Werte " onClick="openURL('htts://wetter.nausch.org/Current_Plus.htm')">
   <input type="button" value="  Letzte 24 Std. " onClick="openURL('https://wetter.nausch.org/Daily_Plus.htm')">
   <input type="button" value="  Letzte 7 Tage  " onClick="openURL('https://wetter.nausch.org/Weekly_Plus.htm')">
   <input type="button" value="  Letzte 28 Tage " onClick="openURL('https://wetter.nausch.org/Monthly_Plus.htm')">
   <input type="button" value=" Letzte 365 Tage " onClick="openURL('https://wetter.nausch.org/Yearly_Plus.htm')">
   <input type="button" value="  Stationsdaten  " onClick="openURL('https://wetter.nausch.org/Station.htm')">
   <input type="button" value=" akt. Blitzkarte " onClick="openURL('https://wetter.nausch.org/stormforce.htm')">
   <input type="button" value=" Wetter-Satellit " onClick="openURL('https://wxtoimg.nausch.org')">
   <input type="button" value="    Impressum    " onClick="openURL('https://wetter.nausch.org/Impressum.htm')">
  </td>
 </tr>
</table>
 
<!--include header.inc--> 
 
<!-- Aufforderung zum Aktivieren von JavaScript -->
<noscript>
 <center>
  <p>
   <a href="https://webcam.nausch.org/control/userimage.html"><font face="Helvetica,Arial" size="-1">Open Menu (cam1)</font></a>
  </p>
  <p>
   <font face="Helvetica,Arial" size="+3" color=red>Press Shift-Reload to refresh the image.<br>Enable JavaScript / Active Scripting to see more details.</font>
  </p>
 </center>
</noscript>
 
<!-- Seitenkorpus -->
 
<hr>
 
<font size="5" face="Arial, Helvetica, sans-serif" color="#000000"><b>Wetterwebcams der Wetterstation</b></font>
<br>
<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
 <tbody>
  <tr>
   <td>
    <i> Kamera mit Blickrichtung Westen (Landsham / M&uuml;nchen):</i><br>
    <a href="fullhd.html">
     <img src="https://webcam.nausch.org/cache/current_big.jpg" width="1000" height="533" alt="Kamera-Livebild (Aufl&ouml;sung 1000x533) - Aktualisierung jede Sekunde">
    </a>
    <font size="1" face="Arial, Helvetica, sans-serif" color="#000000"
     <i>Zur Anzeige in Full-HD (1920x1080) auf das Bild klicken!</i>
    </font>
  </tr>
  <tr>
   <td>
    <hr>
   </td>
  </tr>
  <tr>
   <td>
    <i>Kamera mit Blickrichtung Osten (Gelting / Markt Schwaben):</i><br>
    <a href="fullhd.html">
     <img src="https://webcam.nausch.org/cache/current_2_big.jpg" width="1000" height="533" alt="Kamera-Livebild (Aufl&ouml;sung 1000x533) - Aktualisierung jede Sekunde">
    </a>
    <font size="1" face="Arial, Helvetica, sans-serif" color="#000000"
     <br>
     <i>Zur Anzeige in Full-HD (1920x1080) auf das Bild klicken!</i>
    </font>
   </td>
  </tr>
 </tbody>
</table>
 
<hr width="100%" size="4">
 <table cellpadding="2" cellspacing="2" border="0" width="100%">
  <tbody>
   <tr>
    <td width="40%" valign="bottom" align="left">
     <small>
      <font face="Arial, Helvetica, sans-serif" align="left" color="blue">
       <a href="https://wetter.nausch.org">wetter.nausch.org</a>
      </font>
     </small>
    </td>
    <td width="20%" valign="bottom" align="center">
     <small>
      <font face="Arial, Helvetica, sans-serif" align="center" color="blue">
       . 
      </font>
     </small>
    </td>
    <td width="40%" valign="bottom" align="right">
     <small>
      <font face="Arial, Helvetica, sans-serif" align="right" color="blue">
       <a href="https://wetterstation-pliening.info">wetterstation-pliening.info</a>
      </font>
     </small>
    </td>
   </tr>
  </tbody>
 </table>
 </body>
 </html>

Da wir die, von wview generierte HTML-seite als index.HTML für unseren VHOST verwenden wollen, lassen wir die generierte Seite von Wview noch an die richtige stelle kopieren.

# vim /usr/local/etc/wview/post-generate.sh 
/usr/local/etc/wview/post-generate.sh
#/bin/sh
 
# Add any post template generation processing or utilities here. Keep in mind this 
# script runs in the htmlgend process's context so don't add anything that is overly
# time constrained.
 
# Django : 2013-02-16
# Index-Datei für Webserver nach Document-Root kopieren 
/bin/cp /usr/local/var/wview/img/webcam-hd.htm /var/www/webcam/index.html
 
exit 0

Wie auch schon beim ersten Konfigurationsbeispiel nutzen wir auch hier die HTML-Engine htmlgend unserer wview-Installation und lassen uns einfach die gewünschten Messdaten in eine Textdatei schreiben, die wir dann später in die Wetter-WebCam-Bilder einfügen.

Bildausschnitt einer Texteinblendung

Diese Textdatei schreibt und dann alle 60 Sekunden der wview-Daemon in unseren Pfad auf unserem Webserver und hat in dem obigen Beispiel folgende Daten:

Wetterstation Pliening (Blick in Richtung Westen)
7.8°C  bei 65% Feuchte
1016.0 hPa Tendenz +
Solarstrahlung: 149 W/m^2  -  UV-Index: 0.9
4.8 km/h aus ONO mit max. 19.3 km/h
Regen: 0.0 mm  bei 0.0 mm / Std.
Wolkenuntergrenze: 772 m (berechnet)

Da wir in unserem Konfigurationsbeispiel zwei Kameras benutzen und die Titelzeilen Wetterstation Pliening (Blick in Richtung Westen) sowie Wetterstation Pliening (Blick in Richtung Westen) vewenden, benötigen wir auch zwei zugehörige Vorgabedatei m25-west-display.htx und m25-ost-display.htx im Konfigurationsverzeichnis /usr/local/etc/wview/html/.

 # vim /usr/local/etc/wview/html/m25-west-display.htx
/usr/local/etc/wview/html/m25-west-display.htx
Wetterstation Pliening (Blick in Richtung Westen)
 
Temperatur : <!--outsideTemp-->°C  bei <!--outsideHumidity-->% Feuchte
Luftdruck : <!--barometer--> hPa Tendenz <!--baromtrend-->
Solarstrahlung : <!--solarRad--> W/m^2  -  UV-Index: <!--UV-->
Wind : <!--windSpeed--> km/h aus <!--windDirection--> mit max. <!--hiWindSpeed--> km/h
Niederschläge: <!--dailyRainMM--> mm  bei <!--rainRate--> mm / Std.
Wolkenuntergrenze: <!--cumulusBase--> m (berechnet)

und

 # vim /usr/local/etc/wview/html/m25-ost-display.htx
/usr/local/etc/wview/html/m25-ost-display.htx
Wetterstation Pliening (Blick in Richtung Osten)
 
Temperatur : <!--outsideTemp-->°C  bei <!--outsideHumidity-->% Feuchte
Luftdruck : <!--barometer--> hPa Tendenz <!--baromtrend-->
Solarstrahlung : <!--solarRad--> W/m^2  -  UV-Index: <!--UV-->
Wind : <!--windSpeed--> km/h aus <!--windDirection--> mit max. <!--hiWindSpeed--> km/h
Niederschläge: <!--dailyRainMM--> mm  bei <!--rainRate--> mm / Std.
Wolkenuntergrenze: <!--cumulusBase--> m (berechnet)

Damit der wview-Daemon diese Datei auch alle 60 Sekunden erzeugt, tragen wir unsere /etc/wview/html-templates.conf die benötigte Konfiguration ein.

 # vim /usr/local/etc/wview/html-templates.conf
###############################################################################                                                                                             
### Mobotix Texteinblendungsvorlage                                                                                                                                         
###############################################################################
m25-west-display.htx
m25-ost-display.htx

Anschließend starten wir den wview-daemon einmal durch, damit die Änderungen aktiviert und alle 60 Sekunden die beiden Dateien mit den Texteinblendungen aktualisiert werden können.

 # service wview stop
 # service wview start

Da wir ja unsere Wetterdaten in die jeweils aktuellen Webcam-Bilder einfügen und diese dann unseren Besuchern präsentieren wollen, müssen wir nun noch dafür sorgen, dass die Bilder auch fortlaufend kopiert und bearbeitet werden.

Hierzu behelfen wir uns eines kleinen Bash-Scriptes.

# vim /usr/local/bin/cam2pic+.sh
/usr/local/bin/cam2pic+.sh
#!/bin/sh 
# Script zum Abholen und Abspeichern der Kamerabilder
# für den virtuellen Mobotix-Cambetrieb
# (c) Michael Nausch 
# 
# v0.01 : 2008-12-29
# v0.02 : 2013-03-16
# v0.03 : 2014-01-10
 
CAMURL_1="http://10.0.10.17/record/current.jpg"
CAMURL_2="http://10.0.10.18/record/current.jpg"
WORKDIR_1="/var/www/webcam/cache/"
WORKDIR_2="/var/www/webcam/record/"
WORKFILE_1="west_current.jpg"
WORKFILE_2="ost_current.jpg"
 
PRG=/usr/bin/convert
 
WORKDIR_2="/var/www/webcam/record/"
FILE_1="current.jpg"
 
cd $WORKDIR_1
while true
do
 PIC_DAY=`date +%d`
 PIC_MONTH=`date  +%m`
 PIC_YEAR=`date +%Y`
 PIC_HOURS=`date +%H`
 PIC_MINUTES=`date +%M`
 PIC_SECONDS=`date +%S`
 PIC_DATE=$PIC_DAY"."$PIC_MONTH"."$PIC_YEAR" - "$PIC_HOURS":"$PIC_MINUTES":"$PIC_SECONDS
 DATA_1=`cat /usr/local/var/wview/img/m25-west-display.htm`
 DATA_2=`cat /usr/local/var/wview/img/m25-ost-display.htm`
 wget --user="webcam_user" --password="Django-1$-4-G33k!" $CAMURL_1
 $PRG -gravity northwest -fill black -pointsize 25 -draw "text 7,6 '$DATA_1'" current.jpg $WORKFILE_1
 $PRG -gravity northwest -fill white -pointsize 25 -draw "text 5,5 '$DATA_1'" $WORKFILE_1 $WORKFILE_1
 $PRG -gravity northeast -fill black -pointsize 25 -draw "text 5,6 '$PIC_DATE'" $WORKFILE_1 $WORKFILE_1
 $PRG -gravity northeast -fill white -pointsize 25 -draw "text 7,5 '$PIC_DATE'" $WORKFILE_1 $WORKFILE_1
 
 convert -geometry 320x180 $WORKDIR_1$WORKFILE_1 $WORKDIR_1"current_small.jpg"
 convert -geometry 1000x533 $WORKDIR_1$WORKFILE_1 $WORKDIR_1"current_big.jpg"
 mv $WORKDIR_1$WORKFILE_1 $WORKDIR_1"current_hd.jpg" 
 rm current.jpg 
 
 wget --user="webcam_user" --password="Django-1$-4-G33k!" $CAMURL_2
 $PRG -gravity northwest -fill black -pointsize 25 -draw "text 7,6 '$DATA_2'" current.jpg $WORKFILE_2
 $PRG -gravity northwest -fill white -pointsize 25 -draw "text 5,5 '$DATA_2'" $WORKFILE_2 $WORKFILE_2
 $PRG -gravity northeast -fill black -pointsize 25 -draw "text 5,6 '$PIC_DATE'" $WORKFILE_2 $WORKFILE_2
 $PRG -gravity northeast -fill white -pointsize 25 -draw "text 7,5 '$PIC_DATE'" $WORKFILE_2 $WORKFILE_2
 
 convert -geometry 320x180 $WORKDIR_1$WORKFILE_2 $WORKDIR_1"current_2_small.jpg"
 convert -geometry 1000x533 $WORKDIR_1$WORKFILE_2 $WORKDIR_1"current_2_big.jpg"
 mv $WORKDIR_1$WORKFILE_2 $WORKDIR_1"current_2_hd.jpg"
 rm current.jpg
 
done

Damit nun nach einem Systemstart der Bildercashvorgang automatisch anläuft legen wir uns ein passendes Startscript an:

# vim /etc/init.d/weathercam
/etc/init.d/weathercam
#!/bin/sh
#
# chkconfig: 3 98 30
# description: cyclic Weatherwebcam-Picture Update
#
# processname: weathercam
#
 
DAEMON=/usr/local/bin/cam2pic+.sh
PIDFILE=/var/run/cam2pic.pid
PROG="cam2pic+"
    test -x $DAEMON || exit 0
 
    . /lib/lsb/init-functions
 
    case "$1" in
      start)
	# initiale Befüllung
	#/bin/cp -R /root/webcam/ /var/www/
	#/bin/chown -R weather:apache /var/www/webcam/
	#/bin/chmod 755 /var/www/webcam/
 
        echo -n $"Starting $PROG: "
        $DAEMON & #1>/dev/null
	echo "                                            [  OK  ]"
        ;;
      stop)
        pid=`ps -ef | grep "cam2pic+" | grep -v grep | awk '{ print $2}'`
        echo -n $"Stopping $PROG: "
        kill $pid
        echo "                                            [  OK  ]"
        ;;
      status)
        cnt=`ps -ef | grep "cam2pic+" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
          echo "$0 is not running"
        else
          echo "$0 is running"
        fi
        ;;
      *)
        echo "Usage: $0 {start|stop|status}"
      exit 1
    esac
 
exit 0

Die Ausführungsrechte geben wir dann unserem script mittels:

# chmod +x /etc/init.d/weathercam

Damit der „service“ automatisch beim Systemstart anläuft, aktivieren wir diesen mit:

# chkconfig weathercam on

Die Überprüfung ob der Dienst (Daemon) weathercam auch wirklich bei jedem Systemstart automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden:

# chkconfig --list | grep weathercam
weathercam 0:Aus 1:Aus 2:Ein 3:Ein 4:Ein 5:Ein 6:Aus

Den Daemon starten wir nun initial mit:

# service weathercam start

Das war es dann auch schon! Nun werden jede Sekunden die aktuellen Wetter-WebCam-Bilder gecached und mit den aktualisierten Wetterdaten versehen.

Das Ergebnis sieht nun wesentlich besser au und ist besser bei skalierten Darstellungen lesbar, als bei der vorgestellten Konfigurationsvariante 1.

Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 960x540

Im Vergleich dazu nochmals das äquivalente Ergebnis aus Konfigurationsbeispiel 1.

Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 960x540

Links

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • wetter/mobotix/m25_data.txt
  • Zuletzt geändert: 31.10.2023 18:37.
  • von 127.0.0.1