You are on page 1of 4

Tegeler Segel-Club Wetter http://www.tegeler-segel-club.de/wetter/wetter_technik.

html

Die Technik 52° 35’ 34’’ N


013° 15’ 44’’ E
Die Wetterstation:

Typ: WS500
Hersteller: ELV ONLINE-WETTER
Masteinheit: montiert auf Flaggenmast, umfasst: >>>

- Windgeschwindigkeitsmesser
- Windrichtungsmesser
- Außentemperatur und Feuchte WEB-KAMERA
- Regensensor >>>
- Sonnenscheinsensor

Stegeinheit: Flaggenmast am Ausrüstungssteg, umfasst:


Programmierung und
Webdesign:
- Wassertemperatur (auf ca. 20 cm Tiefe) Kai Jürgens &
Nicolas Warzecha

Basiseinheit: hängt am Ausgang des Windfangs Dank an:


wetter.dandy.at
- interaktives Touchscreendisplay
- Darstellung aller Messwerte
- Umschalten von Einheiten durch Druck auf Display
- USB Ausgang zum Rechner

Die Verbindung zum Internetrechner:

Verkabelung: mittels USB Kabel mit zwischen geschaltetem


Repeater (Kabellänge > 5m)

Datenstrom (Anklicken für größere Darstellung):

Installierte Programme:

Weather Professional

- nimmt die Daten von der WS500 Basiseinheit auf


- zeigt die aktuellen Daten grafisch an
- sendet die Daten an die PostgreSQL Datenbank
- zeigt Wetterverläufe an (historische Daten)
- sendet dazu SQL Abfragen an die PostgreSQL Datenbank

1 von 4 31.05.2011 13:26


Tegeler Segel-Club Wetter http://www.tegeler-segel-club.de/wetter/wetter_technik.html

PostgreSQL Datenbank

- verwaltet die Wetterdaten


- verarbeitet SQL-Anfragen
- sendet Abfrageergebnisse an andere Programme
- ist bei WS500 mit dabei
- die Datenbankstruktur wird von Weather Professional erzeugt

Borland JBuilder

- Leistungsfähiger Editor zur Erzeugung von Java Code


- Open Source Software, kostenlos im Internet
- ermöglicht die effiziente Programmierung der Java Classes
- Alternative: Eclipse ist auf alle Fälle kostenlos

JFreeChart

- Java Erweiterung zur Erzeugung von Grafiken


- jar Datei im Netz verfügbar
- am besten gleich im JBuilder registrieren
- ist elementar wichtig für das Skript!

PostgreSQL JDBC

- Java Erweiterung zur Ermöglichung der Datenbankabfrage


- jar Datei im Netz verfügbar
- am besten in das Verzeichnis legen, wo die java Skripte sind
- Classpath muss drauf verweisen

jbproject.zip

- das gesamte JBuilder Project als ZIP File


- enthält alle Java Classes als Classes und als Source Code
- idealer Weise öffnet man es mit dem JBuilder

Wetterdata.java

- Hauptklasse in Java
- beinhaltet die Datenstruktur für die Datenaufbereitung
- in die Class werden die Wetterdaten der letzten 96 Stunden
hineingeschrieben
- Hauptfunktionen der Class: Erzeugung der Plots und Grafiken

Wetterserie.java

- Java Klasse, die ein Array von 8 Wetterdata darstellt


- 8 verschiedene Wetterdatensätze werden benötigt für die
Auswertung

Datawriter.java

- Java Class basierend auf Wetterserie


- handelt die Datenbankabfrage
- beinhaltet das GUI
- Ablaufstruktur: Initialisierung des GUI, starten des Threads,
Endlosschleife mit den Stationen: Auslesen aus der DB, Erzeugen
der Plots und des HTML teils, Sleep für 5 min.

FTP Watchdog

- lädt die neuen Bilder und Tabellen ins Internet


- überwacht das Verzeichnis c:\upload
- bei jeder Änderung wird die geänderte Datei auf den
1&1 FTP-Server gespielt

Wie geht es nun praktisch?

Die Daten von den Außensensoren werden per Funk an die WS500 in der Veranda übermittelt. Leider
sind die Sender nicht so stark, daher ist die gegenwärtige Position im Ausgang des Wintergartens die
einzig mögliche (siehe hierzu auch den Bericht „Tja, wo hängt sie denn nun?“). Per USB Verbindung
werden die Daten an den Internetrechner im Vorstandszimmer gesendet. Da die Kabellänge mehr als 5
m sind wurde ein Repeater gesetzt (liegt hinter der neuen Wand über der Tür zum Saal).

2 von 4 31.05.2011 13:26


Tegeler Segel-Club Wetter http://www.tegeler-segel-club.de/wetter/wetter_technik.html

Auf dem Rechner im Vorstandszimmer läuft Weather Professional. Dieses Programm liest die Daten aus
der WS 500 aus und stellt sie grafisch auf der Benutzeroberfläche dar. Gleichzeitig sendet es die Daten
an den PostgreSQL Server, der sie wiederum in die Wetter-Datenbank schreibt. Weather Professional
kann auch Wetterverläufe darstellen. Dazu greift es per SQL-Abfrage über den PostgreSQL Server auf
die Datenbank zu.

Um die Daten aus der Datenbank für die Internetübermittlung auszulesen, erwies es sich als praktisch,
die Programmiersprache Java zu verwenden. Java ist eine indirekte Sprache, das heißt, die
geschriebenen Programmzeilen werden zunächst von einem Compiler in Maschinencode übersetzt und
dann als .class Datei gespeichert. Dieses .class-file kann dann mit dem java Hauptprogramm aus
gestartet werden. javac und java selbst haben keine nette Windows-Oberfläche, sondern funktionieren
von der DOS-Oberfläche aus. Man kann daher den aufrufenden Befehl in einer Batch Datei ablegen,
was mühsames tippen erspart (Hierbei sei angemerkt, dass sowohl beim javac als auch beim java
Befehl der gesamte classpath eingegeben werden muss. Und was ist ein classpath? java ist eine
objektorientierte Programmsprache. Das heißt, die Grundausführung enthält nur recht wenige Befehle.
Wer spezielle Befehle benötigt, lädt sich diese beim Programmstart ein. Die Befehle stehen in
Befehlssammlungen, die selber compilierte Java-Scripts darstellen. So stehen in der PostgreSQL JDBC
Sammlung (Endung zumeist .jar oder .zip) sämtliche Befehle, die Java für die Kommunikation mit der
Datenbank braucht. Damit Java weiß, wo diese Erweiterungsdateien zu finden sind, wird das Programm
mit der Syntax java -classpath Programmname aufgerufen. Achtung: Bei allem Java ist immer die
Groß/Kleinschreibung zu beachten. Also Programmname genauso schreiben, wie im Java-Script.) Die
Programmierung von java ist recht einfach, man mag es für eine Mischung aus Visual Basic und C
halten. Ein gutes Tutorial gibt es im Netz. Es empfiehlt, sich einen speziellen Java-Editor zu
verwenden. Besonders angetan hat mir der JBuilder von Borland, der mit deiner einfach zu
bedienenden Oberfläche und seiner genialen Syntaxkontrolle genau das richtige für Tippfehlerkünstler
wie mich ist. Daneben hat es durchaus Sinn gemacht sich mit einem Java Kompendium auszustatten,
allerdings sind die on-line Internethilfen zu Java auch sehr brauchbar. Ob das so ganz schick
programmiert ist, weiß ich als Java Newbie nicht, aber es läuft sehr stabil und gut is.

Das Java Script besteht aus drei Teilen (alles zusammen gibt es als Zip File zum Download:
jbproject.zip). Der erste Teil ist die Klasse Wetterdata.java Diese Klasse enthält als Werte zunächst den
Namen des Datensatzes, zum Beispiel „Außentemperatur“, die dazu gehörige Einheit, eventuell
bewusst festgesetzte Maximal- und Minimalwerte für die Plot Achsen und einiges mehr. Schließlich
enthält die Klasse auch zwei TimeSeriesCollection, die neben der Zeit die differentielle und kumulative
Darstellung der Werte enthalten. Neben der Daten enthält die Klasse die üblichen Getter und Setter
Methoden zum Handling und zudem die Methoden zur Erzeugung der verschiedenen Plots. Die Plots
selber werden von den JFreeChart erzeugt. Außer den 2D-Plots werden auch die Werte für die
Kompass-, Thermometer- und Tachometerdarstellung der aktuellen Werte hier erzeugt und
gespeichert. Dazu sind noch ein paar mehr Methoden notwendig. Exemplarisch sind zu nennen:
getLastYValue, getLastXValue usw.
Die zweite Klasse ist die Wetterserie.java. Diese stellt eine Art Container dar, in der 8 Wetterdata-
Klassen liegen. Mehr kann das Ding eigentlich nicht und ich bin nicht so sicher, ob ich das
entsprechende Kapitel im Java-Lehrbuch verstanden habe. Aber gut, läuft und gut!
Die dritte Klasse ist der Datawriter.java. Das ist die eigentliche Hauptklasse, die alles steuert und
bestimmt. Sie besteht aus einem GUI, das man eigentlich nicht wirklich braucht, aber das doch immer
ganz nett ist, um das System zu starten und zu schließen. Vielleicht lerne ich ja irgendwann einmal,
wie man das so programmiert, dass es in der Taskleiste verschwindet, aber solange ist es halt ein
Fenster, welches man minimieren muss, um auf den Desktop zu schauen. In dem Fenster hat man die
Möglichkeit das Skript zu starten, stoppen, pausieren und zu beenden. Man sieht die letzten
hochgeladenen Daten, die Parameter des letzten Datensatzes (i.e. Zeit und Datum) sowie ein großes
Feld, indem alle Fehlermeldungen des Skripts auflaufen.
Die Klasse initialisiert zunächst das GUI und startet dann eine Endlosschleife in der ein Zähler
innerhalb von 5 Minuten runtergezählt wird. Ist er bei 0 angekommen, beginnt das Auslesen der
Datenbank und die Erzeugung der Plots und Grafiken. Zudem wollten wir auch noch den Zeitstempel
des letzten Datensatzes in der Titelzeile sehen, so dass zudem der HTML Code des Frames ebenfalls
neu erzeugt wird. Für das Auslesen der Datenbank ist die Methode Extraktor verantwortlich, die die
Erzeugung des notwendigen SQL-Strings beherbergt und auch die primäre Aufbereitung der Daten
steuert. Er erzeugt den Datensatz als Form der TimeSeriesCollection, also einem Datumswert wird ein
Messwert zugeordnet. Wie schon erwähnt werden bei einigen Wetterwerten sowohl kumulative als
auch differentielle Daten angeboten (Regen, Sonne). Daher werden durchgehend für jeden Wettertyp
zwei dieser Datensätze erzeugt und abgelegt.
Nachdem die Datensätze vorliegen werden die Plots und Grafiken erzeugt und gleich in das Verzeichnis
C:\Upload gespeichert. Die Plots werden in zwei unterschiedlichen Auflösungen angeboten, damit man
draufklicken kann. Zum Schluss wird noch das HTML-File erzeugt. In diesem ändert sich dabei immer
die Kopfzeile, der Rest bleibt gleich.
Nach der Aktualisierung der Daten geht der Thread wieder für 300 Sekunden schlafen, so dass das
Programm solange ruht. Als kleinen Gimmick habe ich in der GUI einen Laufbalken und in der
Titelzeile die Sekundenzahl eingebaut.
Aufgerufen wird die Klasse mittels einer kleinen Batchdatei, die den Classpath enthält. Beim JBuilder
kann man sich die entsprechende Zeile sehr einfach aus dem statusfensetr aruskopieren und erspart
sich so viel viel Tipparbeit.

Um die neuen Dateien nun ins Internet zu bekommen, müssen sie auf den 1&1 FTP-Server geladen
werden. Dieser spiegelt sozusagen die Dateiablage des TSC im Internet wider. Um den Upload zu
automatisieren, wurde das Programm FTP Watchdog installiert. Diese bemerkt, wenn es zu einer
Veränderung im vorgegebenen Verzeichnis kommt und kopiert die neuen Dateien gleich auf den
FTP-Server hoch. Ultra-praktisch, wie ich finde.

Ich betrachte das Java-Skript als ebenso OpenSource wie alle Bauteile, die ich dafür verwendet habe
und möchte jeden WS500 Benutzer gerne ermutigen, sich den Code herunterzuladen, zu modifizieren,

3 von 4 31.05.2011 13:26


Tegeler Segel-Club Wetter http://www.tegeler-segel-club.de/wetter/wetter_technik.html

anzupassen und natürlich zu nutzen! Ich habe für die ganze Sache nichts weiter bezahlt, sondern habe
mich bei anderen dankenswerter Weise bedienen können, also soll es der Community nicht anders
gehen. Jeden Download fasse ich als Kompliment und jeden Kommentar als Wertschätzung auf!

Kai Jürgens
(Stand 19.07.2007)

4 von 4 31.05.2011 13:26

You might also like