Beregning af checksum

Hejsa

Jeg har for et par dage siden haft dette indlæg postet i dk.videnskab, hvor der er kommet et par svar, men desværre ikke noget der har hjulpet mig videre, så jeg håber der er en her i gruppen der kan hjælpe, som ikke lige læser videnskabsgruppen.

Det er følgende termometer jeg mangler info om:

formatting link

_________________

Jeg roder med et lille projekt, hvor jeg læser nogle data fra en enhed, og 4 sæt data ser ud som følger:

11111111-FF 01000111-47 11000000-C0 11100010-E2 11111111-FF 01010110-56

11111111-FF 01000111-47 11000000-C0 11100100-E4 11111111-FF 00001100-0C

11111111-FF 01000111-47 11000000-C0 11100101-E5 11111111-FF 11111000-F8

11111111-FF 01000111-47 11000000-C0 11100110-E6 11111111-FF 11010101-D5

Beklager linjeskiftet, men det bestemmer jeg ikke helt her ;o)

Hver datablok består af 6 bytes, hvoraf den 6. tror jeg er checksum, men kan simpelthen ikke hitte hvordan den så er beregnet.

Det er nok tydeligt at se, at hver værdi er binært-hex.

Det er data fra et trådløst termometer, som jeg gerne vil læse fra omputeren, men for at være sikker på at de data jeg læser er i orden, er det jo rart at kunne beregne checksummen. Den første "FF" er sync-data, om den skal være med i checksummen, er jeg også i tvivl om.

Jeg har selvfølgelig rodet nettet rundt efter hjælp, men det er ikke lykkedes, og mit eget tomme hovede, har ikke hjulpet mig nok.

Er der en der er dygtigere end mig, der har et par minutter til at kikke på det, så ville det være rart.

Pft. Mvh Hauge

Reply to
Hauge
Loading thread data ...

Du siger du læse 4 data fra 1 enhed Får du 4 forskellige temperturere fra den samme enhed?

Hvilken føler bliver brugt? NTC? 3benet tempsenseor med data ud ala DS1820? eller noget analogt? for mig ser det rimmeligt statisk ud

1 2 3 4 5 6 0xFF 0x47 0xC0 0xE2 0xFF 0x56 0xFF 0x47 0xC0 0xE4 0xFF 0x0C 0xFF 0x47 0xC0 0xE5 0xFF 0xF8 0xFF 0x47 0xC0 0xE6 0xFF 0xD5

Umiddelbart vil jeg sige er her ikke er cheksum da der er stor forskel på byte 4 og 6 Men selvfølgelig kan der være noget heavy beregning men det er ikke simpel XOR eller SUM

Hvis du modtager 4 resultater vil jeg tro byte 4 ( E2,,E6) signaler kanal og din værdi blot er den sidste Byte 6

Hvis du modtager data manage gange er værdierne så ens? Hvis du rører ved 1 sencor er det så kun en linie der ænder sig og kun på sidste byte?

Prøv at uddybe lidt mere

Wiljan

Reply to
Wiljan

Hej Den 27-01-2012 19:46, Wiljan skrev:

En lille dims i metalhus, er sandsynligvis en diode eller ntc.

Nej.

Analogt.

E2, E4, E5 og E6 er temperatur i grader celcius, 0'et fra C0 foran, hører med til temperaturen, men har ikke haft målt over 25.4 grader.

Det er også det der volder mig kvaler, er ikek bare en lille forskel mellem en temperatur og så én grad højere.

Er også hvad jeg er kommet frem til.

Heldigvis har termometeret et display, så jeg kan se hvad den reelt sender af temperatur, det gør det lidt nemmere.

Ja, hvis du mener samme temperatur, så er det 100% de samme værdier hver gang, så sidste værdi er ikke bare en tæller.

Det er altid kun byte 4 der ændrer sig, så længe det er under 25.4 grader, altså lige udover den sidste byte.

Håber det var uddybning nok.

Har du prøvet at se på det fotoalbum som jeg linkede til? Det er et par og tyve biller af dimsen uden låg og så fra et program, jeg ikke kan finde ud af hvad er, og ham der har taget billederne, svarer ikke på Fjæsbog.

Mvh Hauge

Reply to
Hauge

ok havde ikke lige set billederne

Det er tydeligt at 0x47 er sensor ID han har også andre sensorer så du kan se på toppen af TV'et de passe til udlæsningen i PC programmet

Hvis vi kigger på hans DATA for sensor 0x47 ser de sådan ud

RAW: 470D9FF6A SensID:47 temp 217

21.700

som noget hex ser det sådan ud

0x47 0x0D 0x9F 0xF6 0xA.... og så mangler der 4 bit id 47,

0E 7F = 231 program dec = 0xE7 hex

0D 9F = 217 program dec = 0xD9 hex 0D 5F = 213 program dec = 0xD5 hex 0D 3F = 211 program dec = 0xD3 hex 0D 2F = 210 program dec = 0xD2 hex 09 5F = 149 program dec = 0x95 hex

Så dine værdier er lig med hvis man svapper lidt rund på dine bytes

Det forklarer bare ikke at du har 4 bit med end han har og hvad den sidste byte betyder Er du sikker på det ikke er støj når senderen slukker tx ?

Wiljan

Reply to
Wiljan

Hej Den 27-01-2012 21:46, Wiljan skrev:

Læg mærke til at 0xFF mangler han før 0x47, og det er sikkert fordi det er preamble, altså for at få modtageren til at styre sin AGC, så det ikke er en del af selve datastrømmen.

Hans temperatur på 21.7 grader = 217d, er jo 0xD9 (0x0D9), som jo er de

3 nibbles efter ID'en på 0x47.

22.6 grader = 0x0E2

22.8 grader = 0x0E4

22.9 grader = 0x0E5

22.3 grader = 0x0E6

Ovenstående temperaturer er det der stod på termometerets display, da jeg samplede data fra modtageren.

Ret sikker.

Men om det kun er én nibble af den hele bytes der er tilbage, der skal bruges til tjek, er jo et godt spørgsmål.

Mvh Hauge

Reply to
Hauge

Er du sikker på at du har den rigtige seriel settings? Jeg tænker på om du har kigget på 8n1 8o1 8e1 eller andet , evt målt med et scop for at se om baud raten passer ...

Kan jo være de er gået på kompromis for at spare penge så den ikke er helt standard... logic analyser eller storage scop ville være super at checke med

Btw

formatting link
de er super :-)

Wiljan

Reply to
Wiljan

Hej Den 28-01-2012 10:05, Wiljan skrev:

Det er målt direkte ud af en 433MHz modtager, med en digital analysator, og "dekodningen" fra pulsbredde til "1" og "0" er rigtig, både ud fra logik at de binære data passer med den aflæste temperatur på displayet og ud fra det som er på den screendump på siden med billederne.

Så jeg er 100% sikker på at selve de læste data er rigtige, om den første byte 0xFF skal bruges i tjek, ved jeg ikke, og hvordan selve checksummen skal beregnes, det ved jeg heller ikke. Men som sagt, jeg er 100% sikker på at min dekodning af det modtagne signal -> binær er rigtigt.

;o)

Jeg har både digital-scope, og analysatorer, så det er heldigvis ikke problemet ;o)

Tak for inputs.

Mvh Hauge

Reply to
Hauge

Kan du ikke lave nogle flere logginger over et større temp område så kan det være at det pludseligt er mere logisk med den sidste Byte

Hold på føleren så den går fra 20 og op mod de 30 stille og roligt

Reply to
Wiljan

Faldt lige over dette

formatting link

Siden er ikke online men goggle siden og vælg cache så står det pænere og med farve info

Der ligner rigtig meget det du roder med men passer stadig ikke på dine data

Protocol of the Lacrosse TX3-TH thermo/hygro sensor Compatible: TX4, et certainly others...

Each frame is 44 bits long. It is composed of:

1 bloc of four bits = 0 (start sequence) [blue] 9 blocks of four bits (data) 1 block of four bits (checksum) [red] Example 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1

Example 2 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0

1 1 0 0 0 0 0 1 1 0 0

Example 3 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0

1 1 1 0 0 1 0 0 1 1 1

Example 4 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 0 1 0 1

The active values of the frames are explained below:

Length of data [white] Type of measure (0=Thermo E=hygro) [yellow] Address of sensor [cyan] Unknown bit [purple] Measure [green] Checksum (Lower four bits of the sum of all words excluding header and length) [red] Example 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0

1 0 1 1 1 0 0 1 1 1 1 0 1 A 0 0 7 0 7 3 1 7 3 D Checksum: (A + 0 + 0 + E + 7 + 3 + 1 + 7 + 3) and F = D D

Example 2 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0

0 0 1 1 0 0 0 0 0 1 1 0 0 A E C 6 0 6 0 0 6 0 C Checksum: (A + E + C + C + 6 + 0 + 0 + 6 + 0) and F = C C

Example 3 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1

1 0 1 1 1 0 0 1 0 0 1 1 1 A 0 4 2 0 7 2 3 7 2 7 Checksum: (A + 0 + 4 + 4 + 7 + 2 + 3 + 7 + 2) and F = 7 7

Example 4 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0

0 0 1 0 1 0 0 1 0 0 1 0 1 A E 0 7 1 5 2 0 5 2 5 Checksum: (A + E + 0 + F + 5 + 2 + 0 + 5 + 2) and F = 5 5

Sensor type Sensor Address Data values Checksum

The measure is on 3 BCD digits, the two first digits are repeated to fill the 5 nibles.

For temperature, an offset of 50 deg has to be substracted from the measure.

[tempe] 23.1 deg [hygro] 60.0 % [tempe] 22.3 deg [hygro] 52.0 % I did not find the meaning of the purple bit.

I am interested by any comment or more information on the format of these frames. Contact: Jean-Paul ROUBELAT - F6FBB

Reply to
Wiljan

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.