Skip to content
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

Efergy e2 Electricity Monitor #14

Closed
peterchs opened this issue Jun 21, 2013 · 7 comments · Fixed by #191
Closed

Efergy e2 Electricity Monitor #14

peterchs opened this issue Jun 21, 2013 · 7 comments · Fixed by #191

Comments

@peterchs
Copy link
Contributor

Hi,

I've been trying to use rtl_433 to decode the 433Mhz transmissions from an efergy e2 electricity monitor but haven't had much luck.

I've an understanding of the packet structure from http://electrohome.pbworks.com/w/page/34379858/Efergy%20Elite%20Wireless%20Meter%20Hack but need some help getting the transmission decoded.

I've confirmed the signal is being received ok and is PWM with pulse width varying (short pulse=0), and can decode it manually and confirm the checksum is ok looking at the signal in audacity.

In rtl_433 I've tried changing the bit detection level and the gain level (30dB seems to give better signal looking at audacity) with no luck, rtl_433 always indicates only 1 pulse. I'm not sure if there is a way to work out what the long and short pulse lengths are from audacity?

Some files:
Output from rtl_sdr:
https://dl.dropboxusercontent.com/s/vcbndu2tomg3q3v/rtl_sdr-out-efergyE2.bin?token_hash=AAHZk9niEOTVD94k200UhAmQdgUwLHcSGiG26RdLHNBieA&dl=1

Two files outputted from rtl_433 -f 433460000 -a -t
https://dl.dropboxusercontent.com/s/gh8pichacji36bn/gfile001.data?token_hash=AAFvNb8nxuwWX2zGZV0o28eijui1ggD-2i6tfnpCtTalzA&dl=1

https://dl.dropboxusercontent.com/s/2ra1sqykxjw3k8f/gfile002.data?token_hash=AAE4_yIDMZMFHX9CIn1tdLEji8fo80o-FmFmuSOGq2Ulgg&dl=1

Output from: rtl_433 -f 433460000 -a
Registering protocol[01] Rubicson Temperature Sensor
Registering protocol[02] Prologue Temperature Sensor
Registering protocol[03] Silvercrest Remote Control
Registering protocol[04] ELV EM 1000
Registering protocol[05] ELV WS 2000
Registering protocol[06] Waveman Switch Transmitter
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Sample rate decimation set to 0. 250000->250000
Bit detection level set to 10000.
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 433460000 Hz.
*** signal_start = 480540, signal_end = 551423
signal_len = 70883, pulses = 1
Distance coding: Pulse length 50882

Short distance: 1000000, long distance: 0, packet distance: 0

p_limit: 50882

[00] {0} 00 : 00000000

*** signal_start = 1980531, signal_end = 2051473
signal_len = 70942, pulses = 1
Distance coding: Pulse length 50941

Short distance: 1000000, long distance: 0, packet distance: 0

p_limit: 50941

[00] {0} 00 : 00000000

^CSignal caught, exiting!

User cancel, exiting...

Thanks for any help!
Peter

@merbanan
Copy link
Owner

Try playing with the gain parameter and the limit parameter.

peteakalad notifications@github.com skrev:

Hi,

I've been trying to use rtl_433 to decode the 433Mhz transmissions from
an efergy e2 electricity monitor but haven't had much luck.

I've an understanding of the packet structure from
http://electrohome.pbworks.com/w/page/34379858/Efergy%20Elite%20Wireless%20Meter%20Hack
but need some help getting the transmission decoded.

I've confirmed the signal is being received ok and is PWM with pulse
width varying (short pulse=0), and can decode it manually and confirm
the checksum is ok looking at the signal in audacity.

In rtl_433 I've tried changing the bit detection level and the gain
level (30dB seems to give better signal looking at audacity) with no
luck, rtl_433 always indicates only 1 pulse. I'm not sure if there is
a way to work out what the long and short pulse lengths are from
audacity?

Some files:
Output from rtl_sdr:
https://dl.dropboxusercontent.com/s/vcbndu2tomg3q3v/rtl_sdr-out-efergyE2.bin?token_hash=AAHZk9niEOTVD94k200UhAmQdgUwLHcSGiG26RdLHNBieA&dl=1

Two files outputted from rtl_433 -f 433460000 -a -t
https://dl.dropboxusercontent.com/s/gh8pichacji36bn/gfile001.data?token_hash=AAFvNb8nxuwWX2zGZV0o28eijui1ggD-2i6tfnpCtTalzA&dl=1

https://dl.dropboxusercontent.com/s/2ra1sqykxjw3k8f/gfile002.data?token_hash=AAE4_yIDMZMFHX9CIn1tdLEji8fo80o-FmFmuSOGq2Ulgg&dl=1

Output from: rtl_433 -f 433460000 -a
Registering protocol[01] Rubicson Temperature Sensor
Registering protocol[02] Prologue Temperature Sensor
Registering protocol[03] Silvercrest Remote Control
Registering protocol[04] ELV EM 1000
Registering protocol[05] ELV WS 2000
Registering protocol[06] Waveman Switch Transmitter
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Sample rate decimation set to 0. 250000->250000
Bit detection level set to 10000.
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 433460000 Hz.
*** signal_start = 480540, signal_end = 551423
signal_len = 70883, pulses = 1
Distance coding: Pulse length 50882

Short distance: 1000000, long distance: 0, packet distance: 0

p_limit: 50882

[00] {0} 00 : 00000000

*** signal_start = 1980531, signal_end = 2051473
signal_len = 70942, pulses = 1
Distance coding: Pulse length 50941

Short distance: 1000000, long distance: 0, packet distance: 0

p_limit: 50941

[00] {0} 00 : 00000000

^CSignal caught, exiting!

User cancel, exiting...

Thanks for any help!
Peter


Reply to this email directly or view it on GitHub:
#14

Skickat från min Android-telefon med K-9 E-post. Ursäkta min awesomeness.

@peterchs
Copy link
Contributor Author

Had a play, got a gain of 28 giving clean non-clipping signal in audacity, but with wide variance of bit detection levels I'm not getting consistent results when > 1 pulse is decoded, and I'm not seeing the static bits/bytes which I'm expecting to see in any of the output (transmitter includes static transmitter id every transmission).

./rtl_433 -g28 -a -f 433460000 -t -s 1024000 -t -l 4960
Registering protocol[01] Rubicson Temperature Sensor
Registering protocol[02] Prologue Temperature Sensor
Registering protocol[03] Silvercrest Remote Control
Registering protocol[04] ELV EM 1000
Registering protocol[05] ELV WS 2000
Registering protocol[06] Waveman Switch Transmitter
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Sample rate set to 1024000.
Sample rate decimation set to 0. 1024000->1024000
Bit detection level set to 4960.
Tuner gain set to 28.000000 dB.
Reading samples in async mode...
Tuned to 433460000 Hz.
*** signal_start = 23344675, signal_end = 23572711
signal_len = 228036, pulses = 312
Iteration 1. t: 334 min: 183 (308) max: 485 (4) delta 68482
Iteration 2. t: 319 min: 183 (307) max: 456 (5) delta 841
Iteration 3. t: 319 min: 183 (307) max: 456 (5) delta 0
Pulse coding: Short pulse length 183 - Long pulse length 456

Short distance: 98, long distance: 457, packet distance: 10967

p_limit: 319

[00] {26} 20 00 00 00 : 00100000 00000000 00000000 00000000
[01] {34} 00 00 00 00 00 : 00000000 00000000 00000000 00000000 00000000
[02] {35} 00 00 00 00 00 : 00000000 00000000 00000000 00000000 00000000
[03] {40} 00 00 00 16 00 00 : 00000000 00000000 00000000 00010110 00000000 00000000
[04] {35} 00 00 00 10 00 : 00000000 00000000 00000000 00010000 00000000
[05] {29} 00 00 00 00 : 00000000 00000000 00000000 00000000
[06] {24} 00 00 00 00 : 00000000 00000000 00000000 00000000
[07] {25} 00 00 00 00 : 00000000 00000000 00000000 00000000
[08] {26} 00 00 00 00 : 00000000 00000000 00000000 00000000
[09] {26} 00 00 00 00 : 00000000 00000000 00000000 00000000
[10] {12} 00 00 : 00000000 00000000

signal_bszie = 524288 - sg_index = 262144
start_pos = -564788 - buffer_size = 3145728
restart_pos = 2580940
*** Saving signal to file gfile001.data
*** Writing data from 2580940, len 524288
*** signal_start = 29581703, signal_end = 29709428
signal_len = 127725, pulses = 137
Iteration 1. t: 326 min: 103 (127) max: 550 (10) delta 40477
Iteration 2. t: 316 min: 101 (126) max: 532 (11) delta 328
Iteration 3. t: 316 min: 101 (126) max: 532 (11) delta 0
Pulse coding: Short pulse length 101 - Long pulse length 532

Short distance: 193, long distance: 642, packet distance: 10998

p_limit: 316

[00] {17} 00 00 00 : 00000000 00000000 00000000
[01] {33} 00 00 00 00 00 : 00000000 00000000 00000000 00000000 00000000
[02] {22} 00 00 00 : 00000000 00000000 00000000
[03] {25} 00 00 00 00 : 00000000 00000000 00000000 00000000
[04] {28} 00 00 40 00 : 00000000 00000000 01000000 00000000
[05] {12} 3f f0 : 00111111 11110000

signal_bszie = 262144 - sg_index = 2883584
start_pos = 2533606 - buffer_size = 3145728
*** Saving signal to file gfile002.data
*** Writing data from 2533606, len 262144
*** signal_start = 35633314, signal_end = 35861123
signal_len = 227809, pulses = 222
Iteration 1. t: 1368 min: 290 (219) max: 2447 (3) delta 294544
Iteration 2. t: 1368 min: 290 (219) max: 2447 (3) delta 0
Pulse coding: Short pulse length 290 - Long pulse length 2447

Short distance: 102, long distance: 361, packet distance: 10508

p_limit: 1368

[00] {10} 00 00 : 00000000 00000000
[01] {32} 00 00 00 00 00 : 00000000 00000000 00000000 00000000 00000000
[02] {29} 00 00 00 00 : 00000000 00000000 00000000 00000000
[03] {30} 00 00 00 00 : 00000000 00000000 00000000 00000000
[04] {39} 00 00 00 00 00 : 00000000 00000000 00000000 00000000 00000000
[05] {21} 00 00 20 : 00000000 00000000 00100000
[06] {18} 00 10 00 : 00000000 00010000 00000000
[07] {12} 00 00 : 00000000 00000000
[08] {10} 00 00 : 00000000 00000000
[09] {12} 00 00 : 00000000 00000000
[10] {9} 00 80 : 00000000 10000000

signal_bszie = 524288 - sg_index = 2621440
start_pos = 1991940 - buffer_size = 3145728
*** Saving signal to file gfile003.data
*** Writing data from 1991940, len 524288
*** signal_start = 41777144, signal_end = 42005333
signal_len = 228189, pulses = 284
Iteration 1. t: 5747 min: 214 (276) max: 11280 (8) delta 1406833
Iteration 2. t: 5747 min: 214 (276) max: 11280 (8) delta 0
Pulse coding: Short pulse length 214 - Long pulse length 11280

Short distance: 176, long distance: 2626, packet distance: 6573

p_limit: 5747

[00] {281} 20 00 00 01 00 00 00 04 00 00 00 40 00 00 02 00 00 00 40 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 : 00100000 00000000 00000000 00000001 00000000 00000000 00000000 00000100 00000000 00000000 00000000 01000000 00000000 00000000 00000010 00000000 00000000 00000000 01000000 00000000 00000100 00000000 00000000 00000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[01] {3} 00 : 00000000

signal_bszie = 524288 - sg_index = 2359296
start_pos = 1697448 - buffer_size = 3145728
*** Saving signal to file gfile004.data
*** Writing data from 1697448, len 524288
*** signal_start = 47930151, signal_end = 48082808
signal_len = 152657, pulses = 213
Iteration 1. t: 83 min: 46 (80) max: 120 (133) delta 4145
Iteration 2. t: 81 min: 44 (76) max: 119 (137) delta 5
Iteration 3. t: 80 min: 42 (72) max: 118 (141) delta 5
Iteration 4. t: 79 min: 41 (70) max: 118 (143) delta 1
Iteration 5. t: 78 min: 40 (68) max: 117 (145) delta 2
Iteration 6. t: 78 min: 39 (66) max: 117 (147) delta 1
Iteration 7. t: 78 min: 39 (66) max: 117 (147) delta 0
Pulse coding: Short pulse length 39 - Long pulse length 117

Short distance: 3, long distance: 255, packet distance: 11014

p_limit: 78

[00] {29} ff ff ff f0 : 11111111 11111111 11111111 11110000
[01] {33} 6b 77 c7 f7 00 : 01101011 01110111 11000111 11110111 00000000
[02] {37} 02 60 3e 78 00 : 00000010 01100000 00111110 01111000 00000000
[03] {31} f0 bb df c2 : 11110000 10111011 11011111 11000010
[04] {32} 7f df bd fe 00 : 01111111 11011111 10111101 11111110 00000000
[05] {30} ff ff ff f0 : 11111111 11111111 11111111 11110000
[06] {21} 1d 59 80 : 00011101 01011001 10000000

signal_bszie = 393216 - sg_index = 2097152
start_pos = 1400558 - buffer_size = 3145728
*** Saving signal to file gfile005.data
*** Writing data from 1400558, len 393216
*** signal_start = 60212519, signal_end = 60437949
signal_len = 225430, pulses = 154
Iteration 1. t: 4273 min: 202 (148) max: 8345 (6) delta 2670884
Iteration 2. t: 4273 min: 202 (148) max: 8345 (6) delta 0
Pulse coding: Short pulse length 202 - Long pulse length 8345

Short distance: 63, long distance: 439, packet distance: 10464

p_limit: 4273

[00] {10} 04 00 : 00000100 00000000
[01] {1} 80 : 10000000
[02] {1} 80 : 10000000
[03] {2} 40 : 01000000
[04] {5} 10 : 00010000
[05] {14} 00 10 : 00000000 00010000
[06] {29} 00 00 00 00 : 00000000 00000000 00000000 00000000
[07] {30} 00 00 00 00 : 00000000 00000000 00000000 00000000
[08] {31} 00 00 00 00 : 00000000 00000000 00000000 00000000
[09] {29} 00 00 00 00 : 00000000 00000000 00000000 00000000
[10] {2} 00 : 00000000

signal_bszie = 524288 - sg_index = 1572864
start_pos = 813944 - buffer_size = 3145728
*** Saving signal to file gfile006.data
*** Writing data from 813944, len 524288
^CSignal caught, exiting!

User cancel, exiting...

@merbanan
Copy link
Owner

On 06/23/2013 05:27 PM, peteakalad wrote:

./rtl_433 -g28 -a -f 433460000 -t -s 1024000 -t -l 4960

Add -D and send me the output. You can then force the correct lengths
with -z and -x.

MvH
Benjamin Larsson

@peterchs
Copy link
Contributor Author

Sure I've run it with -D, here's a zip of the output and the data files dumped.

https://mega.co.nz/#!gV9CWKDb!a97Z9keVx9btdrhIGQQ63Hzo9_9SJ83ikwkeNSNKCXQ

@merbanan
Copy link
Owner

On 06/23/2013 09:29 PM, peteakalad wrote:

Sure I've run it with -D, here's a zip of the output and the data
files dumped.

https://mega.co.nz/#!gV9CWKDb!a97Z9keVx9btdrhIGQQ63Hzo9_9SJ83ikwkeNSNKCXQ
https://mega.co.nz/#%21gV9CWKDb%21a97Z9keVx9btdrhIGQQ63Hzo9_9SJ83ikwkeNSNKCXQ


Reply to this email directly or view it on GitHub
#14 (comment)
Bug from
https://github.com/notifications/beacon/G10mCNU0TVd2m6LsNXylHidkz7WIsX5tQTU1ZMu43cXVXdWl1eIjOsJJpeAugN6r.gif

Ok, this signal does not fall into the on-off keying class. Between the
bits there is some kind of carrier present. My demodulator is just a
lowpass filter to recover the dc level and then do bit decisions on
that. It will always think that there is a signal present.

http://bayimg.com/NANIGAAeG

So unfortunately the current code will never be able to decode your
signal in a robust way. One easy thing that might work would be to add a
high pass filter that can remove the "carrier" between the bits. So if
you can design a proper hi pass filter then I can help you add it to the
code. It needs to be a 1st order filter with 16bit coeffs.

MvH
Benjamin Larsson

@peterchs
Copy link
Contributor Author

Yes that makes sense. I'll have a bash at that, though seems like could be steep learning curve not experienced in signal processing. If I get anywhere I'll let you know.

Cheers
Peter

@magellannh
Copy link

I believe you need to use rtl_fm to decode messages from Efergy devices.

There's some example code here:
https://github.com/magellannh/RPI_Efergy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants