@@ -38,7 +38,7 @@ Packet layout:
38
38
39
39
- Y = fixed sensor type 0x90
40
40
- I = device ID, might be less than 24 bit?
41
- - L = light value, unit of 10 Klux
41
+ - L = light value, unit of 10 lux
42
42
- B = battery voltage, unit of 20 mV, we assume a range of 3.0V to 1.4V
43
43
- F = flags and MSBs, 0x03: temp MSB, 0x10: wind MSB, 0x20: bearing MSB, 0x40: gust MSB
44
44
0x80 or 0x08: maybe battery good? seems to be always 0x88
@@ -48,7 +48,7 @@ Packet layout:
48
48
- D = wind bearing, lowest 8 bits of wind bearing, range 0-359 deg, 0x1ff if invalid
49
49
- G = wind gust, lowest 8 bits of wind gust, m/s, scale 10
50
50
- V = uv index, scale 10
51
- - U = unknown
51
+ - U = unknown (bytes 14 and 15 appear to be fixed at 3f ff)
52
52
- R = rain total (R3 << 8 | R4) * 0.1 mm
53
53
- S = super cap voltage, unit of 0.1V, lower 6 bits, mask 0x3f
54
54
- Z = Firmware version. 0x82 = 130 = 1.3.0
@@ -105,16 +105,15 @@ static int fineoffset_ws90_decode(r_device *decoder, bitbuffer_t *bitbuffer)
105
105
int wind_dir = ((b [7 ] & 0x20 ) << 3 ) | (b [11 ]);
106
106
int wind_max = ((b [7 ] & 0x40 ) << 2 ) | (b [12 ]);
107
107
int uv_index = (b [13 ]);
108
- int unknown = (b [14 ] << 8 ) | (b [15 ]);
109
108
int rain_raw = (b [19 ] << 8 ) | (b [20 ]);
110
109
int supercap_V = (b [21 ] & 0x3f );
111
110
int firmware = b [29 ];
112
- char extra [30 ];
111
+ char extra [31 ];
113
112
114
113
if (battery_lvl > 100 ) // More then 100%?
115
114
battery_lvl = 100 ;
116
115
117
- sprintf (extra , "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x " , b [16 ], b [18 ], b [19 ], b [ 20 ], b [21 ], b [22 ], b [23 ], b [24 ], b [25 ], b [26 ], b [27 ], b [28 ], b [ 28 ] );
116
+ sprintf (extra , "%02x%02x%02x%02x%02x------ %02x%02x%02x%02x%02x%02x%02x" , b [14 ], b [ 15 ], b [ 16 ], b [17 ], b [18 ], /* b[19, 20] is the rain sensor , b[21] is supercap_V */ b [22 ], b [23 ], b [24 ], b [25 ], b [26 ], b [27 ], b [28 ]);
118
117
119
118
/* clang-format off */
120
119
data_t * data = data_make (
@@ -130,7 +129,6 @@ static int fineoffset_ws90_decode(r_device *decoder, bitbuffer_t *bitbuffer)
130
129
"uvi" , "UVI" , DATA_COND , uv_index != 0xff , DATA_FORMAT , "%.1f" , DATA_DOUBLE , uv_index * 0.1f ,
131
130
"light_lux" , "Light" , DATA_COND , light_raw != 0xffff , DATA_FORMAT , "%.1f lux" , DATA_DOUBLE , (double )light_lux ,
132
131
"flags" , "Flags" , DATA_FORMAT , "%02x" , DATA_INT , flags ,
133
- "unknown" , "Unknown" , DATA_COND , unknown != 0x3fff , DATA_INT , unknown ,
134
132
"rain_mm" , "Total Rain" , DATA_FORMAT , "%.1f mm" , DATA_DOUBLE , rain_raw * 0.1f ,
135
133
"supercap_V" , "Supercap Voltage" , DATA_COND , supercap_V != 0xff , DATA_FORMAT , "%.1f V" , DATA_DOUBLE , supercap_V * 0.1f ,
136
134
"firmware" , "Firmware Version" , DATA_INT , firmware ,
0 commit comments