Skip to content

Commit b17b148

Browse files
rstephanobones
authored andcommitted
Change LaCrosse TX invalid humidity handling (merbanan#2335)
Invalid sensor data (0x0ff) will be suppressed from the output.
1 parent d9921f7 commit b17b148

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/devices/lacrosse.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,11 @@ static int lacrossetx_decode(r_device *decoder, bitbuffer_t *bitbuffer)
118118

119119
// TODO: check if message length is a valid value
120120
//uint8_t msg_len = msg_nybbles[1];
121-
uint8_t msg_type = msg_nybbles[2];
122-
uint8_t sensor_id = (msg_nybbles[3] << 3) + (msg_nybbles[4] >> 1);
123-
float msg_value = msg_nybbles[5] * 10 + msg_nybbles[6] + msg_nybbles[7] * 0.1f;
124-
int msg_value_int = msg_nybbles[8] * 10 + msg_nybbles[9];
121+
uint8_t msg_type = msg_nybbles[2];
122+
uint8_t sensor_id = (msg_nybbles[3] << 3) + (msg_nybbles[4] >> 1);
123+
uint16_t msg_value_raw = (msg_nybbles[5] << 8) | (msg_nybbles[6] << 4) | msg_nybbles[7];
124+
float msg_value = msg_nybbles[5] * 10 + msg_nybbles[6] + msg_nybbles[7] * 0.1f;
125+
int msg_value_int = msg_nybbles[8] * 10 + msg_nybbles[9];
125126

126127
// Check Repeated data values as another way of verifying
127128
// message integrity.
@@ -152,7 +153,7 @@ static int lacrossetx_decode(r_device *decoder, bitbuffer_t *bitbuffer)
152153
data_t *data = data_make(
153154
"model", "", DATA_STRING, "LaCrosse-TX",
154155
"id", "", DATA_INT, sensor_id,
155-
"humidity", "Humidity", DATA_FORMAT, "%.1f %%", DATA_DOUBLE, msg_value,
156+
"humidity", "Humidity", DATA_COND, msg_value_raw != 0xff, DATA_FORMAT, "%.1f %%", DATA_DOUBLE, msg_value,
156157
"mic", "Integrity", DATA_STRING, "PARITY",
157158
NULL);
158159
/* clang-format on */

0 commit comments

Comments
 (0)