Hallo Leute, Ich glaube zwar nicht das dass hier das passende Forum ist aber ich frage trotzdem mal. Ich habe mir unlängst einige günstige Wettersensoren gekauft die auf 433mhz senden. Wie ihr wisst ist das band ja ziemlich überfüllt. Ich möchte diese nun möglichst zuverlässig auslesen. Was ich bereits entschlüsseln konnte waren alle "wetterparameter", was ich nicht hinbekommen habe ist die prüfsumme die gesandt wird. hat einer von euch hierzu eine idee? eine liste von beispiel-readings findet ihr hier: https://gist.github.com/mdorenka/b62185767a4d0071b243 viele grüße und vielen dank, marcel
Ich kopier das mal hier ins Forum. Dann braucht man nicht dauernd externe Links verfolgen
1 | READINGS |
2 | ======== |
3 | Temp = Temperature displayed on Sensor |
4 | Hu = Humidity displayed on Sensor |
5 | |
6 | SENT BY SENSOR |
7 | ============== |
8 | Rnd1 + Rnd2 = Random assigned device id |
9 | CH = Channel set by switch on Sensor |
10 | B = Battery state ( 1 = critical ) |
11 | S = Trigger ( 1 = manually) |
12 | TEMP = Temperature sent by Sensor multiplied by 10, as 2 complement in reverse order |
13 | HUM = Humidity sent by Sensor added with 156 and sent in reverse order |
14 | CS = Unknown Checksum algorithm |
15 | |
16 | Temp Hu Rnd1 CH Rnd2 B S TEMP HUM CS |
17 | 0123 45 6789 0 1 234567890123 45678901 2345 |
18 | -06,7 82 1110 01 1101 0 0 101111011111 01110111 0101 |
19 | -06,4 81 1110 01 1101 0 0 000000111111 10110111 1011 |
20 | -05,9 80 1110 01 1101 0 0 101000111111 00110111 1000 |
21 | -05,9 40 0000 01 0001 0 0 101000111111 00100011 0010 |
22 | -05,5 80 1110 01 1101 0 0 100100111111 00110111 1010 |
23 | -04,4 79 1110 01 1101 0 0 001010111111 11010111 0000 |
24 | -04,3 40 0000 01 0001 0 0 101010111111 00100011 1010 |
25 | -03,6 78 1110 01 1101 0 0 001110111111 01010111 1110 |
26 | -02,6 37 0000 01 0001 0 0 011001111111 10000011 0010 |
27 | -01,8 78 1110 01 1101 0 0 011101111111 01010111 0101 |
28 | -00,8 80 1110 01 1101 0 0 000111111111 00110111 1110 |
29 | +00,4 84 1110 01 1101 0 0 001000000000 00001111 0101 |
30 | +01,0 34 0000 01 0001 0 0 011011111111 01111101 1000 |
31 | +02,0 90 1110 01 1101 0 0 001010000000 01101111 1000 |
32 | +02,6 90 1110 01 1101 0 0 010110000000 11101111 0001 |
33 | +03,8 79 1110 01 1101 0 1 011001000000 11010111 0000 |
34 | +04,9 62 1110 01 1101 0 0 100011000000 01011011 0100 |
35 | +05,4 60 1110 01 1101 0 0 011011000000 00011011 1010 |
36 | +06,7 52 1110 01 1101 0 0 110000100000 00001011 1101 |
37 | +08,5 50 1110 01 1101 0 0 101010100000 01110011 1101 |
38 | +09,2 48 1110 01 1101 0 0 001110100000 00110011 0000 |
39 | +10,1 49 1110 01 1101 0 0 101001100000 10110011 1101 |
40 | +11,2 49 1110 01 1101 0 0 000011100000 10110011 1110 |
41 | +11,4 51 1110 01 1101 0 1 010011100000 11110011 1100 |
42 | +15,1 51 1110 01 1101 0 0 111010010000 11110011 0100 |
43 | +15,6 54 1110 01 1101 0 1 001110010000 10001011 0100 |
44 | +21,2 65 1111 01 0010 0 1 110010110000 00111011 1100 |
45 | +21,8 67 1111 01 0010 0 1 010110110000 11111011 1011 |
46 | +22,1 54 1110 01 1101 0 0 101110110000 01001011 0000 |
47 | +22,1 54 1110 01 1101 0 1 101110110000 01001011 0001 |
48 | +22,1 65 1111 01 0010 1 1 101110110000 10111011 0100 |
49 | +22,1 66 1111 01 0010 1 0 101110110000 01111011 1101 |
50 | +22,2 54 1110 01 1101 0 1 011110110000 01001011 1001 |
51 | +22,2 55 1110 01 1101 0 1 011110110000 11001011 0101 |
52 | +22,2 55 1110 01 1101 0 1 011110110000 11001011 0101 |
53 | +22,2 56 1110 01 1101 0 1 011110110000 00101011 1101 |
54 | +22,3 54 1110 01 1101 0 0 111110110000 01001011 0100 |
55 | +22,3 55 1110 01 1101 0 0 111110110000 11001011 1100 |
56 | +22,4 54 1110 01 1101 0 0 000001110000 01001011 0010 |
57 | +22,4 54 1110 01 1101 0 0 000001110000 01001011 0010 |
58 | +22,4 56 1110 01 1101 0 0 000001110000 00101011 0110 |
59 | +22,4 56 1110 01 1101 0 1 000001110000 00101011 0111 |
60 | +22,5 55 1110 01 1101 0 1 100001110000 11001011 0111 |
61 | +22,7 56 1110 01 1101 0 0 110001110000 00101011 1001 |
62 | +22,7 56 1110 01 1101 0 1 110001110000 00101011 1000 |
63 | +22,9 70 1110 01 1101 0 1 101001110000 01010111 0101 |
64 | +23,0 70 1110 01 1101 0 0 011001110000 01000111 1101 |
65 | +23,2 53 1110 01 1100 0 0 000101110000 10001011 1001 |
66 | +23,2 53 1110 01 1100 0 1 000101110000 10001011 1000 |
67 | +24,2 54 1110 01 1101 0 0 010011110000 01001011 1110 |
68 | +24,2 54 1110 01 1101 0 1 010011110000 01001011 1111 |
69 | +25,5 48 1110 01 1101 0 0 111111110000 00110011 1011 |
70 | +25,7 48 1110 01 1101 0 0 100000001000 00110011 1000 |
71 | +25,8 48 1110 01 1101 0 0 010000001000 00110011 0100 |
72 | +25,9 49 1110 01 1101 0 0 110000001000 10110011 0010 |
73 | +26,3 50 1110 01 1101 0 0 111000001000 01110011 1001 |
74 | +26,6 51 1110 01 1101 0 0 010100001000 11110011 1011 |
75 | +26,7 52 1110 01 1101 0 0 110100001000 00001011 0000 |
76 | +26,8 52 1110 01 1101 0 0 001100001000 00001011 1000 |
> Ich habe mir unlängst einige günstige Wettersensoren gekauft
Hast du da irgendeine Typbezeichnung?
9 Bit ... das kommt mir seltsam vor.
Auf der anderen Seite sind deine Datensätze 33 Bits lang. Ebenfalls kein
Vielfaches von 8.
Die reinen Nutzdaten sind 29 Bit. Auch kein Vielfaches von 8.
Irgendwie seltsam das ganze Protokoll.
ne leider nicht. der prozessor/oder was auch immer ist auch ein COB 9 bit 29 bit? huh? nene du liest das falsch :) vorne steht das was auf dem display angezeigt wird (also temperatur und feuchtigkeit) der reist ist die komplette übertragung, d.h. insgesammt 36 bits (32 daten + 4 prüf)
Marcel D. schrieb: > 9 bit 29 bit? huh? nene du liest das falsch :) > vorne steht das was auf dem display angezeigt wird (also temperatur und > feuchtigkeit) Schon klar. Aber hier
1 | Temp Hu Rnd1 CH Rnd2 B S TEMP HUM CS |
2 | 0123 45 6789 0 1 234567890123 45678901 2345 |
3 | ^ ^ ^ |
das sind doch ... ähm, mea culpa, das sind 10-er unterteilungen. Ich habs als Bitzahlen pro Byte gelesen. OK. Checksummen sind normalerweise Byte-basiert. Bei deinen 4-Bit CHecksummen wäre dann Nibble-basiert naheliegend. Teil das ganze doch mal in 8-er Einheiten auf, so wie du die Bytes vom Empfänger rein kriegst. Wenn ich raten müsste, dann ist das entweder irgendwas CRC-basiertes oder irgendwas ganz einfaches, wie zb alle Nibbles aller Bytes miteinander X-or verknüpft oder aufsummiert
:
Bearbeitet durch User
xor habe ich bereits probiert auch das weglassen der adresse, des kanals und der statusinformationen (also nur die 5 nibbles für temperatur und humidity) passen bei xor nicht.
für alle die es interessiert die prüfsumme ergibt sich so man nimmt alle nibbles bis auf das letzte und invertiert die reihenfolge. man addiert diese man verUNDet das ganze mit 0xf der wert muss gleich dem invertierten letzten nibble sein.
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.