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
> 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"
:
Bearbeitet durch User
Nicht nur das Polynom ist maßgebend, sondern auch die Reihenfolge der Bits sowie ein eventueller Offset. Da gibt es sehr viele Kombinationsmöglichkeiten. https://crccalc.com
@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
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)
Siehe auch: Sensor für Wetterstation von Technoline (ALDI) decodieren, Sensor TX 205 D-TH https://forum.arduino.cc/index.php?topic=634469.0
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.
@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
@Wolfgang Danke für deine Mühe, diesen Thread habe ich im Arduino-Forum eröffnet, bis jetzt habe ich von dort aber keine Rückmeldung. Vielleicht kommt ja noch etwas... Grüße Rainer
@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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.