Decoding WS3080 possible

537 views
Skip to first unread message

Hans Lammerts

unread,
Aug 17, 2017, 7:58:08 AM8/17/17
to rtl_433
Hi,

I was wandering if it is possible to decode a Velleman WS3080 with rtl_433.
Searches lead me to believe that the WS3080 is the same as the WH3080 offered by other manufacturers.
The unit operates at 868.283 MHz, and I can receive the signal with rtl_433. Although WH3080 is one of the device decoding
protocols, nothing is decoded (#32).

I can see two reasons for this:
1) WS3080 not equal to WH3080
2) I'm doing something wrong.

Hoping the first one is not the case, and knowing the second one is a distinct possibility, I'm asking for help.

I captured the signal using -A. Hopefully someone here can tell me if this is enough to determine the protocol, and more importantly,
why the signal is not being decoded (assuming WS3080 = WH3080).

Any help would be much appreciated.

Thanks,
Hans

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Bit detection level set to 0 (Auto).
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 868283000 Hz.
Detected FSK package    @ 2017-08-17 13:53:44
Analyzing pulses...
Total count:   52,  width:  2798                (11.2 ms)
Pulse width distribution:
 [ 0] count:    6,  width:    28 [27;29]        ( 112 us)
 [ 1] count:   40,  width:    14 [14;15]        (  56 us)
 [ 2] count:    1,  width:    43 [43;43]        ( 172 us)
 [ 3] count:    4,  width:    65 [58;73]        ( 260 us)
 [ 4] count:    1,  width:   101 [101;101]      ( 404 us)
Gap width distribution:
 [ 0] count:   33,  width:    14 [14;15]        (  56 us)
 [ 1] count:    5,  width:    43 [43;44]        ( 172 us)
 [ 2] count:    3,  width:    57 [57;58]        ( 228 us)
 [ 3] count:    6,  width:    29 [29;29]        ( 116 us)
 [ 4] count:    1,  width:    73 [73;73]        ( 292 us)
 [ 5] count:    1,  width:   275 [275;275]      (1100 us)
 [ 6] count:    1,  width:   101 [101;101]      ( 404 us)
 [ 7] count:    1,  width:   145 [145;145]      ( 580 us)
Pulse period distribution:
 [ 0] count:    8,  width:    43 [42;44]        ( 172 us)
 [ 1] count:   28,  width:    29 [29;30]        ( 116 us)
 [ 2] count:    6,  width:    57 [57;58]        ( 228 us)
 [ 3] count:    2,  width:    79 [72;87]        ( 316 us)
 [ 4] count:    4,  width:   127 [116;145]      ( 508 us)
 [ 5] count:    1,  width:   290 [290;290]      (1160 us)
 [ 6] count:    1,  width:   101 [101;101]      ( 404 us)
 [ 7] count:    1,  width:   218 [218;218]      ( 872 us)
Level estimates [high, low]:  15947,     13
Frequency offsets [F1, F2]:   18753,  -7866     (+71.5 kHz, -30.0 kHz)
Guessing modulation: Pulse Code Modulation (Not Return to Zero)
Attempting demodulation... short_limit: 14, long_limit: 14, reset_limit: 14336, demod_arg: 0
pulse_demod_pcm(): Analyzer Device
bitbuffer:: Number of rows: 1
[00] {198} d5 55 55 55 55 16 ea 12 3c 17 f1 25 b0 80 00 05 be 40 7c 00 54 8c bc 28 a0

Detected FSK package    @ 2017-08-17 13:54:00
Analyzing pulses...
Total count:   54,  width:  2840                (11.4 ms)
Pulse width distribution:
 [ 0] count:    9,  width:    28 [26;29]        ( 112 us)
 [ 1] count:   38,  width:    14 [14;15]        (  56 us)
 [ 2] count:    3,  width:    43 [43;44]        ( 172 us)
 [ 3] count:    2,  width:    58 [58;58]        ( 232 us)
 [ 4] count:    1,  width:    73 [73;73]        ( 292 us)
 [ 5] count:    1,  width:     2 [ 2; 2]        (   8 us)
Gap width distribution:
 [ 0] count:   31,  width:    14 [14;16]        (  56 us)
 [ 1] count:    5,  width:    43 [43;44]        ( 172 us)
 [ 2] count:    5,  width:    63 [58;72]        ( 252 us)
 [ 3] count:    9,  width:    29 [29;29]        ( 116 us)
 [ 4] count:    1,  width:   276 [276;276]      (1104 us)
 [ 5] count:    2,  width:    94 [87;102]       ( 376 us)
Pulse period distribution:
 [ 0] count:   11,  width:    43 [42;44]        ( 172 us)
 [ 1] count:   24,  width:    29 [29;29]        ( 116 us)
 [ 2] count:    8,  width:    61 [58;72]        ( 244 us)
 [ 3] count:    9,  width:    97 [84;116]       ( 388 us)
 [ 4] count:    1,  width:   290 [290;290]      (1160 us)
Level estimates [high, low]:  15897,     20
Frequency offsets [F1, F2]:   19002,  -7479     (+72.5 kHz, -28.5 kHz)
Guessing modulation: No clue...

Christian Zuckschwerdt

unread,
Aug 17, 2017, 9:17:47 AM8/17/17
to rtl_433
The 868 MHz WH3080 would likely use FSK and not ASK like the 433 MHz one. That's at least what the WH1080 does and what the log above shows.

Hans Lammerts

unread,
Aug 17, 2017, 9:31:53 AM8/17/17
to rtl_433
Hi Christian,

Thanks for answering to my post.
However, it does not help me any further.Are you saying the WS3080 cannot be decoded using rtl_433 ?

Tnx,
Hans

Op donderdag 17 augustus 2017 13:58:08 UTC+2 schreef Hans Lammerts:

Christian Zuckschwerdt

unread,
Aug 17, 2017, 9:40:14 AM8/17/17
to rtl_433
FSK is supported and needs to be added for the WH3080 (and WH1080). If you want me to do that I'd need clean sample files (-a -t) to test. Please have a look at the spectrogram to see if the signal to noise ratio is good (i.e. the spectrogram is rather clean and sharp) and open the sample in Audacity to see if the two frequencies (2-FSK) in the sample look like proper sine wave. Also have a look at the WH1080 thread here.

Hans Lammerts

unread,
Aug 17, 2017, 10:07:42 AM8/17/17
to rtl_433
Ok, I'll do that.
May take a while (couple of weeks) because I have an upcoming vacation.....

Will get back to you.



Op donderdag 17 augustus 2017 13:58:08 UTC+2 schreef Hans Lammerts:
Hi,

Leon Botha

unread,
Aug 28, 2017, 12:38:16 PM8/28/17
to rtl_433
I seem to have the same Weather Station, only it is Marketed as HP1000.


Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Bit detection level set to 0 (Auto).
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 433920000 Hz.
Detected FSK package    @ 2017-08-28 18:11:57
Pulse data: 42 pulses
[  0] Pulse:   29, Gap:   16, Period:   45
[  1] Pulse:   15, Gap:   14, Period:   29
[  2] Pulse:   15, Gap:   14, Period:   29
[  3] Pulse:   15, Gap:   14, Period:   29
[  4] Pulse:   15, Gap:   14, Period:   29
[  5] Pulse:   15, Gap:   14, Period:   29
[  6] Pulse:   15, Gap:   14, Period:   29
[  7] Pulse:   15, Gap:   14, Period:   29
[  8] Pulse:   15, Gap:   14, Period:   29
[  9] Pulse:   15, Gap:   14, Period:   29
[ 10] Pulse:   15, Gap:   14, Period:   29
[ 11] Pulse:   15, Gap:   14, Period:   29
[ 12] Pulse:   15, Gap:   14, Period:   29
[ 13] Pulse:   15, Gap:   14, Period:   29
[ 14] Pulse:   15, Gap:   14, Period:   29
[ 15] Pulse:   15, Gap:   14, Period:   29
[ 16] Pulse:   15, Gap:   14, Period:   29
[ 17] Pulse:   15, Gap:   14, Period:   29
[ 18] Pulse:   15, Gap:   14, Period:   29
[ 19] Pulse:   15, Gap:   43, Period:   58
[ 20] Pulse:   15, Gap:   14, Period:   29
[ 21] Pulse:   29, Gap:   15, Period:   44
[ 22] Pulse:   43, Gap:   15, Period:   58
[ 23] Pulse:   14, Gap:   15, Period:   29
[ 24] Pulse:   14, Gap:   58, Period:   72
[ 25] Pulse:   15, Gap:   29, Period:   44
[ 26] Pulse:   14, Gap:   29, Period:   43
[ 27] Pulse:   15, Gap:   14, Period:   29
[ 28] Pulse:   87, Gap:   58, Period:  145
[ 29] Pulse:   29, Gap:   44, Period:   73
[ 30] Pulse:   29, Gap:   43, Period:   72
[ 31] Pulse:   15, Gap:   29, Period:   44
[ 32] Pulse:   29, Gap:   14, Period:   43
[ 33] Pulse:   15, Gap:   58, Period:   73
[ 34] Pulse:   14, Gap:   73, Period:   87
[ 35] Pulse:   14, Gap:  682, Period:  696
[ 36] Pulse:   14, Gap:  348, Period:  362
[ 37] Pulse:   44, Gap:   14, Period:   58
[ 38] Pulse:   15, Gap:   14, Period:   29
[ 39] Pulse:   73, Gap:   29, Period:  102
[ 40] Pulse:   29, Gap:   43, Period:   72
[ 41] Pulse:   15, Gap:    0, Period:   15
Analyzing pulses...
Total count:   42,  width:  2844                (11.4 ms)
Pulse width distribution:
 [ 0] count:    6,  width:    29 [29;29]        ( 116 us)
 [ 1] count:   32,  width:    14 [14;15]        (  56 us)
 [ 2] count:    2,  width:    43 [43;44]        ( 172 us)
 [ 3] count:    2,  width:    80 [73;87]        ( 320 us)
Gap width distribution:
 [ 0] count:   27,  width:    14 [14;16]        (  56 us)
 [ 1] count:    4,  width:    43 [43;44]        ( 172 us)
 [ 2] count:    3,  width:    58 [58;58]        ( 232 us)
 [ 3] count:    4,  width:    29 [29;29]        ( 116 us)

 [ 4] count:    1,  width:    73 [73;73]        ( 292 us)
 [ 5] count:    1,  width:   682 [682;682]      (2728 us)
 [ 6] count:    1,  width:   348 [348;348]      (1392 us)
Pulse period distribution:
 [ 0] count:    6,  width:    43 [43;45]        ( 172 us)
 [ 1] count:   22,  width:    29 [29;29]        ( 116 us)
 [ 2] count:    8,  width:    67 [58;73]        ( 268 us)
 [ 3] count:    1,  width:   145 [145;145]      ( 580 us)
 [ 4] count:    2,  width:    94 [87;102]       ( 376 us)
 [ 5] count:    1,  width:   696 [696;696]      (2784 us)
 [ 6] count:    1,  width:   362 [362;362]      (1448 us)
Level estimates [high, low]:  15997,     21
Frequency offsets [F1, F2]:    7857, -19555     (+30.0 kHz, -74.6 kHz)

Guessing modulation: Pulse Code Modulation (Not Return to Zero)
Attempting demodulation... short_limit: 14, long_limit: 14, reset_limit: 14336, demod_arg: 0
pulse_demod_pcm(): Analyzer Device
bitbuffer:: Number of rows: 1
[00] {199} d5 55 55 55 55 16 ea 12 5f 86 31 34 20 80 00 00 00 00 00 20 00 00 0e be 62

Here is a few strings...
[00] {199} d5 55 55 55 55 16 ea 12 5f 86 31 33 20 80 00 00 00 00 00 20 00 00 07 a7 30
Moved the wind direction 180 deg.
[00] {200} d5 55 55 55 55 16 ea 12 5f ce 31 34 20 00 00 00 00 00 00 20 00 00 0e 67 00
[00] {199} d5 55 55 55 55 16 ea 12 5f ce 31 35 1f 80 00 00 00 00 00 20 00 00 0e 36 e0


Leon Botha

unread,
Aug 28, 2017, 12:52:14 PM8/28/17
to rtl_433
Here are 3 files i captured

gfile001.data
gfile002.data
gfile003.data

Christian Zuckschwerdt

unread,
Sep 2, 2017, 5:32:37 AM9/2/17
to rtl_433
Leon,
that's a very clean and sharp signal, thanks! It can be read by modifying fineoffset_wh1080.c like this
r_device fineoffset_wh1080 = {
   
.name           = "Fine Offset Electronics WH1080/WH3080 Weather Station",
   
.modulation     = FSK_PULSE_PCM,
   
.short_limit    = 56,
   
.long_limit     = 56,
   
.reset_limit    = 3000,

But at a first glance the data doesn't seem to fit the protocol.


Leon Botha

unread,
Sep 2, 2017, 8:08:36 AM9/2/17
to rtl_433
Hi Christian

Yes, i have not been able to find any information on this unit thus far.
I am planning to see if i can capture the string while changing the variables.

I am finding that my version of rtl_433 does not decode the string every time to give me the hex values, i am using a windows version from 7th of May 2017.

If i can decode the value to a hex string every time it is send, every 16 seconds, i can then try and see what values change when i manipulate the weather station.

Christian Zuckschwerdt

unread,
Sep 2, 2017, 1:57:15 PM9/2/17
to rtl_433
If you shift the bit string by one bit

d5 55 55 55 55 16 ea 12 5f 86 31 34 20 80 00 00 00 00 00 20 00 00 0e be 62
gives you
aa aa aa aa aa 2d d4 24 bf 0c 62 68 41 00 00 00 00 00 00 40 00 00 1d 7c c4
which matches the description in https://www.sevenwatt.com/main/wh1080-protocol-v2-fsk/
I might get around to look further into that and implement what's needed, but it will take some time.

Leon Botha

unread,
Sep 3, 2017, 11:26:19 AM9/3/17
to rtl_433
Hi Christian

Have a look at this file i captured with HDSDR.
Presume low tone is a "Zero" and high tone is a "One", then i see a preamble of 4x 0x55.

The info from this file it seems that he preamble is 4x 0x55 and then 18 Bytes of data and one byte CRC at the end.

Capturing the data with HDSDR, then stripping with Audacity is time consuming and i was trying to find a faster way to capture the data, RFM69 or RTL_433.
HDSDR_20170802_172304Z_433900kHz_RF.wav

Leon Botha

unread,
Jun 24, 2018, 10:18:10 AM6/24/18
to rtl_433

 Hi Christian

Here is an updated post i did today - http://sandaysoft.com/forum/viewtopic.php?f=13&t=16968
Most of the signal has been decoded.

Regards
Leon
Reply all
Reply to author
Forward
0 new messages