Wie kann ich herausbekommen, mit welchem Verfahren eine Prüfsumme erstellt wurde? Ich habe ein Funksignal (Temperatursensor) analysiert (eher mitgeschnitten) und herausbekommen, daß insgesammt 5 Byte übertragen werden. Das letzte Byte müßte meiner Meinung nach so etwas wie eine Prüfsumme sein. An CRC-8 habe ich auch schon gedacht, gibt es noch weitere "Norm"-Generatorpolynome außer '10011001' ? Auch soll es soetwas wie "sum8" usw. geben. Wo finde ich aber den Berechnungsalgorithmus? (ja, ich habe google schon mehrere Stunden gequält). Eine Übertragung war: 0xAE 0xDF 0x40 0x04 0x0C Mit besten Grüßen, Maart
Also meines Wissens nach gibt es nur ein CRC8 Generatorpolynom. Ist ja auch Sinn und Zweck einer Standardisierung;-) Was macht dich so sicher, dass es eine Art Prüfsumme ist? Nach welchem Protokoll werden die Daten dort übertragen? Ich würde vielleicht dort anfangen, wo die Daten ankommen und weiterverarbeitet werden. Was auch immer dort steht, muss ja mit den Daten umgehen können. Vielleicht kannst du so rauskriegen, was die Daten bedeuten. VG larsen
Hallo larsen! Meine Nachforschungen haben ergeben: Das erste Byte steht für die Art des Sensors: Temperatursensor = 0xA0, Hygrosensor = 0xAE Das zweite Byte stellt wohl die "Seriennummer" des Sensors dar, sie ändert sich nach jedem Batteriewechsel. Byte 3 und 4 stellen die Temperatur/Luftfeuchte in BCD-codierter Form dar. Das letzte Byte hat sich bei gleichgeblieben Werten der Temperatur nur verändert, wenn auch die Sensor-ID (Byte2) verändert war. (Batterie wurde bei gleicher Temperatur entfernt und sofort wieder eingesetzt). Mit besten Grüßen, Maart
Also komplett verstehe ich das nicht. Warum soll sich die Sensor-ID verändern, wenn man die Batterie wechselt? Hat sich das letzte Byte komplett verändert oder nur an einer Stelle? Könnte doch auch einfach ein Zusammengesetztes Byte sein aus EOF und z.B. Parity-Bit. Die Parity-Prüfung gibts nämlich auch mehrdimensional. VG larsen (der name soll tatsächlich klein geschrieben werden. Du bist ser Erste, der das auch macht;-))
Wenn die "Sensor-ID" eine Adresse ist, die dynamisch vom Master vergeben wird, wenn sich ein Gerät bei ihm anmeldet, macht das schon Sinn, setzt aber halt eine Komunikation in beide Richtungen voraus. Auch Üblich ist eine XOR-Verknüpfung aller Werte zur Prüfsumme, scheint das hier aber nicht zu sein. CRC fände ich für diese Anwendung etwas übertrieben... Außerdem ist es immer schwierig, so etwas herauszufinden - selbst wenn das Generatorpolynom bekannt ist: Schiebt man rechts oder links herum, welchen Wert nimmt man für die Initialisierung, etc Das von Dir angegebene Generatorpolynom ist spiegelsymetrisch - habe ich bisher noch nie als Generatorpolynom gesehen. Für CRC8 kenne ich 10011 und 1101 Hast Du noch ein paar Datensätze, am besten welche, wo sich von einem zum anderen nur ein bit ändert (abgesehen von der Prüfsumme). Das würde das Ausprobieren vereinfachen. Gruß, Markus_8051
Die "Sensor-ID" (wie immmer man es auch nennen will) wird vom Sensor selbst nach jedem Batteriewechsel neu vergeben, deshalb muß die Empfangsstation auch "neu gestartet" werden. In dieser Phase werden die möglicherweise vorhandenen Sensoren registriert. Hier habe ich noch zwei Datensätze: 0xAE 0xEG 0x39 0x03 0x94 (bedeutet 39% Feutigkeit) Batterie entfernt und neu eingesetzt (=Sensor-Reset): 0xAE 0xEC 0x39 0x03 0x9A (bedeutet auch 39% Feuchtigkeit, die Station geht aber davon aus, daß es sich hier um einen zweiten Sensor handelt). Ich werde heute Abend noch weitere Datensätze auslesen. Vielen Dank für die bisherige Mühe. Mit besten Grüßen, Maart
0xAE 0xEG 0x39 0x03 0x94 Das zweite Byte ist 0xE__G__ ?? Gruß Hagen
Hallo Hagen! Ja,ja wenn man die eigene Klaue nicht lesen kann! Es muß natürlich 0xE"6" heißen! Habe die Binärfolgen in Hex umgewandelt und beim Tippen nicht weiter darüber nachgedacht. Also noch mal richtig: 0xAE 0xEG 0x39 0x03 0x94 (39%) Sensor-Reset: 0xAE 0xEC 0x39 0x03 0x9A (39%) Mit besten Grüßen, Maart
Herrschaftszeiten! Was ist denn mit mir los? (copy & paste ist nicht immer gut!) 0xAE 0xE6 0x39 0x03 0x94 (39%) Sensor-Reset: 0xAE 0xEC 0x39 0x03 0x9A (39%) Mit besten Grüßen, Maart
Wenn Du Versuche machst, dann mach auch welche, wo sich zb. die Temperatur ein wenig aendert. Ideal waere wenn sich jedes der anderen 3 Bytes mal ein wenig aendern wuerde. In obigen ist zb. schon auffaellig, dass wenn sich die Id um 6 aendert, sich auch die Pruefsumme um 6 aendert. Das reicht aber (zumindest mir) noch nicht um da auf irgendwas zu kommen.
eine möglichkeit wäre: letztes byte ist prüfsumme, und errechnet sich wie folgt: byteweise!! summe der ersten 4 bytes + 0xC4 es fehlen allerdings noch mehr datenreihen, um diese behauptung zu verifizieren.
Teste mal die Bytefolge, die Maart in seinem ersten Beitrag hier angegeben hat. Ich glaube da klappt es nicht! Markus_8051
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.