Help analyzing data from LaCrosse V21WTH to build interceptor driver

188 views
Skip to first unread message

Dan Verbus

unread,
Feb 3, 2019, 3:51:51 PM2/3/19
to weewx-development
I bought a Lacrosse V21WTH not realizing it didn't send to Wunderground. So far I've been able to set up my Raspberry Pi as an access point and use sslsplit to get the data being sent to the Lacrosse servers for their proprietary app. Here is a few minutes worth of the data in the "Data" field of the JSON messages being POSTed over HTTPS:

0BD47300AAAAAA000AAA1B
0BD47300AAAAAA009AAA56
0BD47302AAAAAA00BAAA69
0BD47302AAAAAA01FAAAA6
0BD47304AAAAAA000AAAEC
0BD47306AAAAAA019AAA04
0BD47308AAAAAA00DAAA00
0BD47308AAAAAA013AAA30
0BD4730AAAAAAA019AAA2C
0BD4730CAAAAAA000AAA33
0BD4730CAAAAAA009AAA7E
0BD4730EAAAAAA000AAAD0
0BD4730EAAAAAA00FAAAC8

2CCDE30423F01F7B
2CCDE30824001F92
2CCDE30A24001F95

34D65C041EC03AFE
34D65C041EC03AFE
34D65C0C1EC039B1

I have a console, and outdoor temp/humidity sensor, and a wind speed sensor (and a rain gauge on the way). So the three different style hex strings make sense. How would I go about decoding these? 

When this data was captured it was roughly 48F with 58% humidity outside. 64F and 31% humidity at the console, and 1 MPH winds.

As I was gathering information for this post, i realized that the app shows a sensor ID of 0BD473 for the wind sensor, 2CCDE3 for the console, and 34D65C for the outdoor temp/humidity sensor.

So taking out the obvious addresses, and strings of A's, I get the following data that should translate into approximately the above values. I sorted the data to group it, so it's not sequential readings.

Wind Speed Sensor
_00_000_1B
_00_009_56
_02_00B_69
_02_01F_A6
_04_000_EC
_06_019_04
_08_00D_00
_08_013_30
_0A_019_2C
_0C_000_33
_0C_009_7E
_0E_000_D0
_0E_00F_C8

Console: Reports humidity as xx.0 percent and temp as xx.xx degrees F

_30423F01F7B
_30824001F92
_30A24001F95

Outdoor: Reports humidity as xx.0 percent and temp as xx.xx degrees F

_041EC03AFE
_041EC03AFE
_0C1EC039B1

My end goal is to modify the interceptor driver to get this data into Weewx, but I'm stuck on the decoding part. Any help would be appreciated.

Here is a whole JSON example if needed:

{"Data":"0BD4730CAAAAAA000AAA33","GatewaySerial":"2CCDE3","DisplaySerial":"2CCDE3","OnDisplay":true,"Firmware":"2.2.1","Diagnostics": {"Heap": 31064, "Chip": 5018541, "SDK": "1.5.4.1(39cb9a32)", "CpuFreq": 80, "FlashSize": 3, "Reset": 0, "ResetTime": 1549226818, "Restarts": 34, "UserBin": 1}


Thanks,
Dan

Dan Verbus

unread,
Feb 4, 2019, 9:45:04 AM2/4/19
to weewx-development
Getting somewhere I believe. In the case of:

 2CCDE3 04 23 F0 1F 7B

The first three bytes (2CCDE3) are the serial number, and the second to last byte corresponds to the decimal value for humidity percentage on all of the readings I've checked for both the console and outdoor sensor.

Dan

mwall

unread,
Feb 5, 2019, 11:13:17 AM2/5/19
to weewx-development
hi dan,

could you post a few json packets so we can see how they differ?

also, if you could make a table with two columns - first column is the data string, second column is the list of ALL conditions at/near the time you saw the data string.  it would be most helpful to see a range of temperatures/windspeeds/pressures.

m

Dan Verbus

unread,
Feb 5, 2019, 8:28:54 PM2/5/19
to weewx-development
Sure. Here is a spreadsheet, one tab is 20 minutes worth of JSONs,. The other is actual readings and the JSON that was used to report them to the Lacrosse server. I'll work on capturing a wider range of conditions.

Thanks,

Dan
v21-wth.xls.xlsx

Kevin Creason

unread,
Mar 6, 2019, 8:26:22 PM3/6/19
to weewx-development
Dan,
I would like to assist on this, I am looking at similar data from my LaCrosse C83100. I'm using mitmproxy to tap into the stream.
Where are you at, where can I assist?

I've been look at the Data value in the JSONs and saw some of the device serial numbers leading the Data value but I also saw some that did not match known devices.

Dan Verbus

unread,
Mar 8, 2019, 7:21:14 PM3/8/19
to weewx-development
I kind of got stuck, I think my Raspberry Pi is still capturing the JSONs, unless it's full by now. I tried going down the road of using an RTL-SDR dongle to capture the signal from the sensors and decode it myself. I know they are at 915 MHz, and FSK modulated at 9.6k from the FCC-ID and test report. I don't get anything consistent though, using tools like Universal Radio Hacker to try to analyze the signal. So I gave up on that and have not gotten back to the network sniffing.

I'll dig into it again and see if I can make any headway, but I should have lots of data and can sit down and provide console values that match the packet times for some if you want. I've also got the matching rain gauge now as well.

Regards,

Dan
Reply all
Reply to author
Forward
0 new messages