Wetterstation, Außensensor TX205 von Technoline auslesen, CRC-verfahren gesucht

OP (Firma: privat) #5962934
Lesenswert?

Hallo,
ich habe vor kurzem eine Wetterstation von Technoline samt Außensensor 
bei Aldi erstanden. Funktioniert prima, der Außensensor WT 205 D-TH 
funkt auf 433Mhz alle 60s die Temperatur und die Luftfeuchte an die 
Basisstation.
Nun habe ich mit einem Arduino-Uno und einem Superhet-Empfänger RBX6 die 
Signale des WT 205 mitgeschnitten und decodiert. Das 
Modulationsverfahren ist ASK und mittels UNO leicht zu decodieren.
Was ich bereits habe:

40 Bit werden übertragen, MSB zuerst nach dem Start/Sync-Bit
Die Message wird 6x gesendet.

Aufbau der Message:
MSB= 39 
LSB= 0

AAAAAAAA  BBBBBBBB  CCCCCCCCCCCC  DDDDDDDD  EEEE
39     32 31     24 23         12 11     4  3  0 bit

Legende:
A = Ident-Nr (nach Reset oder Batteriewechsel neu generiert) -> id(HEX)
B = Checksum ??? -> CRC (HEX)
C = Temperatur in Zehntel Grad Fahrenheit +900 (12bit Integer, unsigned) 
->cT (bereits in Grad Celsius umgerechnet)
D = Luftfeuchte in %, BCD-codiert (= Hexdarstellung, 8Bit binary) 
->H(HEX)
E = Channel-Nr (1-3) ->CH

Was mir noch fehlt, ist die Berechnung des CRC (bit24-31, B), da ich 
damit noch keinerlei Erfahrung habe.
In der angefügten Datei TX205_Technoline.doc habe ich mehrere Datensätze 
dargestellt, um dem CRC auf die Schliche zu kommen.
Außerdem füge ich noch den Arduino-Sketch bei.
Bitte um Hinweise, wenn jemand einen Lösungsweg erkennt.
Grüße
Rainer
Angehängte Dateien:
#5962982
Lesenswert?

> Bitte um Hinweise, wenn jemand einen Lösungsweg erkennt.

Zum finden unbekannter CRC-Eigenschaften kann ich nur reveng empfehlen:

http://reveng.sourceforge.net/

Braucht 3 Samplestreams und bekommt damit Polynom, Startwert etc. raus. 
Bei 8Bit sollte das in 0,nix gehen.

Edit: Hier habe ich das etwas näher beschrieben (die reveng-Doku ist 
etwas schwierig):

Beitrag "Tip: Reverse-Engineering von CRCs"
OP (Firma: privat) #5964429
Lesenswert?

@georga
Danke für die beiden Links, vor allem der Link zu deinem Beitrag 
enthielt einen weiteren Link zu einem Vortrag, welcher sehr anschaulich 
das reverse-CRC-Finding beschreibt 
(https://media.ccc.de/v/eh16-27-how_to_reverese_crcs).
Hat mir sehr weitergeholfen, bin schon am tüfteln...
Melde mich wieder und erstatte Bericht.

@GEKU(Gast)
Danke für den Hinweis, kann ich bestimmt gebrauchen, wenn ich etwas 
weiter bin.

Versuche gerade herauszufinden, welche Bits der B-Serie wirklich 
CRC-Bits sind oder noch Teil der Message darstellen. Datenaufzeichnung 
läuft...

Grüße
Rainer
Gast #5965029
Lesenswert?

Rainer M. schrieb:
> Versuche gerade herauszufinden, welche Bits der B-Serie wirklich
> CRC-Bits sind oder noch Teil der Message darstellen. Datenaufzeichnung
> läuft...

Wäre interessant  die Daten mit auf 0 gesetzten B-Bits an die 
Wetterstation zu senden.

Sollte die B-Bits ein CRC sein, dann wird die Wetterstation die Annahme 
der Daten verweigern.

Aber bitte vorher mit gültigen B-Bits aus dem Sniff probieren um andere 
Probleme auszuschließen, wenn die Daten nicht übernommen werden sollten 
(z B. Modulation)
#5965159
Lesenswert?

Rainer M. schrieb:
> Versuche gerade herauszufinden, welche Bits der B-Serie wirklich
> CRC-Bits sind oder noch Teil der Message darstellen. Datenaufzeichnung
> läuft...

Ich hab mir aber gerade mal dein doc angeschaut und habe irgendwie 
Zweifel, dass das überhaupt eine CRC ist. Dazu ist doch das hintere 
Nibble immer nur 0, 1 oder 2, das ist kein CRC-Verhalten. Ausserdem ist 
der Wert bei aufeinanderfolgenden Messwerten verdächtig häufig ebenfalls 
sequentiell. Mir sieht das eher nach einer ganz gewöhnlichen Summierung 
(zB. der Nibbles) aus.
OP (Firma: privat) #5965191
Lesenswert?

@georga
Danke, dass du auch über mein Problem nachdenkst, ähnliches hatte ich 
auch schon vermutet.
Das untere Nibble der B-Serie (bit 0-3) könnten noch weitere Statusbits 
sein, wofür auch immer (Batteriezustand, Starker Anstieg oder Abfall der 
Temperatur oder Feuchte...etc.), da sie relativ statisch sind.
Die bits 4-7 (oberes Nibble) von B könnten tatsächlich eine 
Aufsummierung der Nibbles der Message sein. Werde mal probehalber in 
meinen sketch eine Berechnung mit Summenbildung einbauen und mit 
verschiedenen Nibbles testen.
Danke für deine Denkanstösse, melde mich wieder...
Grüße
Rainer
OP (Firma: privat) #5965201
Lesenswert?

@GEKU
Guter Gedanke, habe sogar einen 433Mhz-Sender, direkt mit TTL-Pegel 
ansteuerbar. Nutze ich zum Schalten meiner Funksteckdosen von Conrad, 
klappt prima.
Werde diesen Gedanken mal im Hinterkopf behalten, sozusagen als 
Abschlusstest, wenn ich den Prüfalgorithmus ergründet habe.

Grüße
Rainer
OP (Firma: privat) #5970084
Lesenswert?

Hallo, hier meine neuesten Erkenntnisse:

Eine Aufsummierung der Nibbles brachte keinen Erfolg bis auf einige 
zufällige Übereinstimmungen. Habe einige Kombinationen getestet:
alle Nibbles der Message,
alle ohne das CRC-Nibble(oberes Nibble von B),
ohne CRC und id,
ohne CRC und id und CH,
dann alle Fälle nochmal mit Invertierung des Ergebnisses (^0xF).

Bleibt mir noch der Fall eines echten(üblichen) CRC mit der Division 
durch ein Polynom nten Grades (siehe Wikipedia 
[[https://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung]]) . Da 
ich hier weder das Polynom noch den Anfangswert und alle sonstigen 
Randbedingungen kenne, ist das der Fall, wo ich noch etwas Hilfe 
benötige oder Intuition, ev. hilft ja noch die Mathematik dahinter, bin 
noch am recherchieren und tüfteln.

Grundsätzlich stellt sich die Frage, welche Datenbits überhaupt in die 
Berechnung eingehen:
-alle mit oder ohne CRC-Bits,
-muss für die id und die Channel-Nummer überhaupt ein CRC geprüft 
werden, da bei falscher CH-Nr. der Datenstrom sowieso ungültig ist.
-welche Funktion hat die id überhaupt, da sie bei Batteriewechsel 
zufällig bestimmt wird

Werde mal im FHEM-Forum anfragen, ob dort dieser Sensor und das 
Protokoll bekannt sind.

Wer noch Ideen beisteuern kann, bitte melden !

Ach ja, die Grundfunktion Erkennung der übertragenen Daten wie 
Temperatur und Feuchte leistet mein Programm ja bereits, wer also gute 
Empfangsverhältnisse hat, kann die Werte schon weiterverwenden, die 
Prüfung mit dem CRC wäre natürlich das Sahnehäubchen...

Grüße
Rainer

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren