Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
wetter:mobotix:m25_data [16.02.2014 18:26. ] – angelegt djangowetter:mobotix:m25_data [31.10.2023 18:37. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== Einbinden der Wetterdaten der Davis Vantage Pro2 in das Webcam-Bild der Mobotix M25 (HD-Cam) ====== ====== Einbinden der Wetterdaten der Davis Vantage Pro2 in das Webcam-Bild der Mobotix M25 (HD-Cam) ======
 +Als Ergänzung zu meiner Wetterstation [[wetter:start#hardware_-_station_vantage_pro_2|Vantage Pro2]] von [[https://www.davisnet.com/weather/products/vantage-pro-professional-weather-stations.asp|Davis Instruments]] sind seit Januar 2014  zwei Full-HD Cams vom Typ [[https://www.mobotix.com/ger_CH/content/view/full/225607|M25]] im Einsatz. 
 +
 +Die Wahl auf die Kameras aus dem Hause [[https://www.mobotix.com/ger_DE/|Mobotix]] fiel aus folgenden Gründen:
 +  - hohe Auflösung und gute Restlichtempfindlichkeit
 +  - Outdoor Kamera (IP65) 
 +  - PoE Versorgung der Kamera
 +  - Integrations-/Anzeige-Möglichkeit von Wetterdaten
 +
 +Der Standort der Wetterstation wie auch der Kameras sind auf der [[
 +https://www.openstreetmap.org/?mlat=48.1987&mlon=11.7980&zoom=10|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 [[https://webcam.nausch.org|URL]] bzw in der Full-HD Auflösung [[https://webcam.nausch.org/fullhd.html|hier]] erreichbar. 
 +
 +===== Variante 1: Einbindung der Daten via Netzwerkmeldung =====
 +Im ersten Konfigurationsbeispiel nutzen wir die vorhandenen Möglichkeiten der Mobotix-Kamera, genauer gesagt, die Möglichkeit der Einblendung von Netzwerkmeldungen in das Kamerabild.
 +
 +{{ :wetter:mobotix:cam010017.intra.nausch.org_2014-01-07_162829_textonly.jpg?nolink |Bildausschnitt einer Texteinblendung}}
 +
 +==== Konfiguration der M22M ====
 +=== Netzwerkmeldungen definieren ===
 +Zur Aktivierung der Netzwerkmeldungen rufen wir die Konfigurationsseite der Kamera unter der folgenden URL auf: <code>https://{IP-der-Kamera}/control/text</code> 
 +
 +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. 
 +
 +{{ :wetter:mobotix:m25_1.png?direct&600 |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: <code>https://{IP-der-Kamera}/control/events</code> 
 +
 +{{ :wetter:mobotix:m25_2.png?direct&600 |Bild des Einstellungsmenüs für die Ereignisse}}
 +
 +Unserem Nachrichtenereignis **Netzwerkmeldung** geben wir einen passenden Namen und klicken auf die Schaltfläche **[Bearbeiten...]**.
 +
 +{{ :wetter:mobotix:m25_3.png?direct&600 |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 **Ereignistotzeit**definiert, 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. <WRAP round tip>Dies ist insofern wichtig, da wir ja nicht wollen, dass Leute aus unserem eigenen Netzwerk plötzlich irgendwelche unsinnigen Textnachrichten in Richtung Kamera schicken!</WRAP>
 +
 +=== 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
 +
 +{{ :wetter:mobotix:m25_4.png?direct&600 |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
 +
 +{{ :wetter:mobotix:m25_5.png?direct&600 |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. 
 +
 +==== Datenaufbereitung mit Hilfe von wview ====
 +
 +Mit Hilfe der HTML-Engine **htmlgend** unserer [[wetter:wview:install|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.
 +
 +{{ :wetter:mobotix:cam010017.intra.nausch.org_2014-01-07_162829_textonly.jpg?nolink |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:
 +
 +<file bash /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
 +</file>
 +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
 +
 +<code bash>###############################################################################                                                                                             
 +### Mobotix Texteinblendungsvorlage                                                                                                                                         
 +###############################################################################
 +m25-display.htx</code>
 +
 +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
 +
 +==== Datentransfer zur Kamera ====
 +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}
 +
 +==== Automatische Datenaktualisierung ====
 +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
 +<file bash 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}
 +</file>
 +
 +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 <code> su - webcam-user</code> 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.
 +
 +{{ :wetter:mobotix:cam010017.intra.nausch.org_2014-01-07_162829.jpg?direct&700 |Bild: Wetterwebcam-Bild mit eingefügten Wetterdaten}}
 +
 +
 +===== Variante 2: Einbindung der Daten mit Hilfe von ImageMagick =====
 +Bei einer Auflösung von z.B. 640x480 erscheint der eingeblendete Text noch hinreichend groß.
 +
 +{{ :wetter:mobotix:album:cam_00005.jpg?direct&640 |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 1920x1080 sich doch arg, vor allem, wenn die Bilder dann noch weiter verkleinert werden.
 +
 +{{ :wetter:mobotix:cam010017.intra.nausch.org_2014-01-07_162829.jpg?direct&960 |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 [[https://www.imagemagick.org/|ImageMagick]], einem freien Softwarepaket zur Erstellung und Bearbeitung von Rastergrafiken, in die Bilder einfügen.
 +
 +==== Hintergrundinfo ====
 +Eine Bildauflösung von 1920x1080 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. 
 +
 +==== Lösung ====
 +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.
 +
 +==== RAM-DISK ====
 +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
 +
 +<file bash /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
 +
 +...
 +</file>
 +
 +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/
 +
 +==== DokumentRoot-Erweiterungen ====
 +Für unsere Webcam(s) legen wir nun einen VHost an:
 +  # vim /etc/httpd/conf.d/vhosts.conf
 +
 +<code apache 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>
 +</code>
 +Nach einem Restart unseres Apache-Webservers steht uns nun dieser VHost zur Verfügung.
 +
 +==== Initiale Bildbefüllung ====
 +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
 +
 +==== HTML-Seite anlegen ====
 +Damit in der Überschrift die aktuellen Daten der Wetterstation eingefügt werden, nutzen wir die automatische Seitengenerierung durch [[wetter:start#software_-_wview|wview]]. Wie legen uns also im Arbeitsverzeichnis von **Wview** ein Grundgerüst unserer HTML-Seite an.
 +  # vim /usr/local/etc/wview/html/webcam.htx
 +
 +<file html 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>
 +</file>
 +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 
 +<file bash /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
 +</file>
 +
 +==== Datenaufbereitung mit Hilfe von wview ====
 +Wie auch schon beim ersten [[wetter:mobotix:m25_data?&#datenaufbereitung_mit_hilfe_von_wview|Konfigurationsbeispiel]] nutzen wir auch hier die HTML-Engine **htmlgend** unserer [[wetter:wview:install|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.
 +
 +{{ :wetter:mobotix:cam_west_20140217_14-23-01_textonly.jpg?nolink |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
 +<file bash /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)
 +</file>
 +und
 +   # vim /usr/local/etc/wview/html/m25-ost-display.htx
 +<file bash /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)
 +</file>
 +
 +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
 +
 +<code bash>###############################################################################                                                                                             
 +### Mobotix Texteinblendungsvorlage                                                                                                                                         
 +###############################################################################
 +m25-west-display.htx
 +m25-ost-display.htx</code>
 +
 +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
 +
 +
 +==== Webcam-Bilder cachen und Wetterdaten einfügen ====
 +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
 +<file bash /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
 +</file>
 +
 +==== Automatischer Bilderupdate ====
 +Damit nun nach einem Systemstart der Bildercashvorgang automatisch anläuft legen wir uns ein passendes Startscript an:
 +  # vim /etc/init.d/weathercam
 +<file bash /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
 +</file>
 +
 +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 [[wetter:mobotix:m25_data#variante_1einbindung_der_daten_via_netzwerkmeldung|Konfigurationsvariante 1]].
 +
 +{{ :wetter:mobotix:cam_west_20140217_14-23-01.jpg?direct&960 |Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 960x540}}
 +
 +Im Vergleich dazu nochmals das äquivalente Ergebnis aus [[wetter:mobotix:m25_data#variante_1einbindung_der_daten_via_netzwerkmeldung|Konfigurationsbeispiel 1]].
 +
 +{{ :wetter:mobotix:cam010017.intra.nausch.org_2014-01-07_162829.jpg?direct&960 |Bild: Wetter-WebCam Bild mit eingeblendeten Wetterdaten bei einer Auflösung von 960x540}}
 +
 +====== Links ======
 +  * **[[wetter:mobotix:start|Zurück zum Kapitel >>Wetterwebcam Mobotix M22M/M25<<]]**
 +  * **[[wiki:start#wetterbeobachtung_wview_stormforce_wxtoimg|Zurück zu >>Wetterbeobachtung (Wview, Stormforce, WxtoImg)<<]]**
 +  * **[[https://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
-FIXME 
  
  • wetter/mobotix/m25_data.1392575178.txt.gz
  • Zuletzt geändert: 16.02.2014 18:26.
  • von django