On 1/23/2015 8:05 PM, Benjamin Larsson wrote:
> signal -> ook_signal_demod -> signal_re-represenation -> bit_decode -> protocol_decode
>
> This signal_re-represenation is a table that lists the pulses start
> time and their lengths. This table should then be decoded to bits
> (somehow). And the resulting bits can then later be sent to all
> protocols that matches the signal properties.
signal -> ook_signal_demod -> signal on/off times -> protocol call back
appropriate signal? -> call appropriate bit_decode -> process.
There could be a couple of provided ways of deciding if the signal
is the one you want for the protocol bits to call based on signal
length, initial pulse length, etc.
One result is the bit_decoders would be simpler, the protocol routines
could choose to lop off any start/sync bits before calling the bit decoder.
There would be a lot of flexibility, however tThe downside is there would
be more boiler plate in the protocol code.
I never got around to coding anything, yet.
(I should mention, I wrote an external decoder that just takes the -a -D
debug output (which has the on-off times, in length/distance). It was
necessary because the DSC security contacts send no signal during a zero
period. The can be silence for up to a whole byte worth of bits. They
inject a sync bit between each byte.)
Thoughts?
--Rob
I got your code running. Nice work. Your analyzer looks very cool
and shows a lot of promise. I need to put some signals it had problems
with in the test signal repo.
The LaCrosse TX 433 Mhz temperature/humidity sensors were detected
perfectly. I may give a look at converting the lacrosse tomorrow
or the next day.
It's a little confusing that you need debug (-D) but NOT analyze -a
to see the output of your analyzer.
Note: -std=gnu11 was too new for the compiler on my test system,
but changing it to gnu99 was fine. I think the only thing I saw
that really needed the newer standard definition was the declaration
in the initializer of the for loop.
I think we should try to get away from the constants for OOK_PWM, etc.
and just put a function pointer in the device struct to allow device
specific demodulators when necessary.
> A potential issue is that the new infrastructure has to decide when>
> to declare End Of Package and send the pulse list to the demodulators.
This is a bit tricky and there are some cases where I think I'd want
per protocol specification of what the end criteria is. Over the
weekend I was looking at a pair of signals from two related devices
that run into each other with out enough quiet time to decide the
first signal is done and the second signal has started.
>As a result the new infrastructure will tend to send multi packet
>data separately.
While I've come to appreciate the way the current code can group
retransmissions, I can see why this is necessary in a generic
demodulator.
Thanks. Looking forward to playing around with this more.
Den tirsdag den 30. juni 2015 kl. 05.28.19 UTC+2 skrev Robert Terzi:I got your code running. Nice work. Your analyzer looks very cool
and shows a lot of promise. I need to put some signals it had problems
with in the test signal repo.Thanks :-) I saw some problems where the histogram function would make bins with overlapping pulse clusters - probably due to the first pulses being outliers. I will try to experiment with some "bin fusing" when bins are obviously overlapping. That should make detection more reliable. I don't know if that describes your problem?
I'm quite busy right know but I will merge this after I have time to
look at the code.
Next I did a side-by-side comparison using a recording file (-m 1 type,
recording of the whole rtl_433 run). The old demodulator correctly
decoded 13 messages, the new demodulator decoded 15. It was able
to correctly identify two messages the old demodulator didn't.
Tommy, that's for your hard work. I think this contribution will
move rtl_433 forward a big step.
Minor feature request for the new signal analysis function,
a command line option to override the quiet time setting
for determining a message has finished.
As I understand it currently, the test for end of message
is to wait for a quiet period of 10 times the longest pulse.
Of course it could be helpful to turn it up too. I've
got a device that sends out 200 short pulses with a long
pause as a wake-up signal.
I've got some things I want to do that I'm waiting until merbanan
merges your work. Do you have a pull request in for the experimental
branch or just the one before you did the bin folding?
Well that happens. This is clearly for the better.
Den fredag den 10. juli 2015 kl. 13.18.57 UTC+2 skrev Benjamin Larsson:Well that happens. This is clearly for the better.
Thanks for the merge :-)
I have made some tweaks to the detection and converted a couple of sensors. I am now out of sensors with good test data and will now work on adding a new one of my own :-)
/Tommy--
You received this message because you are subscribed to the Google Groups "rtl_433" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtl_433+u...@googlegroups.com.
To post to this group, send email to rtl...@googlegroups.com.
Visit this group at http://groups.google.com/group/rtl_433.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rtl_433/fa8e3321-0065-4ffb-a030-df43c4b87c41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I have a decoder for the DSC 433 mhz security contacts (door/window, smoke, CO2, etc.) I had written a custom demodulator based on pwm_p_decode. I haven't made it available yet because I was struggling reliably detecting based on pulse width when the detect_level was changed. I'm planning on rewriting it based on your new pulse demodulator and see if I can come up with something more robust when I can look at the list of pulses and distances. Note: The DSC security contact is the device that doesn't transmit anything during a zero pulse. So when you receive a 1 pulse you need to figure out how many zero periods have elapsed.
I had also added to the rtl_433_test repository samples of the X10 power control signals. At one point there was a decoder for X10 security contacts in rtl_433, but I think it got dropped somewhere along the way. The are the signals that use the NEC IR format, the repeat gap is only about 4 x the length of the longest pulse, the first, wake-up pulse.