Forum: Mikrocontroller und Digitale Elektronik Protokoll einer Wetterstation - Prüfsumme vorhanden?


von DA (Gast)


Lesenswert?

Hallo zusammen,

in den letzten Tagen habe ich angefangen das Protokoll einer Funk 
Wetterstation zu zerlegen. Die wichtigsten Werte habe ich bereits durch 
herumprobieren herausgefunden. Was mir derzeit noch Probleme macht, ist 
das überprüfen der empfangenen Daten, da immer wieder falsche Werte 
empfangen werden.

Folgendes habe ich bereits herausgefunden:
1
Byte 01: 31 //Unbekannt - Immer 31
2
Byte 02: 58 //Luftfeuchtigkeit %
3
Byte 03: 1A //Unbekannt - Immer 1A
4
Byte 04: E1 //Temperatur
5
Byte 05: 00 //Temperatur Prefix (00E1 = 225)/10 = 22,5°C
6
Byte 06: 00 //Unbekannt
7
Byte 07: E1 //Temperatur (Wiederholung)
8
Byte 08: 00 //Temperatur Prefix (Wiederholung)
9
Byte 09: 04 //Windrichtung
10
Byte 10: 02 //Windgeschwindigkeit (evtl. durchschnitt)
11
Byte 11: 00 //Unbekannt
12
Byte 12: 08 //Windgeschwindigkeit?
13
Byte 13: 00 //Unbekannt
14
Byte 14: 1F //Regenmenge (Aufsteigend)
15
Byte 15: 01 //Regen (Durchschnitt)?
16
Byte 16: 00 //Regen (Max)?
17
Byte 17: 08 //UV Wert
18
Byte 18: 3F //Unbekannt - Immer 3F
19
Byte 19: B1 //Unbekannt - Immer B1
20
Byte 20: E7 //Unbekannt - über längere Zeit der Selbe Wert aber steigend
21
Byte 21: 00 //Unbekannt
22
Byte 22: D9 //Checksumme?

Leider bin ich nie auf die von mir vermutete Checksumme gekommen
CRC Rechner wie z.B. dieser haben mir ständig andere Werte berechnet: 
http://www.scadacore.com/field-applications/programming-calculators/online-checksum-calculator/

Deshalb frage ich mich ob es überhaupt eine Checksumme in diesen Daten 
gibt, da z.B. der Temperaturwert redundant übertragen wird?

von Gerd (Gast)


Lesenswert?

> Deshalb frage ich mich ob es überhaupt eine Checksumme in diesen Daten
> gibt, ...

Poste weitere Datensätze, dann könnte man es u. U. leichter sehen.

von Rainer B. (katastrophenheinz)


Lesenswert?

Mahlzeit,

bei dem Funksensor,den ich vor Jahren mal in der Mache hatte, wurde eine 
Checksumme auf Nibble-Basis berechnet, wenn ich mich recht erinnere. War 
ein TX18 von LaCrosse.

von DA (Gast)


Lesenswert?

Hier noch ein paar weitere Datensätze:
1
31 48 1A F5 00 00 F5 00 05 00 00 0C 00 1F 01 00 07 3F B1 E7 00 D3
2
31 48 1A F5 20 00 F5 00 0C 20 84 0C 80 9F 05 00 07 3F B1 E7 00 31
3
31 47 1A F5 00 00 F5 00 02 02 00 0C 00 1F 01 00 08 3F B1 E7 00 7F
4
31 48 1A F5 00 00 F5 10 2B 22 00 0C 00 1F 01 00 08 3F B1 E7 00 D0
5
31 47 1A F5 00 00 F5 00 08 04 00 0C 00 1F 01 00 08 3F B1 E7 00 04
6
31 47 1A F6 00 00 F6 00 0E 04 00 0C 00 1F 01 00 08 3F B1 E7 00 C2
7
31 47 1A F5 00 00 F5 00 0A 04 00 0A 00 1F 01 00 09 3F B1 E7 00 08
8
31 47 1A FE 00 00 FE 00 09 02 00 02 00 1F 01 00 14 3F B1 E7 00 47
9
31 07 1A FE 04 00 FE 00 07 00 00 0C 00 1F 11 00 14 3F B1 E7 00 9B
10
31 47 1A FE 00 00 FE 00 07 06 00 0C 00 1F 01 00 14 3F B1 E7 00 4B
11
31 47 1A FD 00 00 FD 00 0A 02 00 0C 00 9F 01 00 14 3F B1 E7 00 38
12
31 48 1A FC 00 00 FC 00 0A 06 00 0C 00 1F 01 00 13 3F B1 E7 00 7F
13
31 41 1A 2C 01 02 24 01 04 02 00 06 00 9F 05 02 26 3F B1 E7 00 6C
14
31 41 1A 26 01 00 26 01 0C 02 00 06 00 1F 01 00 25 3F B1 E7 00 39
15
31 39 1A 23 01 00 21 01 06 06 08 06 00 1F 01 80 24 3F B5 E7 00 20
16
31 39 5A 27 01 00 67 03 02 02 00 06 00 1F 01 08 23 3F B1 E7 00 A1
17
31 38 1A 2E 01 00 2E 01 08 00 00 06 00 1F 01 00 23 3F B1 E7 00 1D
18
31 38 1A 2F 01 00 2F 01 08 00 00 02 00 1F 03 00 24 3F B1 E7 00 B5
19
31 38 1A 32 01 00 32 01 0C 00 00 02 00 1F 01 00 23 3F B1 E7 00 EA

von DA (Gast)


Lesenswert?

Ein defekter ist auch reingerutscht ( Byte 3 nicht 1A):
31 39 5A 27 01 00 67 03 02 02 00 06 00 1F 01 08 23 3F B1 E7 00 A1

von mh (Gast)


Lesenswert?

Es soll ja angeblich mehr als einen 8-bit Prüfsummen-Algorithmus 
geben...

von DA (Gast)


Lesenswert?

Das ist durchaus möglich. Die letzten 5 Byte konnte ich nicht zuordnen, 
es könnten auch 5 Byte sein, wobei sich bei den meisten Übertragungen 
nur das letzte Byte ändert.

von hp-freund (Gast)


Lesenswert?

Es gib Leute die sich auch schon Gedanken darüber gemacht haben, wie 
z.B.:
http://wmrx00.sourceforge.net/Arduino/OregonScientific-RF-Protocols.pdf

Um welche Wetterstation handelt es sich denn?

von DA (Gast)


Lesenswert?

Es handelt sich um eine "Renkforce Funk-Wetterstation mit 
Gewitterwarnung"
Die ich günstig vom Restposten Tisch beim großen C bekommen habe.

von DA (Gast)


Lesenswert?

Auch in den Datensätzen mit dem selben End-Byte ist nicht viel zu 
erkennen:
1
31 47 1A F8 00 00 F8 00 0A 02 20 0A 00 1F 01 00 0E 3F B1 E7 00 2E
2
31 47 1A FF 00 00 FF 00 04 02 00 0C 00 1F 01 00 13 3F B1 E7 00 2E
3
31 92 1A 95 00 00 95 00 0E 00 00 00 00 40 01 00 05 01 B1 AC 01 2E
4
5
33 96 1A 88 00 00 88 00 0E 00 00 06 00 6C 01 00 05 3F B1 C1 01 26
6
31 98 1A 8D 00 00 8D 00 09 04 00 06 00 6C 01 00 05 3F B1 C1 01 26
7
31 62 1E D9 00 00 D9 04 0D 01 00 08 00 1F 01 00 05 25 B1 EC 00 26
8
9
31 94 1A 91 00 00 91 00 09 02 00 02 00 6E 01 00 0A 3F B1 C1 01 FE
10
31 96 1A 8C 00 00 8C 00 0D 02 00 0A 00 6C 01 10 06 3F B1 C1 01 FE
11
3B 98 1E A8 46 08 99 00 0F 48 25 10 00 6C 83 00 05 BF F9 C9 0D FE
12
31 97 1A 87 00 00 87 00 0D 00 00 06 00 6C 01 00 05 3F B1 C1 01 FE
13
31 98 1A 90 00 00 90 00 0B 00 00 00 00 6C 01 00 05 3F B1 C1 01 FE
14
15
31 98 1A 8C 00 00 8C 00 00 02 00 0C 00 6C 01 00 06 3F B1 C1 01 A2
16
31 98 1A 8C 00 00 8C 00 00 02 00 0C 00 6C 01 00 06 3F B1 C1 01 A2
17
31 98 1A 8C 00 00 8C 00 00 02 00 0C 00 6C 81 00 06 3F B1 C1 01 A2
18
19
31 56 9A EE 10 00 EE 00 07 00 00 08 00 1F 01 00 07 3F B1 E7 00 D3
20
3B D0 1A F6 00 20 F4 00 46 00 00 0C 00 1F 01 00 47 3F B1 E7 00 D3
21
31 48 1A F5 00 00 F5 00 05 00 00 0C 00 1F 01 00 07 3F B1 E7 00 D3
22
23
31 98 1A 8A 00 00 8A 00 0E 00 00 00 00 6C 01 00 05 3F B1 C1 01 CB
24
31 98 1A 8A 08 00 8A 00 0E 00 00 10 00 6C 01 00 45 3F B1 C1 01 CB
25
31 46 1A F6 00 00 F6 00 0D 02 00 0A 00 1F 01 00 09 3F B1 E7 00 CB
26
31 46 1A F7 00 00 F7 00 06 02 00 08 00 1F 01 00 0E 3F B1 E7 00 CB

von hp-freund (Gast)


Lesenswert?

Ist leider wirklich nicht viel zu finden :(

Die einzige Vermutung die ich fand war ein Hinweis auf einen Nachbau 
einer Davis Station.
Diese würde dann von weewx unterstützt.
Ist aber nur eine Vermutung.

Vielleicht musst Du die andere Richtung einschlagen:
eigene Datenpakete senden und sehen was die Station anzeigt.

von Helmut -. (dc3yc)


Lesenswert?

Suche auch mal nach Telegrammen, wo sich (ausser dem letzten) nur ein 
Datenbyte verändert. Vielleicht kann man da auf den Algorithmus 
schließen. Ist mir beim decodieren des WS2000-Protokolls auch gelungen.

von Wolfgang K. (donkracho)


Lesenswert?

22 Byte über 433MHz ASK fehlerfrei übertragen zu wollen ist schon sehr 
sportlich. In den üblichen Protokollen von Wettersensoren sind die 
Datenpakete deutlich kürzer und sie werden mehrfach wiederholt. Checks 
bestehen dann auch nicht aus aufwendigen Prüfsummenalgorithmen sondern 
einfachen Additionen oder XORs der Daten.

Es scheint mir, dass in den Datenpaketen des öfteren Bitkipper drin 
sind. Du schreibst ja selbst, das ab und an unsinnige Werte kommen. 
Bevor man versucht die Pakete zu analysieren muss man zunächst sicher 
sein, dass die empfangenen Daten auch richtig sind.

Hast du eine Möglichkeit das Signal direkt im Sensor abzugreifen bevor 
es in den Transmitter geht? Dann ist die 433MHz Übertragung schon mal 
als Fehlerquelle ausgeschlossen.

Wie ist denn der Dekoder aufgebaut? Evtl. erkennt der schon Nullen oder 
Einsen nicht zuverlässig.

von DA (Gast)


Lesenswert?

Danke für die Hinweise! Die eigentliche Übertragung findet bei 868MHz 
FSK über ein HopeRF RFM43BJ Funkmodul statt. In der Station wird mit 
einem RFM31 Funkmodul empfangen.

Ich bin der Empfehlung von Helmut gefolgt und habe Datensätze 
herausgesucht wo sich nur ein Byte verändert hat:
1
31 99 1A 77 00 00 77 00 0C 00 00 00 00 85 01 00 09 3F B1 CA 01 CD
2
31 99 1A 77 00 00 77 00 0C 00 00 00 00 85 01 00 09 3F B1 CA 01 CD
3
31 99 1A 78 00 00 78 00 0C 00 00 00 00 85 01 00 08 3F B1 CA 01 C3
4
31 99 1A 78 00 00 78 00 0C 00 00 00 00 85 01 00 08 3F B1 CA 01 C3
5
6
31 99 1A 64 00 00 64 00 0B 00 00 00 00 85 01 00 06 3F B1 CA 01 7D
7
31 99 1A 64 00 00 64 00 0B 00 00 00 00 85 01 00 06 3F B1 CA 01 7D
8
31 99 1A 64 00 00 64 00 0A 00 00 00 00 85 01 00 06 3F B1 CA 01 DA
9
31 99 1A 64 00 00 64 00 0A 00 00 00 00 85 01 00 06 3F B1 CA 01 DA

Im oberen Block hat sich die Temperatur um 0,1°C erhöht (77->78 = 11,9°C 
-> 12°C) Was in der Prüfsumme um 10 dez (205-195) verringert.

Im 2. Block hat sich die Windrichtung von A -> B geändert was die 
Prüfsumme um 93 dez (218 - 125) erhöht.

von DA (Gast)


Lesenswert?

Weitere steigende Temperaturwerte in HEX und Bin die mindestens 2x 
gleich übertragen wurden:
1
31        99        1A        85        0        0          85          0          E          0          0          0        0        85        1        0        5        3F        B1        CA        1        FA
2
00110001  10011001  00011010  10000101  00000000  00000000  10000101  00000000  00001110  00000000  00000000  00000000  00000000  10000101  00000001  00000000  00000101  00111111  10110001  11001010  00000001  11111010
3
31        99        1A        86        0        0          86          0          E          0          0          0        0        85        1        0        5        3F        B1        CA        1        C5
4
00110001  10011001  00011010  10000110  00000000  00000000  10000110  00000000  00001110  00000000  00000000  00000000  00000000  10000101  00000001  00000000  00000101  00111111  10110001  11001010  00000001  11000101
5
31        99        1A        88        0        0          88          0          E          0          0          0        0        85        1        0        5        3F        B1        CA        1        E4
6
00110001  10011001  00011010  10001000  00000000  00000000  10001000  00000000  00001110  00000000  00000000  00000000  00000000  10000101  00000001  00000000  00000101  00111111  10110001  11001010  00000001  11100100
7
31        97        1A        90        0        0          90          0          E          0          0          0        0        85        1        0        5        3F        B1        CA        1        83
8
00110001  10010111  00011010  10010000  00000000  00000000  10010000  00000000  00001110  00000000  00000000  00000000  00000000  10000101  00000001  00000000  00000101  00111111  10110001  11001010  00000001  10000011
9
31        97        1A        91        0        0          91          0          E          0          0          0        0        85        1        0        5        3F        B1        CA        1        61
10
00110001  10010111  00011010  10010001  00000000  00000000  10010001  00000000  00001110  00000000  00000000  00000000  00000000  10000101  00000001  00000000  00000101  00111111  10110001  11001010  00000001  01100001

von Just M. (justme_nl)


Lesenswert?

First: sorry that my reply is in english. My german is not as good and I 
don' want to rely on google translate.

Thank you for your work here, it helped me a lot to decipher the 
protocol. I found out it is as follows for the Ventus W266 and the 
Renkforce W205GU:

IDhh 1A tlth ?b tlth wb alahglgh rlrh?? uv ld?? lllhcrc
9827 1A B100 00 B100 06 00000000 1E0000 00 3F8A 2A0017

ID = house code, changes with a battery change
hh=humidity (bcd)
tlth=temperature-low/temphigh (*10)
b=battery (1=low),
wb=bearing (cw0-15)
alah=windaverage-low/high (m/s/2)
rlrh=rainfall-low/high (1/4mm),
uv=uvindex (*10)
ld=lightningstorm-distance (km, 3F is max)
lllh=strikecount-low/high (#)
crc (poly 0x31, init 0xff, revin&revout, xorout 0x00)

?? as of yet unknown

I found the crc using revenge (reveng.sourceforge.net)

Edit: typos

: Bearbeitet durch User
von spica (Gast)


Lesenswert?

Welche Baudrate hat das Protokoll und ist es Manchester codiert?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.