• 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ü

Conrad WS-2300 auslesen

Begonnen von ReinhardK, 25.08.2002, 18:56:00

⏪ vorheriges - nächstes ⏩

Centauri

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

mpu

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

Centauri

Hallo Bernd.

Ich kenne aber immer noch nicht die Bedeutung der Abkürzungen.

cu
Marco

mpu

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 ...

Gruss Bernd

smauerhofer

Weitere Info zum Auslesen der WS-2300 findet ihr in:
"Komplette entschlüsselung für WS-2300?"

stolzerbesitzer

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)


stolzerbesitzer

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

anonymous

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/


stolzerbesitzer

Hi,

maybe You are right. Rain was my best guess, as no rain has fallen so far.


Niederländer

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.