Beregning af checksum

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
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:
https://plus.google.com/photos/116094058989603904081/albums?banner=pwa&gpsrc=pwrd1#photos/116094058989603904081/albums/5487001565194551441

_________________

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

Re: Beregning af checksum
Quoted text here. Click to load it

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


Re: Beregning af checksum
Hej
Den 27-01-2012 19:46, Wiljan skrev:
Quoted text here. Click to load it

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

Quoted text here. Click to load it

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.

Quoted text here. Click to load it

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

Quoted text here. Click to load it

Er også hvad jeg er kommet frem til.

Quoted text here. Click to load it

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

Quoted text here. Click to load it

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.

Quoted text here. Click to load it

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

Quoted text here. Click to load it

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

Re: Beregning af checksum
Quoted text here. Click to load it

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

Quoted text here. Click to load it

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


Re: Beregning af checksum
Hej
Den 27-01-2012 21:46, Wiljan skrev:
Quoted text here. Click to load it

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.


Quoted text here. Click to load it

22.6 grader = 0x0E2

Quoted text here. Click to load it

22.8 grader =  0x0E4

Quoted text here. Click to load it

22.9 grader = 0x0E5

Quoted text here. Click to load it

22.3 grader = 0x0E6

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

Quoted text here. Click to load it

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

Re: Beregning af checksum
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 http://www.saleae.com/logic/ de er super :-)

Wiljan


Re: Beregning af checksum
Hej
Den 28-01-2012 10:05, Wiljan skrev:
Quoted text here. Click to load it

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.

Quoted text here. Click to load it

;o)

Quoted text here. Click to load it

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

Tak for inputs.

Mvh Hauge

Re: Beregning af checksum
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


Re: Beregning af checksum
Faldt lige over dette

http://www.f6fbb.org/domo/sensors/tx3_th.php

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




Site Timeline