 |
Protocol of the Lacrosse WS7000-20 meteo sensor |
Each frame is 81 bits long. It is composed of:
- 10bits of 0 (start sequence) [blue]
- 14 blocks of four bits separated by a bit 1 [red] to be checked and skipped
Example 1
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
Example 2
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
Example 3
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
Example 4
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
When extracting data from the examples, we get:
Example 1
0 | 0 | 1 | 0 | | 1 | 1 | 1 | 0 | | 1 | 0 | 1 | 0 | | 1 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | | 0 | 0 | 1 | 0 | | 0 | 0 | 1 | 0 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 0 | | 1 | 0 | 0 | 0 | | 1 | 0 | 1 | 0 | |
Example 2
0 | 0 | 1 | 0 | | 1 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | | 1 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | | 1 | 0 | 1 | 0 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 0 | | 0 | 1 | 0 | 0 | | 1 | 1 | 0 | 0 | | 1 | 0 | 0 | 1 | |
Example 3
0 | 0 | 1 | 0 | | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 1 | 1 | 0 | 0 | | 1 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | | 1 | 0 | 1 | 0 | | 1 | 0 | 0 | 1 | |
Example 4
0 | 0 | 1 | 0 | | 1 | 1 | 0 | 0 | | 1 | 0 | 0 | 0 | | 0 | 1 | 1 | 0 | | 0 | 1 | 0 | 0 | | 0 | 0 | 1 | 0 | | 1 | 1 | 0 | 0 | | 1 | 1 | 0 | 0 | | 0 | 0 | 1 | 0 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 0 | | 0 | 0 | 0 | 1 | | 0 | 0 | 1 | 0 | | 1 | 1 | 1 | 1 | |
The 1st bit of each word is LSB, so we have to reverse the 4 bits of each word.
The active values of the sensor is coloured in [green] in the following tables:
Example 1
0 | 1 | 0 | 0 | | 0 | 1 | 1 | 1 | | 0 | 1 | 0 | 1 | | 0 | 1 | 0 | 1 | | 0 | 0 | 1 | 0 | | 0 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | | 0 | 1 | 0 | 0 | | 0 | 1 | 0 | 0 | | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | | 0 | 0 | 0 | 1 | | 0 | 0 | 0 | 1 | | 0 | 1 | 0 | 1 | |
4 | | + | 7 | | 5 | | 5 | | 2 | | 6 | | 9 | | 4 | | 4 | | 9 | | 7 | | 1 | | 1 | | 5 | |
Check Xor : (4 ^ 7 ^ 5 ^ 5 ^ 2 ^ 6 ^ 9 ^ 4 ^ 4 ^ 9 ^ 7 ^ 1 ^ 1) = 0 Check Sum : (const5 + 4 + 7 + 5 + 5 + 2 + 6 + 9 + 4 + 4 + 9 + 7 + 1 + 1) and F = 5 | |
Example 2
0 | 1 | 0 | 0 | | 0 | 1 | 1 | 1 | | 0 | 1 | 0 | 0 | | 0 | 1 | 0 | 1 | | 0 | 0 | 1 | 0 | | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | | 0 | 1 | 0 | 0 | | 0 | 1 | 0 | 1 | | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | | 0 | 0 | 1 | 0 | | 0 | 0 | 1 | 1 | | 1 | 0 | 0 | 1 | |
4 | | + | 7 | | 4 | | 5 | | 2 | | 9 | | 7 | | 4 | | 5 | | 9 | | 7 | | 2 | | 3 | | 9 | |
Check Xor : (4 ^ 7 ^ 4 ^ 5 ^ 2 ^ 9 ^ 7 ^ 4 ^ 5 ^ 9 ^ 7 ^ 2 ^ 3) = 0 Check Sum : (const5 + 4 + 7 + 4 + 5 + 2 + 9 + 7 + 4 + 5 + 9 + 7 + 2 + 3) and F = 9 | |
Example 3
0 | 1 | 0 | 0 | | 0 | 1 | 1 | 1 | | 0 | 0 | 0 | 1 | | 0 | 1 | 0 | 0 | | 0 | 0 | 1 | 0 | | 0 | 0 | 1 | 1 | | 0 | 1 | 1 | 1 | | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | | 1 | 0 | 0 | 1 | | 0 | 1 | 0 | 1 | | 1 | 0 | 0 | 1 | |
4 | | + | 7 | | 1 | | 4 | | 2 | | 3 | | 7 | | 4 | | 6 | | 9 | | 7 | | 9 | | 5 | | 9 | |
Check Xor : (4 ^ 7 ^ 1 ^ 4 ^ 2 ^ 3 ^ 7 ^ 4 ^ 6 ^ 9 ^ 7 ^ 9 ^ 5) = 0 Check Sum : (const5 + 4 + 7 + 1 + 4 + 2 + 3 + 7 + 4 + 6 + 9 + 7 + 9 + 5) and F = 9 | |
Example 4
0 | 1 | 0 | 0 | | 0 | 0 | 1 | 1 | | 0 | 0 | 0 | 1 | | 0 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 0 | 0 | 1 | 1 | | 0 | 0 | 1 | 1 | | 0 | 1 | 0 | 0 | | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | | 1 | 0 | 0 | 0 | | 0 | 1 | 0 | 0 | | 1 | 1 | 1 | 1 | |
4 | | + | 3 | | 1 | | 6 | | 2 | | 4 | | 3 | | 3 | | 4 | | 9 | | 7 | | 8 | | 4 | | F | |
Check Xor : (4 ^ 3 ^ 1 ^ 6 ^ 2 ^ 4 ^ 3 ^ 3 ^ 4 ^ 9 ^ 7 ^ 8 ^ 4) = 0 Check Sum : (const5 + 4 + 3 + 1 + 6 + 2 + 4 + 3 + 3 + 4 + 9 + 7 + 8 + 4) and F = F | |
| Sensor type is 4 |
| Temperature is positive |
| Sensor Address |
| Data values |
| CheckXor |
| Checksum |
The first block is the LSB, so the values are repectively:
- [temp] 25.5 deg - [hygro] 49.6 % - [press] 794.1 hPa (+ offset 200 hPa)
- [temp] 25.4 deg - [hygro] 47.9 % - [press] 795.2 hPa (+ offset 200 hPa)
- [temp] 24.1 deg - [hygro] 47.3 % - [press] 796.9 hPa (+ offset 200 hPa)
- [temp] 26.1 deg - [hygro] 33.4 % - [press] 794.8 hPa (+ offset 200 hPa)
I am interested by any comment or more information on the format of these frames. Contact: Jean-Paul ROUBELAT - F6FBB
[back to menu]