-
-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Processing Wireless M-Bus signals #144
Comments
With FSK reception we have found it may need a more precise frequency than the rtl_sdr. Try adjusting the frequency slightly |
I tested it by listening on every rf frequency from 868.91 to 868.99 Mhz adding 10 khz and giving it some time. However, the most unparsed signals I received were at 868.95 Mhz as per spec, so I really do not think that the issue is in capturing the signal. |
Do you know which mode your meter is using? For modes S, T, and C&T, the bitrates are quite high and as a result you might be missing the preamble - see my comments at the end of #83 Check out my proof of concept at https://github.com/Entropy512/rtl_433_ESP/commits/neptune_r900/ - but you'll need to change the bitrate setting for Mode C&T, and also you'll need to change the MY_DEVICES defines to include wireless mbus. |
@Entropy512 It is running in Also in the repo you defined |
Read the source for the decoder. For example I was using neptune_r900: Choose MINIMUM_PULSE_LENGTH that is lower than the shortest of those two (if different). I chose 25 in case of some jitter, although with the bit synchronizer it's probably fine. Without the bit synchronizer you likely need to drop that even more. I've seen pulses as low as 20 without it. That struct doesn't directly give you the minimum signal length - you can calculate that by multiplying the pulse length by the number of bits, which is USUALLY in the comments (168 bits for Neptune, although that's after preamble and syncword) Right now MINIMUM_SIGNAL_LENGTH is also reused as the minimum gap length (which IS listed in that struct), this probably needs to be fixed. I'm positive I made a comment about this before but I can't find it... I wonder if I typed something, didn't click update/post, and then closed the browser window...
|
@Entropy512 For M-bus T mode it looks like preamble has a hardcoded preamble rtl_433_ESP/src/rtl_433/devices/m_bus.c Line 953 in b8ea0e2
So it should not be a problem. Minimum signal length is still potentially a problem. In FSK mode it is specified as 500 Line 96 in b8ea0e2
How ever in the device decoder it seams to be dynamically calculated: rtl_433_ESP/src/rtl_433/devices/m_bus.c Line 963 in b8ea0e2
Am I right or am I seeing two different things that vaguely similar and equating them falsely? I have no clue when it comes to signal processing. |
As to the preamble - that is the problem. The preamble occurs at the beginning of the message, and without my change, if that comes in before the RSSI rises, it's ignored by the interrupt handler. Then the message without a preamble is passed to the decoded and the decoder ignores it because it doesn't see the preamble/syncword. It looks like all of my message lengths are a multiple of 1 ms so I'm guessing that's the RSSI polling rate, so if your message is 4.15 milliseconds long, you could lose as much as the first 1/4 of the message. At least for messages with preambles/sync words, my change shouldn't cause any negative issues - any garbage that precedes the message will be ignored unless it miraculously looks exactly like a preamble + sync pattern, which is extremely unlikely. There might be some simplistic protocols with slow bitrates and no preamble though? These might have negative consequences from my change. On the other hand you should have multiple RSSI polling intervals per bit in those cases. 32+138 = 136. 136(1/32768) = 0.00415 seconds per message. That's shorter than the minimum message length for R900 (168 bits plus header/preamble) If you're trying to receive that 100 kbit/sec mode, that'll be 1/3 the length. |
@Entropy512 I appreciate your help do not really have the time to learn signal processing, so if you could be more specific in what do you think could work it would be grate. |
At least since most of the WMBus modes are the same bitrate as R900: You'll also have to change the bitrate for FSK since that's a separate code block than the one I changed for OOK. You have the same value (32.768 kbps), it just needs to be changed for FSK devices. |
I refreshed the device decoders from rtl_433 24.10, maybe this is resolved? |
@NorthernMan54 m bus files do seam to be modified on the latest update but in rtl433 change log there was a mention fix of length calculations, so there is a chance. |
@NorthernMan54 Update after testing latest version: |
OMG has not been updated to 0.4.0 yet, still in testing See this - #150 (comment) |
@NorthernMan54 Sorry for not checking if OMG has been updated. |
Current Situation
Hey,
I have TTGO Lora 32 V2.1.6 flashed with fsk version of OpenMQTTGateway and Nooelec RTL-SDR both listening at 868.95Mhz but one parsing signal from water meter using Wireless M-Bus.
I was getting weather station signals on 868.3Mhz just fine, so I was relatively confident that it should work but made sure I used the handy guide to compile a latest firmware option just with a tag to publish unparsed. Just to make sure that HW is capable of capturing the signal.
So in the logs just copied out from RTL-SDR dongle running 'vanila' rtl_433 and successfully capturing and decoding the signal in Debian docker container and just bellow what I suspect a log message for capturing but failing to process on esp32 running rtl_433_esp.
What do you suggest trying?
Logs
Configuration
Environment
Process Supervisor
not applicable
Additional Context
No response
The text was updated successfully, but these errors were encountered: