On 07/14/2016 01:48 PM, Helios W wrote:
> Hi,
>
> I'm trying to decode a signal which i generate myself, but apparently I
> have no idea what i'm doing.
>
> The signal is modulated/coded with radiohead ASK driver[1], which
> according to documentation does
>
> * 36 bit training preamble consisting of 0-1 bit pairs
>
> * 12 bit start symbol 0xb38
>
> * 1 byte of message length byte count (4 to 30), count includes
> byte count and FCS bytes
>
> * n message bytes (uincluding 4 bytes of header), maximum n is
> RH_ASK_MAX_MESSAGE_LEN + 4 (64)
>
> * 2 bytes FCS, sent low byte-hi byte
>
> Everything after the start symbol is encoded 4 to 6 bits, Therefore
> a byte in the message is encoded as 2x6 bit symbols, sent hi nybble,
> low nybble. Each symbol is sent LSBit first.
Ok, running rtl_433 -D -D -r tests/radiohead_ask/01/gfile001.data gives
the following output:
Pulse data: 58 pulses
[ 0] Pulse: 512, Gap: 489, Period: 1001
[ 1] Pulse: 511, Gap: 490, Period: 1001
[ 2] Pulse: 510, Gap: 490, Period: 1000
[ 3] Pulse: 512, Gap: 488, Period: 1000
[ 4] Pulse: 511, Gap: 490, Period: 1001
[ 5] Pulse: 511, Gap: 489, Period: 1000
[ 6] Pulse: 511, Gap: 490, Period: 1001
[ 7] Pulse: 510, Gap: 490, Period: 1000
[ 8] Pulse: 510, Gap: 489, Period: 999
[ 9] Pulse: 512, Gap: 489, Period: 1001
[ 10] Pulse: 511, Gap: 489, Period: 1000
[ 11] Pulse: 511, Gap: 489, Period: 1000
[ 12] Pulse: 512, Gap: 489, Period: 1001
[ 13] Pulse: 512, Gap: 488, Period: 1000
[ 14] Pulse: 511, Gap: 489, Period: 1000
[ 15] Pulse: 512, Gap: 490, Period: 1002
[ 16] Pulse: 510, Gap: 490, Period: 1000
[ 17] Pulse: 511, Gap: 1489, Period: 2000
[ 18] Pulse: 1511, Gap: 990, Period: 2501
[ 19] Pulse: 1012, Gap: 489, Period: 1501
[ 20] Pulse: 1011, Gap: 489, Period: 1500
[ 21] Pulse: 1011, Gap: 989, Period: 2000
[ 22] Pulse: 511, Gap: 490, Period: 1001
[ 23] Pulse: 511, Gap: 991, Period: 1502
[ 24] Pulse: 509, Gap: 990, Period: 1499
[ 25] Pulse: 511, Gap: 489, Period: 1000
[ 26] Pulse: 1011, Gap: 989, Period: 2000
[ 27] Pulse: 512, Gap: 489, Period: 1001
[ 28] Pulse: 1011, Gap: 990, Period: 2001
[ 29] Pulse: 511, Gap: 489, Period: 1000
[ 30] Pulse: 1010, Gap: 991, Period: 2001
[ 31] Pulse: 510, Gap: 490, Period: 1000
[ 32] Pulse: 1510, Gap: 491, Period: 2001
[ 33] Pulse: 1010, Gap: 990, Period: 2000
[ 34] Pulse: 510, Gap: 491, Period: 1001
[ 35] Pulse: 1011, Gap: 989, Period: 2000
[ 36] Pulse: 511, Gap: 491, Period: 1002
[ 37] Pulse: 1009, Gap: 991, Period: 2000
[ 38] Pulse: 511, Gap: 489, Period: 1000
[ 39] Pulse: 1011, Gap: 989, Period: 2000
[ 40] Pulse: 510, Gap: 492, Period: 1002
[ 41] Pulse: 1010, Gap: 989, Period: 1999
[ 42] Pulse: 510, Gap: 491, Period: 1001
[ 43] Pulse: 1010, Gap: 990, Period: 2000
[ 44] Pulse: 511, Gap: 490, Period: 1001
[ 45] Pulse: 1011, Gap: 989, Period: 2000
[ 46] Pulse: 510, Gap: 492, Period: 1002
[ 47] Pulse: 1009, Gap: 991, Period: 2000
[ 48] Pulse: 510, Gap: 491, Period: 1001
[ 49] Pulse: 509, Gap: 491, Period: 1000
[ 50] Pulse: 510, Gap: 490, Period: 1000
[ 51] Pulse: 510, Gap: 490, Period: 1000
[ 52] Pulse: 510, Gap: 992, Period: 1502
[ 53] Pulse: 508, Gap: 491, Period: 999
[ 54] Pulse: 511, Gap: 489, Period: 1000
[ 55] Pulse: 510, Gap: 490, Period: 1000
[ 56] Pulse: 1011, Gap: 991, Period: 2002
[ 57] Pulse: 1010, Gap: 15111, Period: 16121
The data looks really good, so the demodulator is working well. Now we
just need to figure out the bit representation. We have pulse lengths of
500, 1000 and 1500. Gap lengths with the same 3 values. My guess is that
a pulse of 500 is a 0 and a gap of 500 is a 1. This matches the pulse
code modulation. Using this config:
.modulation = OOK_PULSE_PCM_RZ,
.short_limit = 510*4,
.long_limit = 510*4,
.reset_limit = 8000*4,
gives the following output:
pulse_demod_pcm(): Template decoder
bitbuffer:: Number of rows: 1
[00] {169} aa aa aa aa a3 9b 65 25 96 59 76 59 65 96 35 65 93 52 ce 40
00 00
And aa aa aa aa a looks like the 36 training bits mentioned. So I think
that these are the proper bits. So use those values and go from there.
When you have something that works somewhat send it for review through a PR.
MvH
Benjamin Larsson