• Willkommen im Forum „Wetterstationsforum.info - Archiv“.
 

Neuigkeiten:

Dieses Forum dient ausschließlich zu Archivzwecken.
Für Fragen nutze bitte unser aktuelles Forum, welches du unter https://wetterstationsforum.info findest.

Hauptmenü

Neue Linux SW für wmr928

Begonnen von docbee, 16.09.2006, 01:49:52

⏪ vorheriges - nächstes ⏩

docbee

Moin,
nachdem ich nun auch eine wmr928 besitze, habe ich dazu für meinen Linux Server eine neue SW in C und Perl geschrieben, mit der man die Wetterdaten auslesen, konsolidieren und als Grafik in seine Homepage einbinden kann.
Ihr seid herzlich eingeladen, Euch die ersten Ergebnisse auf meiner Homepage anzusehen (Rubrik Wetter) und könnt auch gerne den Quelltext downloaden (Rubrik Projekt).

Die C und Perl Programme sind nicht sonderlich komplex, bieten aber bereits die Möglichkeit zur Ausgabe in verschiedenen Graph-Typen und zur Kommunikation mit verschiedenen Wetternetzwerken. Der Code ist nur schwach kommentiert, was angesichts der geringen Komplexität aber ok sein sollte. Ihr könnt es bei Bedarf gemäß GPL weiterverwenden und recyclen.

OK, genug der Vorrede, hier ist die URL: http://www.pasternak.net

Da ich in der Wetterszene neu bin, nehme ich auch gerne Hinweise auf meterologische Mißstände/Fehler entgegen.
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge

obi_wetter

Hallo docbee
auf der Windseite sind die Angaben für Böenspitzen tiefer als für die Durchschnittsgeschwindigkeit. Ich hätte es umgekehrt erwartet...
Gruss von Hans

docbee

Uuups,
da habe ich die falschen Werte referenziert. Danke für den Hinweis, sollte jetzt stimmen.
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge

Lazarus Long

Ich packe mal meine Frage indiesen Thread, denn ganz so falsch ist er ja nicht ;-)

Also:
Welchen Font verwendest du?
Ich bekomme immer eine Fehlermeldung, wenn ich die weather.pl im cgi-bin starte:
---
Could not find/open font when opening font lsans, using default
---

(Wenn ich sie, die komplette Perl-Datei, nicht ihr Ergebnis, mit dem Browser aus dem cgi-bin öffnen will, wird sie mir zum Download angeboten.
Wunder, oh Wunder.
Bei meinem Apache2 ist das apache2_mod_perl Paket installiert (debian sarge).
komisch
)
Das leben ist Lang
Das Wetter ist schön(?) ;-)

Lazarus Long

Berlin: http://www.lichterfelde-ost.de/Wetter.php Vantage 2 Pro

docbee

1. Font
ich habe auf meinem Server die "lsans.ttf" von Windows XP installiert. Default geht aber auch, sieht nur nicht so schön aus. Ggf kannst Du den Font in der Zeile 26 der weather.pl auf einen bei Dir installierten Font ändern.

2. Perl
Du mußt nicht nur das mod-perl installieren sondern auch noch spezifizieren, dass Dateien, die auf .pl enden, ausgeführt und nicht ausgeliefert werden. Siehe Dokumentation von mod-perl (insbsondere load-module, perl-module, set-handler, perl-response-handler, perl-option, exec-cgi), auch chmod a+x nicht vergessen. Hier kann es viele Gründe geben.
Ich verwende Suse, meines Wissens ist bei debian der apache nur sehr rudimentär vorkonfiguriert. Vielleicht erwartet er die Sachen in einem perl-Verzeichnis anstelle des cgi-bin-Verzeichnisses... just guessing.
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge

Lazarus Long

Ok, Fehler gefunden.
Aus mir nicht bekannten gründen fehlte beim Perl-Modul die Zeile
---
AddHandler cgi-script .cgi .pl
---

.cgi ist nicht so wichtig, .pl sollte aber nicht fehlen.

Da habe ich hinzugefügt, und den Apache neu gestartet.
Jetzt funztz.

----------
wobei:
Ich habe das start-stop-script für /etc/init.d etwas angepasst, da das mitgelieferte nicht bei Debian funktioniert (was SuSE auch so alles treibt ;-))

Hier meine Version:

#!/bin/sh
# grabbing der WMR 928-NX Wetterstation

WMR928D_BIN="/usr/local/bin/wmr928d"
WMR928D_OPTS="-s /dev/XPort -w /var/log/wmr928/"



case "$1" in
'start')
        $WMR928D_BIN $WMR928D_OPTS 1> /dev/nul 2>/dev/nul &
       ps h -C wmr928d -o pid,args | awk "/$IFACE/ { print \$1 }" > /var/run/wmr928.pid
       ;;
'stop')
       kill -9 `cat /var/run/wmr928.pid`
       rm -f /var/run/wmr928.pid
       ;;
'restart')
       kill -9 `cat /var/run/wmr928.pid`
       rm -f /var/run/wmr928.pid
       $WMR928D_BIN $WMR928D_OPTS 1> /dev/nul 2> /dev/nul &
       ps h -C wmr928d -o pid,args | awk "/$IFACE/ { print \$1 }" > /var/run/wmr928.pid
       ;;
'status')
       ps -ef|grep wmr928|grep local
       ;;
*)
       echo "Usage: $0 { start | stop | restart | status}"
       ;;
esac
exit 0

(Stoppen klappt nicht ganz sauber, in der PID-Datei stehen zwei PIDs, und es ist, wenn man die PID-Abfrage per Hand startet nur ein Prozess da. Wenn man also beide killt, melde die erste einen Fehler.
Computer)
Jetzt fehlen nur noch die Links in den rc*.d-Verzeichnissen ;-)

Die serielle Schnittstelle ist bei mir ja ein com2lan der c't, deshalb ein emulierter Com-Port mittels socat, der /dev/XPort heißt.
Das leben ist Lang
Das Wetter ist schön(?) ;-)

Lazarus Long

Berlin: http://www.lichterfelde-ost.de/Wetter.php Vantage 2 Pro

docbee

Freut mich, dass es bei Dir jetzt läuft.

Auch wenn es meist keine größere Hürde ist, kann einen die Vielzahl an Linux Distrubutionen und deren Spezifika gerade beim  /etc/init.d-Zweig schon nerven.
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge

docbee

Es gibt eine neue Version. Am Changelog könnt Ihr ablesen, ob es lohnt v1.3 durch v1.4 zu ersetzen.

http://www.pasternak.net/joomla/component/option,com_docman/task,doc_details/gid,29/Itemid,70/
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge

Lazarus Long

Hallo docbee,

mir ist aufgefallen, dass du die Pfade fest in den Programmen einkodiert hast.
Ich fände eine Config-Datei  (z.B. wmr928.cfg) schöner.

Dann könnte man die Programme auch ohne neukompilieren an einen anderen Platz verschieden. (wmr928.h, weather.pl,..), oder eine neue version kompilieren, ohne  dort wieder die Pfade ändern zu müssen.

Im Makefile ist das nicht das Problem, in anderen Dateien eher (man vergisst das ...)
Das leben ist Lang
Das Wetter ist schön(?) ;-)

Lazarus Long

Berlin: http://www.lichterfelde-ost.de/Wetter.php Vantage 2 Pro

docbee

Hi,
meiner Erinnerung nach sind in den c-Programmen nur drei Pfade "einkodiert" SERIAL_DEVICE, LOG_DIR und PORT. Alle drei sind als String in der wmr928.h gleich zu Beginn definiert, also leicht zu ändern. Man kommt aber auch völlig ohne Rekompilation aus, da man beim Aufruf von wmr928d und wmr928eval diese defaults per command-line paramter überschreiben kann (siehe -help).

In den Perl-Skripten habe ich ebenfalls versucht, die Definitionen von Konstanten zu Beginn zu plazieren und einfach änderbar zu halten.

Klar hast Du recht, es wäre auch schön das Alles in einer cfg zu kapseln, aber ich hatte einfach keinen rechten Bock, für den Minimal-Effekt ein weiteres Fass aufzumachen...

... funktioniert das Zeug denn ansonsten bei Dir einwandfrei? Welche Sensoren hast Du dran?
www.smartbedded.com the home of Meteohub - Meteoplug - Meteobridge