AXIS 207MW Bild mit Wetterdaten (updated)
Update 24.05.2015:

Der korrekte Link auf die Wetter-Informationen lautet jetzt: http://www.aviationweather.gov/adds/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3&mostRecent=true&stationString=<LOC>

Dies und die dadurch erforderliche Anpassung beim Parsing wird auch in der Download-Version von "wetter.sh" berücksichtigt.

Die IP-Kameras der Firma AXIS sind vollständige, autarke und leistungsfähige Systeme, die auf Linux-Basis eine Vielzahl von sehr schönen Erweiterungsmöglichkeiten bieten.

Auf der Support-Website von AXIS sind dazu u.a. ausführliche Informationen zum Thema Scripting und API frei verfügbar; dabei ist allerdings zu beachten, dass die einzelnen Kamera-Modelle unterschiedlichen Funktionsumfang bieten. Details hierzu sind den jeweiligen Kamera-Spezifikationen zu entnehmen.

Problemstellung

Entstanden aus dem Wunsch, auch aus der Ferne die aktuelle Lufttemperatur und andere Wetterdaten samt aktuellem Kamerabild des Heimatorts abfragen zu können, ohne ein "internetfähiges" Thermometer zu besitzen, wurde die nachfolgend beschriebene Lösung u.a. in einer AXIS 207MW Netzwerk-Kamera realisiert. Damit ist die Kamera selbstständig in der Lage, die im Internet verfügbaren Wetterdaten des nächstgelegenen Flughafens abzurufen und in das aktuelle Kamerabild einzublenden.

Randbedingungen

Es gelten dabei folgende Forderungen/Randbedingungen:

  1. ausser der AXIS-Kamera (bzw. dem AXIS Video-Encoder) soll kein weiteres (lokales) Rechnersystem benötigt werden und
  2. die AXIS-Kamera muss einen Internet-Zugang besitzen (http-Protokoll), der natürlich auch hinter einer Firewall angeordnet sein darf.
  3. die AXIS-Kamera muss mindestens einen Firmware-Stand von V4.44 haben (Frühere Versionsstände können evtl. nach Anpassung des Scripts funktionieren, dazu leiste ich jedoch keine Unterstützung).

Umsetzung

Für die Umsetzung wurden folgende Funktionen der AXIS Software verwendet:

  • der eingebaute Task Scheduler aktiviert zu bestimmten Zeiten (jeweils nachdem die aktualisierten Wetter-Informationen im Internet bereitgestellt worden sind) ein Script, das die eigentliche 'Arbeit' erledigt.
  • über die Funktion shttpclient lädt das Script die aktuellen Wetterinformationen aus dem Internet (www.aviationweather.gov/dataserver) und speichert sie in einer temporären Datei.
  • danach wird aus der temporären Datei die gewünschte Metar-Information extrahiert, diese mit sed zu Klartext-Wetterinformationen umgeformt und in der Variablen TEXT gespeichert.
  • im nächsten Schritt wird mithilfe der Parametrierungs-Schnittstelle der Kamera über das http-Protokoll die Einblendung des statischen Textes in das Kamerabild aktiviert, falls sie nicht bereits aktiviert sein sollte.
  • abschliessend wird über die Parametrierungs-Schnittstelle der anzuzeigende Text, nämlich die aktuelle Wetter-Information, gesetzt, die dann im Text-Overlay des Kamerabildes angezeigt wird.

Erforderliche Aktionen

Anlegen der Script-Datei /etc/wetter.sh nach folgendem Muster, wobei die am Anfang stehenden Parameter an die jeweiligen Gegebenheiten angepasst werden müssen. Dies gilt natürlich ganz speziell für das Passwort des root-Kontos (Parameter PWD).

#!/bin/sh
#
# this script fetches the current Metar weather information for the airport
# specified by LOC, converts it into 'readable' data and puts this weather
# information into the AXIS camera display overlay text, using onboard
# AXIS tools.
#
# LOC is the ICAO airport code (see http://www.airport-technology.com/icao-codes/)
LOC=EDDL
#
# USR is the root user name of the device and PWD (you guessed it) is of course the root user's password
USR=root
PWD=<your_password>
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin
#
# sleep some seconds to settle down the network initialization, if called upon system boot
sleep 15
#
/bin/shttpclient -o /var/tmp/$LOC "http://www.aviationweather.gov/adds/dataserver_current/httpparam?
	dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3&mostRecent=true&stationString=$LOC"
#
# convert to friendly text
# Example: 08°C Dew: 02°C 1024hPa
TEXT=$( cat /var/tmp/$LOC | grep \<raw_text\>$LOC | 
	sed 's/.* \(M\{0,1\}[0-9]\{2\}\)\(\/\)\(M\{0,1\}[0-9]\{2\}\)\(.*\)Q\([0-
	9]\{3,4\}\)\(.*\)/\1%B0C%20Dew:%20\3%B0C%20\5hPa%20/' |
	tr -s 'M' '-' )
# enable text in cam image
/bin/shttpclient -u root -w $PWD http://127.0.0.1/axis-cgi/
	admin/param.cgi?action=update\&root.Image.I0.Text.TextEnabled=yes
# set text in cam image
/bin/shttpclient -o /var/tmp/junk -u root -w $PWD http://127.0.0.1/axis-cgi/
	admin/param.cgi?action=update\&root.Image.I0.Text.String="$TEXT"
		

Die in der Darstellung eingerückten Zeilen sind Fortsetzungen der jeweils vorhergehenden Zeilen und sie müssen im Script auch jeweils wieder eine zusammenhängende Zeile bilden. Sie können die jeweils aktuelle und vollständige Version des Scripts hier herunterladen.

Der Parameter LOC definiert, für welchen Flugplatz die Wetterinformationen geholt werden sollen. In der Regel sollte das der nächstgelegene Flugplatz sein (z.B. EDDL = Düsseldorf). Eine Liste der Flugplatz-Abkürzungen (ICAO-Codes) ist auf der Website von airport-technology.com zu finden.

Die Datei /etc/wetter.sh muss nach ihrer Erzeugung als "executable" markiert werden. Die geschieht entweder (Telnet) über den Befehl

# chmod +x /etc/wetter.sh

oder über das Setzen des Mode-Werts auf 0100755 mithilfe des Axis-Web-Interfaces (s.u.).

Im zweiten Schritt ist die Datei "/etc/user.task.list" anzulegen, bzw. so zu bearbeiten, dass sie die folgenden beiden Zeilen enthält:

# fetch current weather conditions into display
{WEATHER_UPDATE} time(m(21,25,51,55)) once immune % /etc/wetter.sh;

Die Bearbeitung der Script-Dateien kann über das Web-Interface der Kamera (Setup - System Options - Advanced - Scripting) erfolgen, alternativ kann über Telnet eine Terminal-Session aufgebaut und mit dem lokalen vi-Editor gearbeitet werden.

Da Telnet nicht standardmässig aktiviert ist, sind dazu die unter http://www.axis.com/techsup/faq/index.php?id=38461 beschriebenen Schritte zur Aktivierung des Telnet-Daemons in der Kamera erforderlich.


Bearbeitungsschritte mit dem AXIS-Web-Interface

Die Modifikation der AXIS-Kamera geschieht am einfachsten durch die Verwendung des eingebauten Web-Interfaces zur Script-Bearbeitung. Die dazu notwendigen Schritte sind nachfolgend am Beispiel erläutert.

 

Configuration steps with the AXIS web-interface

The most simple way to modify the AXIS camera is to use the vendor-supplied web management interface for script-editing. The required example configuration steps are documented below.

Zunächst wird die Script Editor Funktion aufgerufen:

First call the Script Editor:

Web-Interface

Nach Klick auf "Open Script Editor" wird der Inhalt des Verzeichnisses "/etc" angezeigt:
 
After clicking the button "Open Script Editor" the browser displays the directory listing of the directory "/etc":

script edit

Hier (oben) ist bereits die Datei "wetter.sh" im Dateiverzeichnis zu sehen, die ursprünglich noch nicht vorhanden ist. Um sie zu anzulegen, öffnen wir zunächst die Datei "user.task.list" und ändern den Dateinamen nach "/etc/wetter.sh", setzen den Mode-Wert auf 0100755 und ersetzen den ursprünglichen Datei-Inhalt durch das neue Script. Dabei bitte beachten, dass die markierten Zeilen zusammen gehören (eine gemeinsame Zeile sind), sonst funktioniert das Script nachher nicht.

Mit Links-Click auf das nachfolgende Bild können Sie die jeweils aktuelle Version des Scripts herunterladen und in das Eingabefeld des Script-Editors kopieren.

In this directory listing above you can already see the script file "wetter.sh" although at the very moment does not yet exist (image taken after creating the script). To create the file, open the file "user.task.list" to use it as a template. Change it's name and Mode value as indicated and replace the original contents by the desired script. Please be aware that the marked lines belong together (single lines).


You can download the latest version of the script file by left-clicking the image and paste it into the edit-field of the script editor.

 

Achtung: das korrekte Passwort muss hier der Variablen "PWD" zugeordnet werden.

Anschliessend "Save File", um die neue Datei zu speichern. Nun haben wir das Script /etc/wetter.sh angelegt.

Bitte beachten: die folgende Grafik enthält nicht die aktuelle Version der Script-Datei! Bitte verwenden Sie die Download-Version der Datei (Klick auf Bild).

Don't forget to insert the correct password of the root account of the camera.

Save the file. Now the script /etc/wetter.sh exists.

Please note: the following image does not contain the most current version of the script file! Please use the download version (click image).

wetter2.sh

Nach dem Speichern der neuen Script-Datei öffnen wir erneut die Datei "/etc/user.task.list" und fügen nun die erforderlichen Informationen für den Scheduler (utask) ein, siehe unten. Zeilen, die mit dem Hash-Zeichen (#) beginnen, sind Kommentare und nur für das bessere Verständnis erforderlich.
 
After saving the new script open again the file "/etc/user.task.list" and add the required scheduler (utask) information, see image below. Lines starting with a hash-sign are comments and are only required to enhance the readability of the configuration file (but you knew that already, of course).

Im Beispiel wird /etc/wetter.sh immer um 21, 25, 51 und 55 Minuten nach der vollen Stunde aufgerufen. Die Metar-Daten werden alle 30 Minuten um 20 und 50 Minuten nach der vollen Stunde aktualisiert. Das bedeutet auch, dass nach einem Reboot der Kamera bis zu einem dieser Zeitpunkte kein Update der Wetterdaten im Bild erfolgt.

Mit Links-Click auf das nachfolgende Bild können Sie die jeweils aktuelle Version der Datei herunterladen und in das Eingabefeld des Script-Editors kopieren.

Dateinamen und Mode bleiben unverändert, dann "Save File":

 

In the example given, /etc/wetter.sh is being activated every 21, 25, 51 and 55 minutes after the hour. The Metar data gets updated every 30 minutes at 20 and 50 minutes after the hour. This also means that after a reboot of the camera no current weather information will be displayed until the first update time.


You can download the latest version of the file by left-clicking the image and paste it into the edit-field of the script editor.

Keep the filename and the Mode value and Save File:

user.task.list

Das war's auch schon; jetzt noch einen Reboot durchführen und warten, bis der nächste Update-Zeitpunkt vergangen ist; danach sollten die Wetterinformationen im Bild zu sehen sein.

Die vorgenommenen Änderungen überstehen sowohl den Reboot als auch das Ausschalten der Kamera. Bei einem Factory Reset allerdings werden auch sie gelöscht.

 

That's all, reboot the camera. If everything is properly configured, the weather data should be included in the display overlay after the next update time.

The changes survive as well a reboot of the system as a power cycle. Performing a factory reset nevertheless will clear them from the camera.


Kein Update im laufenden Live-Bild

Ein kleiner Nachteil der Lösung soll auch erwähnt werden: die Aktualisierung der Wetterdaten im Bild wird immer nur beim Neu-Aufruf des Kamerabildes sichtbar, d.h., bei der Wiedergabe eines Live-Bildes bleibt der Inhalt der Wetterdaten so, wie er am Anfang war und wird nicht aktualisiert dargestellt.

 


No weather update within streaming live display

Unfortunately updates of the weather information can not be seen during a live video stream; the viewer needs to be reconnected to get an updated information.


Achtung bei Volumentarif

Da die Kamera regelmässig Daten aus dem Internt abruft, erzeugt sie auf diese Weise auch Datenverkehr, der zusätzliche Kosten verursachen kann, wenn der verwendete Internet-Zugang über einen volumenabhängigen Tarif erfolgt!

Weather data in cam image

Kompatible Modelle

Die beschriebene Funktionalität ist bisher mit folgenden Modellen erfolgreich getestet worden:

  • AXIS 207W Network Camera
  • AXIS 207MW Network Camera
  • AXIS 213 PTZ Network Camera
  • AXIS M1011-W Network Camera
  • AXIS M3011 Network Camera
  • AXIS P3301 Network Camera
  • AXIS M7001 Video Encoder

Informationen über weitere kompatible Kameras bitte an peter.lelie@lelie.de.


HINWEIS: die vorstehend beschriebenen Aktionen können möglicherweise die Systemstabilität Ihrer AXIS-Cam gefährden, schlimmstenfalls kann ein Factory-Reset erforderlich werden. Wir übernehmen hierfür keinerlei Haftung.


© 2010, 2015 by Ingenieurbüro Peter Lelie, 41541Dormagen, Th.-Fontane-Str. 51a (peter.lelie@lelie.de)