Hat jemand die Befehle zum auslesen der Wetterstation, oder zumindest eine Idee wo man da eine Aufstellung dieser herbekriegen kann? Ich möchte nämlich meine WS an einen Linux-Server anschliessen, der mir die gemessenen Werte ausliest und speichert.
Würde mich auch interessieren. Vor allem das serielle Protokoll. Ich habe vor selbst eine Software zu schreiben... Allerdings auf Windows.
regards
Mercury
Hab mich inzwischen via eMail an LaCrosse gewandt, die rücken aber das Protokoll nicht heraus. Jetzt werd ich mir wahrscheinlich mal einen 2. PC ausleihen, diesen in die serielle Leitung einschleifen und mit einem kleinen Programm den Datenaustausch mit der Wetterstation abhorchen. Bin dann gerne bereit meine Ergebnisse zur weiteren Verfügung zu stellen wenn mir jemand bei der Entschlüsselung der Daten hilft.
Hallo ReinhardK,
hast Du schon einmal etwas von Portmon gehört
zu finden unter http://www.sysinternals.com/
Ist Freeware und Du brauchst keinen 2. PC dazu - funktioniert aber nicht unter WinXP - damit kannst Du wunderbar "mithorchen".
Werner
Danke Werner, bin kurz nach meinem Posting auch darauf gestoßen und auch schon probiert. Ist nur etwas schwierig den Datenverkehr rauszufinden, da scheinbar alles nur Byteweise, mit Statusabfrage der seriellen Schnittstelle zwischendrin, übertragen wird.
P.S. die "PortMon"-NT-Version läuft problemlos auch unter XP.
Hallo,
ich habe die PC-Wetterstation von ELV (WS PC-2000) dort im Anwenderhandbuch ist das Schnittstellenprotokoll beschrieben, sollte doch auch für die von Conrad passen?
(ist im PDF Format, kann es gerne zuschicken)
Bye,
Steven
Hallo Reinhard,
ich bin auch so einer wie du, der einen Server zum Datensammeln veranlassen will. Ich möchte zusätzlich noch in Abhängigkeit von Temperatur und Regenmenge ein Prozesskontrollprogramm füttern. Allerdings habe ich das WS2500-LCD Panel und die Beschreibungen die ich bisher so gesammelt habe sind nicht unbedingt schluessig.
Wie auch immer - es ist mir bis jetzt immerhin gelungen, die Wetterstation aufzuwecken, den Status auszulesen und Datensätze anzufordern und glaub mir, es ist recht aufwendig :wink:
Tatsache ist, dass Befehle und Daten in 'Frame Strings' eingebettet sind, die auch noch die Record-Länge und Checksumme beinhalten.
Die kommenden Abende werde ich wohl damit verbringen, die empfangenen Daten nachzubearbeiten und in einer Datenbank (MySQL) abzuspeichern.
Meld Dich bei mir, falls Du weitere Informationen benötigst.
Gruss aus Wiesbaden,
Dieter
Wie gehts der Protokollforschung ?
Hab auch die schöne Conrad WS2300
Das der PC 2400 Bd 8N1 fährt war ja noch einfach , die Schnittstellenleitung ( RTS hoch DTR tief ) werden scheinbar zur Versorgung gebraucht ..
Nur da war ein Bitklauber ersten ranges dran ! vom PC gibts da ca 13 Befehle ( also PC pollt ) alle 1 Byte lang , immer schön bit 0 = 0 bit 1 = 1 .. sehr witzig
Hat da jemand mehr ?
Das mitgelieferte " heavy wetter " Programm ist bestenfalls ein Mailüfterl !
wär ja schon neugierig wie das wirklich so tut
Gerald
Ja das geht ziemich zäh voran. Also mit dem DTR unt RTS setzen braucht es meiner Meinung nach nur zur Initialisierung der Schnittstelle. Die Kommunikation mit meiner WS klappt auch schon, aber 1.) weiß ich nicht was ich da anfrage und 2.) hab ich keinen Schimmer was ich da für eine Antwort bekomme.
OhwehOhwehOhweh,
ich hatte eigentlich vor, ein kleines Programm für Windows CE zu schreiben, um die WS-2300 auch unterwegs auslesen zu können. (Nein, keine Angst, die Außensensoren schleppe ich natürlich nicht mit. Aber als Segler wäre ich schon an den Termperatur-, Feuchte- und vor allem Luftdruckwerten, über den ganzen Tag geloggt, interessiert.)
Aber nach dem, was ich hier lese, ist es wohl alles andere als trivial, das RS232-Protokoll zu entschlüsseln. Ich habe es mit einem zweitem PC auch schon probiert, aber keinen Erfolg gehabt. :sad:
Steven: Kann ich von Dir das PDF Dokument bekommen?
Dieter (babba): Kann ich von Dir etwas lernen?
Am besten hier posten. Ich würde mich mit meinem WinCE Programm dann natürlich revanchieren :wink:
MuSB,
Detlef
Hallo Leute,
Ich interessiere mich auch für das Thema. Habe bereits die History.dat entschlüsselt und sämtliche Umrechnungsformeln erstellt. Z. B. 4 Bytes für die Regenmenge. Hier eine Subroutine in Visual Basic 6.
Private Sub Regenumrechnung(ab, ac, ad, ae, RE)
Basis = 63 * 256 ^ 3 + 128 * 256 ^ 2: Teiler = 8388608
BasisWert = ae * 256 ^ 3 + Int((ad * 256 ^ 2) / (128 * 256 ^ 2)) * (128 * 256 ^ 2)
Regen = ab + ac * 256 + ad * 256 ^ 2 + ae * 256 ^ 3
Faktor = (BasisWert - Basis) / Teiler
TeilerFaktor = (Teiler / 2 ^ Faktor): WertBasis = (Teiler / TeilerFaktor)
Wert = WertBasis + ((Regen - BasisWert) / TeilerFaktor)
RE = Format$(Wert, "##0.0")
X = Len(RE): WG1 = Left$(RE, X - 2): RE = WG1 + "." + Right$(RE, 1)
End Sub
Ich möchte die WS-2300 mit einem älteren Rechner (läuft bei Stromzufuhr noch von selbst an) und einer Schaltuhr unter Dos die Daten auf eine Diskette übertragen. Dazu benötige ich das Datenprotokoll. Das Protokoll der WS 2000 hat sehr wahrscheinlich nichts mit dem der 2300 zu tun. Wer hat ein Basicquellcode für das Auslesen der WS 2300 ?
Eine Datenzeile der History.dat beginnt immer mit C1 5A 53 68, dann 4 Bytes für Datum und Zeit, 4 Bytes für den Luftdruck usw. Dieses müssten die Bytes sein, die auch direkt von der Station kommen.
Heiner
na so schlimm kanns ja auch nicht sein - da haben wir schon einfachere Sachen nicht hingekriegt !
Also wenn die nächste Kaltfront mit Wochenend zusammenfällt werd ich mir ein kleines Ws2300 Simulationsprogramm basteln , damit sollt ma das doch rausfinden .. Traurig ist nur das Conrad das nicht rausrückt .
@ Heiner : das mit Datenzeile = Telegramm könnt schon hinkommen , hab jetzt leider die WS 2300 nicht zur Hand
Gerald
kann mir jemand die mail-adresse von LaCrosse geben?
Hi,
die Adresse ist http://www.lacrossetechnology.fr
Warum heißt die hier eigentlich immer Conrad WS2300? Die gibts doch woanders auch (und billiger)zu kaufen!
Rainer
Hallo,
ich bin Neueinsteiger mit Wetterstationen. Seit paar Tagen bin ich stolzer Besitzer einer WS2300. Mit diesem Gerät möchte ich selbst eine Hausautomatisierungsanlage aufbauen und programmieren. Allerdings brauche ich dazu die Befehle, wie ich sie ansteuern kann. Könnte mit jemand die Befehle zusenden ?
Vielen Dank im Voraus ...
Gruss
Hallo Leute,
wie sieht es denn zur Zeit mit der entschluesselung des Datenprotokolls der WS 2300 aus.
Ich habe das History file entschluesselt und einen Automationserver geschrieben, mit dem man die Daten der history.dat in anderen Porgrammen weiterverarbeiten kann, aber eigentlich will ich die Station dirkt ansprechen ohne uber das history.dat gehen zu muessen.
Wie weit seit Ihr bei der Entschluesselung des seriellen Protokolls. Wo könnte ich helfen ?
(Bitte Antworten auch kurz per mail direkt an mich schicken, da ich nicht immer ins forum schaue :smile: )
Gruss Joerg
Hallo Jörg.
Kannst du mal den Aufbau der History.Dat posten. Ich denke mal, daß ein großteil mit den Daten von der Wetterstation übereinstimmt. So könnte man wenigstens sehen, nach was man in den PortLogs suchen muss.
An alle anderen: Schon weiter gekommen?
cu
Marco
Hallo,
das Format ist -soweit ich das erraten konnte- relativ einfach aufgebaut:
4 BYTES HEADER (immer gleich -> C1 5A 53 68)
4 BYTES -> Datum+Zeit (Integer) Sekunden bis 07.02.2036 7:28:16
4 BYTES Luftdruck (float)
4 BYTES Windgeschwindigkeit in m/s (float)
1 BYTES Windrichtung (dabei ist 0 N und 15 NNW)
3 BYTES DUMMY
4 BYTES Gesamtregenmenge (float)
4 BYTES Innentemperatur (float)
4 BYTES Aussentemperatur (float)
1 BYTE Innenfeuchte (Integer)
1 BYTE DUMMY
1 BYTE Aussenfeuchte (Integer)
1 BYTE DUMMY
Hoffe, das hilft Euch weiter. Viel Erfolg beim Protokollentschlüsseln, ich bin leider nicht so fit, die serielle Schnittstelle abzuhören...
Wer es braucht, kann von mir ein Konverterscript in TCL bekommen. Bei Bedarf kurze Mail an Ulrich.Uphoff@gmx.de .
Gruß
Uli
[ Diese Nachricht wurde geändert von: uli_u am 2002-12-28 15:20 ]
Hier hab ich mal einen kurzen Auszug des Protokolls zwischen PC und Wetterstation (Werte sind hexadezimal). Ich denke mal das man selbst mit dem entschlüsselten History-File nicht unbedingt was daraus lesen kann.
PC -> Wetterstation
06 06 -> 02
06 -> 02
82 -> 00
8A -> 12
82 -> 20
82 -> 30
CA -> 32 12 58 6A
82 -> 00
8A -> 12
8E -> 23
AE -> 02
82 -> 00
8A -> 12
8E -> 23
AE -> 3B
DA -> 36 58 15 07 11 21 00 A6
82 -> 00
96 -> 15
8A -> 22
9E -> 37
CE -> 33 00 00 B0 B0
82 -> 00
92 -> 14
BA -> 02
06 -> 02
82 -> 00
96 -> 15
8A -> 22
9E -> 37
CE -> 33 00 00 B0 B0
82 -> 00
92 -> 14
BA -> 2E
B2 -> 3C
FE -> 3F 00 00 00 00 D0 14 56 15 10 11 02 21 19 27 10 E3
82 -> 00
92 -> 14
A6 -> 29
9E -> 37
EA -> 3A 51 00 00 40 40 00 58 19 24 09 6F
82 -> 00
92 -> 14
AE -> 2B
92 -> 34
EA -> 3A 00 00 00 61 17 00 28 11 27 08 E0
[ Diese Nachricht wurde geändert von: ReinhardK am 2002-12-28 15:37 ]
Hallo!
Ich habe mir ein kleines VB-Programm geschrieben, womit ich werte an die Serielle Schnittstelle schicken kann und sehe, was zurück kommt. Zusätzlich lasse ich PortMon von http://www.sysinternals.com laufen. Aber nach dem h&CA bekomme ich noch die h&32 und dann nix mehr. Jedes weitere h&CA erhöht das Ergebnis um h&16. Auch PortMon bringt nix.
Werde mich morgen mal weiter damit beschäftigen. Danke Uli für den Historyaufbau. Vielleicht bringt es ja etwas.
cu
Marco
Mal der aktuelle Stand:
Ich habe mein VB Programm soweit ausgebaut, daß es wie eine Wetterstation funktioniert, zumindest auf den Protokollausschnitt von Reinhard bezogen. Nachdem &HFE empfangen wurde, und die entsprechenden Daten geschickt wurden, wird die Windgeschwindigkeit und die Richtung angezeigt. In obigen Beispiel ist dies 0 km/h, Richtung WSW/247,5°, min 0 km/h und max 53,2 km/h.
Ich werde mal noch die restlichen Sachen einbinden. Die Logbücher sind ja noch lang.
Wenn jemand die Werte entschlüsselt hat, dann bitte hier mal posten.
cu
Marco
Hallo Centauri,
super Arbeit, weiter so!
Jetzt noch mal für jemand, der sich mit seriellen Schnittstellen nicht so auskennt:
Heisst das, der PC sendet FE und als Antwort kommt 3F 00 00 00 00 D0 14 56 15 10 11 02 21 19 27 10 E3? Sind darin die Daten verborgen?
Gruß
Uli
Hi
Weather display software works well with station (I did all the ahrd work decoding the data protocol).
So why re-invent the wheel?
Comments welcome!
( and you can create csv log files or even custom log files in weather display)
Cheers
Brian Hamilton
Hi
Weather display software works well with station (I did all the hard work decoding the data protocol).
So why re-invent the wheel?
Comments welcome!
( and you can create csv log files or even custom log files in weather display)
Cheers
Brian Hamilton
Auch mein großes Lob an Centauri, die Werte die du aus meinem Protokoll entschlüsselt hast stimmen mit meinem Display überein. Verrätst du uns wie du die Werte aus den Bits rausliest? Und hast du schon mehr rausgefunden?
My comment to Bryan:
The first wheel was made of stone or wood. Modern wheels are made from a mixture of rubber and steel and so they are much more better than the old wheels.
In my opinion then Weather Display Software is like a wheel of stone and so we try to evolve some alternatives.
Ich wünsch euch allen 'nen Guten Rutsch ins nächste Jahr ...
Reinhard
Hallo Reinhard, Brian,
die Software als "wheel of stone" zu bezeichnen ist etwas hart...
Das ist schon ein super Programm, allerdings mit vielleicht zu vielen Features. Meiner Meinung nach sollte die Datenübertragung getrennt von der Weiterverarbeitung erfolgen. Am besten mit einem kleinen Programm, von der Kommandozeile aufrufbar. Den Rest kann dann jeder selber erledigen.
Brian: Your program is really great but maybe with too many features. I would prefer a separation of data-communication and postprocessing. A small command-line driven tool for reading out the station-data would be great.
Auch Euch einen guten Rutsch and a happy new year
Gruss
Uli
[ Diese Nachricht wurde geändert von: uli_u am 2002-12-30 11:21 ]
Hallo Leute!
Gestern kurz vor dem Aufhören, kam die alles erleuchtende Einsicht. Ich fange gleich an einen Emulator für die WS 2300 zu schreiben.
Also hier mal zum allgemeinen Aufbau:
(alle Zahlen sind hexadezimal)
Am Anfang wird immer eine 06 gesendet. Einmal bedeutet, daß die Datenübertragung des letzten Datensatzes wieder holt wird. Zweimal bedeutet die komplett Zurücksetzung der Datenübertragung. Das passiert also bei jedem Neustart der Software.
Die Datenanforderung scheint einfach über Speicheradressen zu laufen.
Für jeden Datensatz werden 5 Byte zum Anforderung der Daten gesendet. Begonnen wird immer mit 82 worauf die Station 00 zur Bestätigung sendet. Das setzt die Speicheradresse zurück. Danach folgen 3 Byte als Speicheradresse. Das 5. Byte enthält die angeforderte Datenmenge.
Jetzt kommt das, was mir kurz vor Schluss aufgefallen ist. Es gibt eine Beziehung zwischen den Bytes, die die Software anfordert und denen, die die Station zurücksendet. Diese Beziehung kann man in eine Formel bringen:
(Anforderungcode-h82)/4 ergibt die Rechte Stelle (Bit 0-3) des Returncodes. Die linke Stelle (Bit 4-7) wird einfach durchnummeriert von 0 bis 3, wobei der Returncode in den Daten immer nochmal 3 hat.
Die selbe Logic steckt auch in dem Anforderungscode für die Datenbytes drin.
(Anforderungscode-hC2)/4=Anzahl der Datenbytes ohne Returncode.
Jeder Satz von Datenbytes hat am Ende eine Prüfsumme. Die Prüfsumme wird durch addieren der einzelnen Datenbytes gebildet (Ohne Returncode). Es wird von Ergebnis nur das Lowbyte verwendet. Ich werde das mal am Beispiel von Reinhard beschreiben:
82 -> 00
92 -> 14
BA -> 2E
B2 -> 3C
FE -> 3F 00 00 00 00 D0 14 56 15 10 11 02 21 19 27 10 E3
1. Zeile:
Anforderungscode 82
82-82=0
da 1. Zeile Returncode= 0*256+(82-82)/4=00
2. Zeile:
Anforderungscode 92
da 2. Zeile Returncode = 1*256+(92-82)/4=14
3. Zeile:
Anforderungscode BA
da 3. Zeile Returncode = 2*256+(BA-82)/4=2E
4. Zeile:
Anforderungscode B2
da 4. Zeile Returncode = 3*256+(B2-82)/4=3C
5. Zeile:
ist eine Besonderheit. Hier werden die Daten angefordert.
Die Bits 0-3 ergeben immer E. Die Bits 4-7 sind die Länge der Daten. In dem Fall F=16.
Der Returncode zählt ja nicht mit.
Der Returncode berechtnet sich wieder genauso:
3*256+(FE-82)/4=3F
warum der linke Teil 3 sein muß, ist unlogisch. Wahrscheinlich wurde irgendwann man der Speicher vergrößert.
Es gibt noch ein paar Besonderheiten. Antwortet die Basisstation mit einem falschen Returncode. Sendet die Software 06. Wenn dann eine 02 von der Station kommt, dann wird wieder bei der 82->00 angefangen. Sendet die Basisstation dagegen nichts, wird der Anforderungscode nochmal gesendet. Wenn wieder nichts kommt, wieder 06 gesendet.
Mit diesem Wissen und einem kompletten Satz der Daten kann man erstmal einen Emulator schreiben. Und genau das werde ich jetzt tun.
Sollten noch Fragen sein, einfach hier rein, werde ab und zu noch mal reinschauen, da ich hier bei meinen Eltern nur Modem habe.
An Uli: Ich habe die Daten leider noch nicht entschlüsselt. Das wird erst gehen, wenn der Emulator funktioniert und man gezielt die Bytes ändern kann. Aber dem Ziel sind wir schon sehr nahe gekommen.
An Brain: Leider in Deutsch, da mein Englisch unbrauchbar ist. Vielleicht Übersetzt es ja mal einer.
Du könntest und ja das Protokoll geben. Es würde der Aufbau der Daten reichen. Weather Display gefällt mir vom Design her nicht. Außerdem sind die Daten unübersichtlich angeordnet. Deswegen werde ich auf alle Fälle eine eigene Software schreiben. Ganz davon abgesehen, dass das riesigen Spass macht.
Außerdem möchte ich die Station vom PC aus steuern. Also auch die angezeigten Werte umstellen und die Einheiten. Und die Alarm stellen will ich ja auch, was sicherlich noch am leichtesten ist.
cu
Marco
[ Diese Nachricht wurde geändert von: Centauri am 2002-12-30 14:04 ]
[ Diese Nachricht wurde geändert von: Centauri am 2002-12-30 14:09 ]
Hi, mal wieder ein aktueller Stand.
Der Emulator läuft jetzt erstmal so 2 min. Dann fehlen noch ein paar Werte. Ich werde morgen mal noch länger protokollieren müssen.
cu
Marco
Hallo Marco,
das war ja mal ein interessantes Posting.
Auf die Sache mit der Prüfsumme im letzten Byte wäre ich glaube ich nicht gekommen.
Gönn Dir auch mal ein wenig Ruhe, Rom ist auch nicht an einem Tag erbaut worden.
(Freue mich aber trotzdem schon auf weitere Ergebnisse...)
Gruß
Uli
Hallo!
Wenn ich nicht in Ruhe arbeiten würde, wäre ich doch schon fertig. Ich mache immer nur Abends was.
Das mit der Prüfsumme war mir schon an Reinhards Posting aufgefallen.
Inzwischen habe ich schon die I/O-Temperatur entschlüsselt.
cu
Marco
Ich wünsche Euch allen noch einen guten Rutsch und ein erfolgreiches Jahr 2003!
[ Diese Nachricht wurde geändert von: Centauri am 2002-12-31 10:40 ]
Hallo zusammen,
erstmal ein Dankeschön alle, die sich für die Entschlüsselung von History-File und Datenprotokoll die Bits im die Ohren schlagen! Ich habe das Ding zu XMas bekommen und war von der Software auch nicht sonderlich begeistert. Mit den Daten über das History-File habe ich mal einen Prototypen für ein kleines Auswertungsprogramm gebaut, wie ich mir das vorstelle (klein, ein EXE, kein Setup, malt selber). Wer das Ding mal ausprobieren und dann seinen Kommentar abgeben möchte: http://www.ArminHanisch.de und dann den NavLink "Wetterstation" anwählen.
Armin
[ Diese Nachricht wurde geändert von: ArminH am 2003-01-10 15:42 ]
Hi Armin,
prima Tool, was Du da geschrieben hast. Ich habe mir mittlerweile Visual Basic .NET gekauft und eine Kommandozeilenversion geschrieben, habe aber leider (noch) keine Ahnung, wie ich das VB-EXE so verteilen kann, dass es bei anderen Leuten läuft. (Momentan fehlen immer ein paar dlls, wenn ich es auf anderen Rechnern ausführe.)
Eine Anmerkung zu Deinem Programm: Du solltest vielleicht noch den Sensorausfall abfangen. In der Regel sind dann die rel. Aussenfeuchtewerte über 100. Die Ausreisser sehen nicht gut aus in den Diagrammen.
Weiter so,
Gruß
Uli
Hallo Uli,
> prima Tool, was Du da geschrieben hast.
Danke! Ich habe aber schon wiedereiniges, was noch geändert werden muss. :smile:
> Ahnung, wie ich das VB-EXE so verteilen
> kann, dass es bei anderen Leuten läuft.
Alles, was Du mit VB.NET programmierst, benötigt zum Laufen das .NET Framework und das sind ca. 25 MByte Download, weshalb ich noch drauf verzichte, da der Verbreitungsgrad nich so hoch ist. MS gibt die Runtime zwar kostenlos ab (inkl. Komandozeilencompiler und Tools!), abernicht jeder will für ein 400K-Programm dann 25 MB Runtime downloaden, auch wenns nur einmal ist.
> Du solltest vielleicht noch den Sensorausfall abfangen.
Stimmt, habe ich auch bemerkt! Ausserdem werde ich eine Schwelle einbauen, ab wann der Feuchtesensor "Regen" meldet (bei der WS2300 ab 96%).
> Weiter so,
Klar doch.
Gruss,
Armin
PS: Hat vielleicht jemand eine Idee, was die letzten ca. 16 Byte nach den History-Sätzen in der Historydatei bedeuten?
hallo zusammen,
... bin auch noch ein newbee in Sachen Wetterstation. Wie Armin bastele ich auch daran, ein paar Diagramme zu erhalten. Ich habe eine Lösung gesucht, die lokal auf meinem Rechner funktioniert, aber auch ohne große Voraussetzungen mit einem Browser im Netz.
WXhistory ist ne feine Sache, hätte ich sowas früher gesehen, wäre ich mit meinem javascript-Zeugs vielleicht gar nicht angefangen...
Gruß Bernd
Hallo zusammen,
es gibt wieder einen neuen Build. Langsam wird der Prototyp brauchbar, danke für das Feedback. Derzeit arbeite ich daran, wie man den Sensorausfall in der Grafik am besten darstellt. Viel Spass beim Ausprobieren:
http://www.ArminHanisch.de
hallo Armin,
... sieht so aus, als hättest du doch ein paar Nachtschichten investiert.
Macht echt Spass, dein Tool auszutesten. :smile:
neulich fragtest du:
Zitat
PS: Hat vielleicht jemand eine Idee, was die letzten ca. 16 Byte nach den History-Sätzen in der Historydatei bedeuten?
irgendwo muss "heavy weather" wohl speichern,
- welche Dimensionen usw die Text_Ausgabe haben soll
- wie groß der Unterschied zwischen rel u, abs. Luftdruck ist.
_ ...
habe ich aber nicht überprüft, ob's in der history oder der setup.cnf gespeichert wird
die VorgabeHöhe 465 m üNN in deinem Tool, liest du wohl nicht aus der history.dat ?
mich würde noch interessieren, welches Speicherintervall ihr für angemessen haltet.
bis vor kurzem hatte ich noch gehofft, die Station würde Mittelwerte abspeichern.
Sieht aber so aus, das es die Momentanwerte sind.
Wenn man z.b. die Spitzenwindgeschwindigkeit auslesen möchte, bleibt einem wohl bisher nix anderes übrig als sie abzutippen?
bis dahin,
Gruß Bernd
Hallo Bernd,
> ... sieht so aus, als hättest du doch ein paar Nachtschichten investiert.
> Macht echt Spass, dein Tool auszutesten. :smile:
Ja, die Dateizeiten sind (leider) echt :smile:)
So langsam kristalliert sich mehr oder weniger ein "Nicht-EDVler" taugliches Bedienkonzept heraus.
> welche Dimensionen usw die Text_Ausgabe haben soll
> wie groß der Unterschied zwischen rel u, abs. Luftdruck ist.
Ich habe mal mit dem HexEditor und ein paar Testdateien nachgegraben. Da steht unter anderem das Datum des ersten Datensatzes, das Datum des latzten Datensatzes und die Anzahl der Datensätze. Damit fehlen mit nur noch 4 32bit-Werte, die immer 0 sind ...
Der erste 32bit-wert scheint wohl abhängig davon zu sein, was an der Station fuer die Einheiten eingestellt wurde, aber da habe ich noch kein System rausfinden können. Derzeit finde ich die eingestellte Differenz zwischen abs. und rel. Druck nicht in der Datei, die Station schreibt immer absolut-werte, aber irgendwo finde ich das Ding schon!
> die VorgabeHöhe 465 m üNN in deinem Tool, liest du wohl nicht aus der history.dat ?
Nein, das ist meine Ortshöhe :smile: Wobei ich neulich mit dem GPS im Garten war und festgestellt habe, dass die Karte lügt. Es sind doch nur 445 Meter :smile:
> mich würde noch interessieren, welches Speicherintervall ihr für angemessen haltet.
Ich habe eine Stunde eingestellt, was für meine Zwecke ausreicht und damit reicht ein "Entleeren" der daten einmal pro Woche am Freitagabend.
Was mir auch negativ auffiel, ist die Tatsache, dass die Station nicht mittelt, sondern Zeitwerte misst. Vor allem beim Wind ist das übel, so erhält man konstant zu niedrige Werte. Aber das ist bei dem Preius wohl zuviel verlangt.
Zum Schluss noch eine UI-Frage: wie würdest Du als benutzer die Eingabe des Auswertungszeitraums am besten finden? Per Auswahlliste wie jetzt oder Symbolleiste für alle Möglichkeiten oder per Eingabe? Ich werde wohl noch eine Checkbox "Kalendergrenzen" einbauen. Denn "Monat" kann ja bedeuten, die letzten 30 Tage oder der aktuelle Monat des Tages.
Gruesse,
Armin
hallo Armin,
... kommt dann vielleicht nicht so drauf an, die letzen Bytes in der History zu entziffern, interessanter wird's dann wohl, das Protokoll zu verstehen. Erste Tests mit Portmon hatte ich schon gemacht, aber funktioniert bei mir nicht, denn nach einiger Zeit wird heavy weather "ganz blass", das Protokoll wird wohl doch so sehr gestört, das heavy weather immer wieder initialisiert ( 06 06 82 sendet oder s.ä.) und versucht eine ordentliche Verbindung aufzunehmen ....
> UI-Frage: wie würdest Du als benutzer die Eingabe des Auswertungszeitraums am besten finden? Per Auswahlliste wie jetzt oder Symbolleiste für alle Möglichkeiten oder per Eingabe?
ich komme mit der jetzigen Eingabeform gut zurecht. Klappt auch wenn man alte Historys nochmal angucken will, mit dem Zoomen ist das ja ganz elegant gelöst.
Schön ware es allerdings, wenn man die Einstellungen in einer ini-Datei speichern könnte. (Welche Parameter, Farben, Skalendefinitionen, Pfade ...) Noch besser mehrere "Profile". Aber aufgepasst, ruckzuck ist dein Programm komfortabler als so manche Profiversion und das wollen wir ja auch nich ... :wink:
Bei meiner Grafikauswertung beziehe ich das Zeitfenster immer auf das letzte Datum, z.b. die letzen 2 oder 7 Tage.
Wenn man Wochen, Monats- oder Jahresbilanzen will, siehts wieder anders aus.
mal sehen, was die anderen User so meinen.
bis dahin
Gruß Bernd
Hallo Leute
Falls noch jemand Informationen zum Auslesen der Wetterstation braucht.
Ich bin im Rahmen meiner Technikerarbeit gerade damit beschäftigt eine Wetter-Web-Seite zu erstellen. Meine Station die WS2000PC von Conrad. Aber meines Wissens ist das Datenprotokoll identisch wie bei der WS2300.
Hier ein Beispiel zum Auslesen der DCF-Uhr:
Die Befehlsfolge dafür ist: SOH Befehl Prüfsumme EOT
Also für die Uhrzeit folgendes Byte-Array: 1 48 207 4
Für zb. Donnerstag den 13.03.2003 - 15:16:04 Uhr lautet die Antwort der Station:
02 07 14 15 16 04 13 05 13 05 13 9C 03
Zu beachten ist: Die Zahlenkombination 03 wird ersetzt durch 05 13 damit nicht vorzeitig ein ETX erkannt wird. Denn ETX hat den Code 03.
Also ist folgende Umwandlung zu machen:
02 07 14 15 16 04 13 05 13 05 13 9C 03
02 07 14 15 16 04 13 03 03 9C 03
Daraus Ergibt sich folgendes:
02 --> STX-Zeichen
07 --> Summe der Nachrichten-Bits
14 --> Die 1 steht für 'DCF OK'; Die 4 für den 4. Wochentag also Donnerstag
15 --> Stunden
16 --> Minuten
04 --> Sekunden
13 --> Tag
03 --> Monat
03 --> Jahr
9C --> Prüfsumme
03 --> ETX-Zeichen
Wer noch Fragen hat oder ein Beispielprogramm braucht kann sich per EMail bei mir melden.
Meine Programme sind jedoch nicht in VB, wie bei den meisten von euch sondern in C# geschrieben. Das war eine der vielen Richtlinien für mein Projekt.
In C# stellt das ganze eine besondere Herausforderung dar, da die serielle Schnittstelle nur über die Windows API angesprochen werden kann.
Viele Grüße und weiterhin viel Spaß mit dem Wetter,
Christian
[ Diese Nachricht wurde geändert von: Christian R. am 2003-03-15 17:43 ]
Sorry for talking in English. I can read German but my grammar...
Any progress on software for linux to use the ws 2300 data yet? Maybe this can be used as a base. The way I read this it that it only needs an little piece of scripting to link the ws 2300 data to this program. As long as someone knows howto of course :smile:. I would realy like to connect my station to my server to have the online 24/7.
http://www.hutchrick.com/wxnet/
[ Diese Nachricht wurde geändert von: JetLag am 2003-03-17 23:11 ]
Hallo Christian!
Ich habe meinen Osterurlaub der WS-2300 gewidmet.
Deswegen bin ich an deinem Posting sehr interessiert.
Mal noch ein paar Fragen:
Was verstehst du unter SOH, EOT, ETX, STX.
Dann ist mir der Sendestring noch nicht so schlüssig, da ich einen solchen String nirgendwo in meinen Protokollen finde (selbst als Hex nicht). Kannst du das noch mal etwas genauer erleutern?
Hast du eigentlich sowas wie einen Zeitplan oder Fertigstellungstermin für deine Arbeit?
Danke schon mal.
cu
Marco
hallo,
... mische mich hier mal kurz ein, damit der Thread aktuell bleibt.
@Centauri,
denke "heavy wheather" fragt die Station nie nach der DCF-Uhrzeit, deswegen kommt der Befehl auch nicht in deinen Protokollen vor.
hoffe, diese hex-Angaben für die Steuercodes sind richtig.
x01 SOH
x02 STX
x03 ETX
x04 EOT
bin gespannt, was ihr noch so raus findet ...
viel Erfolg
Gruß Bernd
Hallo Bernd.
Ich kenne aber immer noch nicht die Bedeutung der Abkürzungen.
cu
Marco
hoffe, diese hex-Angaben für die Steuercodes sind richtig.
x01 SOH start of header
x02 STX start of text
x03 ETX end of text
x04 EOT end of transmission
more ... (http://anubis.dkuug.dk/cultreg/registrations/number/50)
Gruss Bernd
Weitere Info zum Auslesen der WS-2300 findet ihr in:
"Komplette entschlüsselung für WS-2300?"
Also folgendes ist zum Protokoll von meiner Seite aus zu sagen:
Grundsätzlich kann man über die Schnittstelle den Speicherbereich der Station lesen und auch beschreiben.
Dazu muss man der Station die Speicherstelle mitteilen; zu beachten ist, das der Bereich in Nibbles (4bit) unterteilt ist (Jedes Nibble stellt eine Dezimalstelle der Wetterdaten dar).
Den Speicher liest man folgendermassen:
Beispiel: von Adresse 0x03AD will ich 5 Byte (gleich zehn Nibble lesen)
Dazu werden der Station zunächst die vier Nibble (0,3,A,D) mit folgender Codierung mitgeteilt (das Nibble belegt die bits 2,3,4,5; die Adressbytes fangen mit 10 an, das Längenbyte fängt mit 11 an):
Als Antwort kommt von der Station im HighNibble die laufende Nummer (bis 3) und im lowNibble das gesendete SpeicherNibble.
1. BYTE: 10 0000 10 =0x82 (NIBBLE 0)
Antwort 0x00
2. BYTE: 10 0011 10 =0x8E (NIBBLE 3)
Antwort 0x13
3. BYTE: 10 1010 10 =0xAA (NIBBLE A)
Antwort 0x2A
4. BYTE: 10 1101 10 =0xB6 (NIBBLE D)
Antwort 0x3D
Als fünftes kommt dann die Länge:
5. BYTE: 11 0101 10 =0xD6 (Länge 5)
Antwort 0x35
Danach antwortet die Station mit den fünf Bytes des Speicherbereiches 0x03AD bis 0x3B7; als sechstes Byte kommt dann die checksumme (Summe aller Datenbyte)
Man kann maximal 15 (F) Byte anfordern.
Ich hoffe das ist so verständlich!
Der Speicherbereich scheint von 0x0000 bis 0x05FF zu gehen.
Beschreiben kann man den Speicher, wenn man nach den vier Adressbytes Bytes folgender Codierung abschickt:
Will man z.B. 0xA (binär 1010) schreiben so sendet man: 01 1010 10 = 0x6A; als Antwort erhält man: 0x1A
Die richtigen Antworten sollte man immer prüfen, da die Kommunikation nicht sehr stabil ist. Zur Not muss man mit 0x06 wieder synchronisieren (Antwort 0x02)
Ach so,
hier noch der soweit entschlüsselte Speicherbereich (wie gesagt, jedes Nibbel ist eine Dezimalstelle der Daten)
Bei mir funktionierts soweit. Für C++-Builder und PALM-OS hätte ich nen SourceCode.
#define MIN_SEK 0x200
#define UHRZEIT 0x23B
#define DATUM 0x240
#define TEMPERATUR_INNEN 0x346
#define TEMPERATUR_INNEN_MIN 0x34B
#define TEMPERATUR_INNEN_MIN_TIMEDATE 0x354
#define TEMPERATUR_INNEN_MAX 0x350
#define TEMPERATUR_INNEN_MAX_TIMEDATE 0x35E
#define TEMPERATUR_INNEN_HIGH_ALARM 0x369
#define TEMPERATUR_INNEN_LOW_ALARM 0x36E
#define TEMPERATUR_AUSSEN 0x373
#define TEMPERATUR_AUSSEN_MIN 0x378
#define TEMPERATUR_AUSSEN_MIN_TIMEDATE 0x381
#define TEMPERATUR_AUSSEN_MAX 0x37D
#define TEMPERATUR_AUSSEN_MAX_TIMEDATE 0x38B
#define TEMPERATUR_AUSSEN_HIGH_ALARM 0x39B
#define TEMPERATUR_AUSSEN_LOW_ALARM 0x396
#define WINDCHILL 0x3A0
#define WINDCHILL_MIN 0x3A5
#define WINDCHILL_MIN_TIMEDATE 0x3AE
#define WINDCHILL_MAX 0x3AA
#define WINDCHILL_MAX_TIMEDATE 0x3B8
#define WINDCHILL_HIGH_ALARM 0x3C8
#define WINDCHILL_LOW_ALARM 0x3C3
#define DEWPOINT 0x3CE
#define DEWPOINT_MIN 0x3D3
#define DEWPOINT_MIN_TIMEDATE 0x3DC
#define DEWPOINT_MAX 0x3D8
#define DEWPOINT_MAX_TIMEDATE 0x3E6
#define DEWPOINT_HIGH_ALARM 0x3F6
#define DEWPOINT_LOW_ALARM 0x3F1
#define FEUCHTE_INNEN 0x3FB
#define FEUCHTE_INNEN_MIN 0x3FD
#define FEUCHTE_INNEN_MIN_TIMEDATE 0x401
#define FEUCHTE_INNEN_MAX 0x3FF
#define FEUCHTE_INNEN_MAX_TIMEDATE 0x40B
#define FEUCHTE_INNEN_HIGH_ALARM 0x415
#define FEUCHTE_INNEN_LOW_ALARM 0x417
#define FEUCHTE_AUSSEN 0x419
#define FEUCHTE_AUSSEN_MIN 0x41B
#define FEUCHTE_AUSSEN_MIN_TIMEDATE 0x41F
#define FEUCHTE_AUSSEN_MAX 0x41D
#define FEUCHTE_AUSSEN_MAX_TIMEDATE 0x429
#define FEUCHTE_AUSSEN_HIGH_ALARM 0x435
#define FEUCHTE_AUSSEN_LOW_ALARM 0x433
#define RAIN_1H 0x49F
#define RAIN_1H_TIMEDATE 0x4A3
#define RAIN_1H_ALARM 0x4B0
#define RAIN_24H 0x4BC
#define RAIN_24H_TIMEDATE 0x4C0
#define RAIN_24H_ALARM 0x4CD
#define RAIN_TOTAL 0x4D3
#define RAIN_TOTAL_TIMEDATE 0x4D7
#define WIND 0x4EC
#define WIND_MIN 0x4F0
#define WIND_MIN_TIMEDATE 0x4F8
#define WIND_MAX 0x4F4
#define WIND_MAX_TIMEDATE 0x502
#define WIND_ALARM_LOW 0x533
#define WIND_ALARM_HIGH 0x538
#define WINDRICHTUNG_AKT 0x52C
#define WINDRICHTUNG_5_HISTORIE 0x52D
#define REL_DRUCK 0x5E2
#define REL_DRUCK_MIN 0x600
#define REL_DRUCK_MIN_TIMEDATE 0x61E
#define REL_DRUCK_MAX 0x614
#define REL_DRUCK_MAX_TIMEDATE 0x628
#define REL_DRUCK_LOW_ALARM 0x63C
#define REL_DRUCK_HIGH_ALARM 0x650
#define ABS_DRUCK 0x5D8
#define ABS_DRUCK_MIN 0x5F6
#define ABS_DRUCK_MAX 0x60A
Hi,
>> #define RAIN_1H 0x49F
>> #define RAIN_24H 0x4BC
>> #define RAIN_TOTAL 0x4D3
I am not sure for theses values ?
I got 0x497, 0x4B4, 0x4D2
Did i missed something ?
See my perl prog
http://perso.wanadoo.fr/claude.ocquidant/
Hi,
maybe You are right. Rain was my best guess, as no rain has fallen so far.
Hallo Leute,
wie kann man an der Station selbst die Gesammtregenmenge wieder auf Null zurücksetzen?
Es klappt nicht :evil:
Danke schon mal für die Auskunft.
Guckt mal bei
Kenneth Lavrsen rein. Da gibt es C-Code für die wichtigsten Funktionen.
Dort gibt es auch eine Memory Map der Ws2300.
Gruß,
Oschen Lars
Regendaten:
Im Memory-Map steht für die Adressen 0446 ff und 0479 ff "coding unknown". Erstmal zum Rain 1h. Der beginnt (bei mir) bei 0478 und nicht bei 0479.
Die Kodierung ist einfach. Die 24 h area umfasst 24 Werte. Darin werden jeweils die Summen einer Stunde eingetragen. Die 1 h area umfasst 15 Werte, also je 4 Minuten der letzten Stunde. Die Werte sind 1:1 die Wippenbewegungen, also 0.518 Steps ohne weitere Umrechnung. Mit diesem Wissen kann man, wer's mag, natürlich spielen. Wenn ich früh wissen will, ob es Nachts geregnet hat (und ich nicht gießen muss ;-), kann ich den Wert der letzten x-Stunden auslesen/errechnen. Oder ich lasse mir anzeigen, vor wievielen Stunden / Minuten (bis zu 24;-) der letzte Regen war.
Allerdings wird in der Station irgnedwo noch gepuffert und gerechnet. Wenn man einen Regenalarm haben will, nutzt man besser die Adresse 0x043a (1 Byte). Verändert sich der Wert, hat sich die Wippe bewegt. Bei Beginn hat man den Alarm eine Übertragung eher als die Änderung im Rain 1 h. Allerdings ist selbst das bei leichtem Regen vielleicht etwas spät? Die Luftfeuchte halte ich aber für noch ungenauer, um den Beginn eines Regens feststellen zu können.
Das Implementieren der des Bit-Set/Unset kann man sich sparen. Beispiel Backlight - man schaltet nicht direkt sondern legt nur fest, ob das Licht bei Tastendruck angeht. Für die Schnittstelle sicher nicht interessant.
Ein Software flow control konnte ich nicht feststellen. Wichtig ist, dass DTR passive ist, also high (+) und RTS active, also low (-). Das dient der Stromversorgung der RS232 in der WS23xx.
Noch eine Anmerkung zur Übertagung. Die Schnittstelle ist recht unzuveläsig. Man muss wirklich jede Antworte der Station auf Richtigkeit prüfen, auch die abschließende Prüfsumme. Stimmt eine der Antworten nicht, muss man von vorn beginnen. Einzig wenn ein Timeout vorliegt, also die Station auf eine Adressbyteübertragung nicht reagiert, kann man es mit Wiederholungen versuchen, meist geht es bei der ersten Wiederholung.
Gruß,
Peter
..aus Interesse habe ich damit begonnen unter Linux mit Qt4 eine Applikation zu schreiben, welche die ws-2300 ausliest und die Ergebnisse graphisch aufbereitet.
Das hat soweit auch funktioniert, dank der Vorlage die Kenneth (http://www.lavrsen.dk) mit open2300 geliefert hat und auch mit der Dokumentation von Claude (http://pagesperso-orange.fr/claude.ocquidant/autrespages/leprotocol/protocol.htm).
Den C++Code will ich unter GPL veröffentlichen, aber noch habe ich ein Problem mit dem Reset der Seriellen Kommunikation.
Der Reset funktioniert bei mir meistens (90%) so wie bei Claude und Kenneth beschrieben: man sendet 0x6 und empfängt 0x2. Leider gerate ich immer wieder in einen Status, bei dem die ws-2300 gar keine Antwort mehr schickt, auch nicht auf die 0x6. Bisher komme ich aus so einem "Deadlock" nur raus, wenn ich den Com-Port schliesse und wieder öffne ("harsh reset").
Eine leichte Verbesserung konnte ich erreichen, indem ich statt der von Kenneth/Claude empfohlenen 0x6 eine 0x66 oder 0x62 sende. Speziell die 0x66 ergibt auf der seriellen Leitung "zwei breite Pulse" und scheint von der ws-2300 gut erkannt und honoriert zu werden (die Adress-Befehle werden ja immer mit 0x82 so verundet, so dass im Signalbild am Anfang der schmale Puls der 0x80 steht). Aber auch mit 0x66 gerate ich irgendwann in diese Situation, dass die Station "gar nicht mehr" antwortet (das heisst bis zum nächsten ttyS0-Close/Open Zyklus).
Auch ein "Tauschen" von DTR und RTS (als DTR high und RTS low) für 0,5sec vor dem Senden der 0x6 bzw. 0x66 bringt leider kein "Wiedererwachen" der ws-2300.
Hat jemand von Euch einen Tipp? :-?
Danke und freundliche Grüße!
Thomas
...habe das oben beschriebene Problem jetzt mal so "gelöst", dass ich für jeden Lesezyklus den seriellen Port dediziert öffne und sofort danach wieder schliesse. Ein dauerhaftes offenhalten habe ich nicht hinbekommen.
Das Ergebnis habe ich hier zur Diskussion gestellt:
Display für ws-2300 via Linux/KDE/Qt4 (http://www.wetterstationen.info/phpBB/viewtopic.php?t=15579)
Freundliche Grüße!
Tom / dieselman 8-)