Evohome / Evotouch Wireless protocol?

Pop your questions regarding Home automation Domotica hardware here.....

Re: Evohome / Evotouch Wireless protocol?

Postby colintd » Tue Oct 17, 2017 11:22 am

dty> Sorry about very slow reply! Yes, the second UART is wired to the async data wires on all the current busware modules. It wasn't on the very old COC module, but is a fairly easy patch is needed.
colintd
Starting Member
Starting Member
 
Posts: 11
Joined: April 2013

Re: Evohome / Evotouch Wireless protocol?

Postby colintd » Tue Oct 17, 2017 11:28 am

The schematic for the latest CUL module is on the busware website here http://busware.de/tiki-download_file.php?fileId=43
colintd
Starting Member
Starting Member
 
Posts: 11
Joined: April 2013

Re: Evohome / Evotouch Wireless protocol?

Postby kiwi3 » Sun Oct 29, 2017 10:03 pm

hox wrote:Continuing the last post.

I inverted the signal after the sync FF00 plus additional 2 bits (ff008) to get
aaaaaaaaaaaaaaaaaaff00833555355a9a96a966569aa565aa6a966569aa565aa6695a699696a9
so I get the sync bits 335553
After the 29th byte I make a Manchester decoding:
0ee7946f13de51bc4f58da6791eb7b98a7b40000000
At this point I could not decode futher like it is in https://www.domoticaforum.eu/download/file.php?id=1396

Also the RFBee and CUL data showed different results.

The SDR work was a test only, to see real data of the CC100 RF output.
In the end I'm interested in an Arduino + CC1100 modul.
Does anyonyone have a running Arduino-Code which communictes with EVOtouch


Hox

Hi Hox,

Think you have a couple of problems;
- You shouldn't invert
- bit length = 26us . Not sure if you have that correctly set
- remove preamble (including start/stop: 01111111110000000001011001100101010101010110010101)
- remove end of block (excluding start/stop: 10101100)
- remove start(0) and stop(1) bits surrounding each sequence of 8 bits (1 byte)
- per byte: reverse the order (LSB first). e.g. 10011010 becomes 01011001
- after doing all that, manchester decode

that should get you going.
kiwi3
Starting Member
Starting Member
 
Posts: 1
Joined: October 2017

Re: Evohome / Evotouch Wireless protocol?

Postby hox » Tue Nov 07, 2017 8:25 pm

Thanks kiwi3,
your recipe was realy gooood.
I thought, start and stop bits are only used in RS323 serial comunications and should not be in the wireless comunication
seen by SDR.

Also my idea was, the start and stop bits comes in only by the serial comunication of the cc1101 and the MCU (SPI interface).
As honeywell uses manchester coding the start and stop bits are hardly to be seen in the data stream.

Thanks for your support kiwi3.

hox
hox
Starting Member
Starting Member
 
Posts: 3
Joined: October 2017

Re: Evohome / Evotouch Wireless protocol?

Postby Alkemist » Thu Apr 05, 2018 1:56 pm

Hi, Sorry to jump in uninvited here.
I have an interest in the evohome protocol and am looking for a document mentioned here in several posts called TridiumEuropeResource_honeywellevohomedriver_1354788406.pdf
It is no longer available on the Tridium website. Would any of you good gentlemen have a copy you could PM me with or point me in the right direction.

My interest is in looking at a range extender for the system,


many thanks
Chris
Alkemist
Starting Member
Starting Member
 
Posts: 1
Joined: April 2018

Re: Evohome / Evotouch Wireless protocol?

Postby CaptNemo » Sun Apr 22, 2018 9:24 pm

Chris if you can create a range extender I would be interested. Cannot believe Honeywell isn't making one....
CaptNemo
Member
Member
 
Posts: 50
Joined: December 2009

Re: Evohome / Evotouch Wireless protocol?

Postby DanD » Thu May 10, 2018 7:20 pm

Hi,

Can you access this link to the Tridium doc OK?

yumpu.com/en/document/view/50032896/nia ... ium-europe

I've messed with creating a battery powered standalone repeater using an RFBee with some pretty simple modifications to the Evohome firmware developed by others. It's a couple of years since I worked on it and it was just a simple proof of principle device, but I can try and track down further details if you're interested. As far as I can remember, I had to mess a little with timings as many of the Evohome devices have a sleep/wake cycle that you have to deal with, but I think that it wasn't too time critical.

Dan
DanD
Starting Member
Starting Member
 
Posts: 20
Joined: June 2016

Re: Evohome / Evotouch Wireless protocol?

Postby ernst » Mon Nov 05, 2018 9:45 pm

I've created a simple luaradio script to receive/decode the evohome wireless data using a cheap RTL-SDR from the information found in this threat.
It will output the raw and decoded packets to UDP which can be further decoded using any of the other utilities.

If anyone's interested the code is at https://github.com/ernst-s/luaradio-evohome
ernst
Starting Member
Starting Member
 
Posts: 2
Joined: November 2018

Re: Evohome / Evotouch Wireless protocol?

Postby DBMandrake » Sat May 25, 2019 5:50 pm

ernst wrote:I've created a simple luaradio script to receive/decode the evohome wireless data using a cheap RTL-SDR from the information found in this threat.
It will output the raw and decoded packets to UDP which can be further decoded using any of the other utilities.

If anyone's interested the code is at https://github.com/ernst-s/luaradio-evohome

Hi,

I've been trying to use your luaradio-evohome script and have run into two problems.

The fiest is It seems to work up until the point where it successfully decodes a packet but then crashes in the evohomeudpsink block. Please see the following verbose log:

Code: Select all
luaradio -v evohome.lua
[CompositeBlock] Connected output FrequencyTranslatorBlock.out to input LowpassFilterBlock.in
[CompositeBlock] Connected output LowpassFilterBlock.out to input DownsamplerBlock.in
[CompositeBlock] Aliased input TunerBlock.in to input FrequencyTranslatorBlock.in
[CompositeBlock] Aliased output TunerBlock.out to output DownsamplerBlock.out
[CompositeBlock] Connected output RtlSdrSource.out to input TunerBlock.in
[CompositeBlock] Connected output TunerBlock.out to input PowerSquelchGateBlock.in
[CompositeBlock] Connected output PowerSquelchGateBlock.out to input ComplexBandpassFilterBlock.in
[CompositeBlock] Connected output ComplexBandpassFilterBlock.out to input ComplexMagnitudeBlock.in
[CompositeBlock] Connected output PowerSquelchGateBlock.out to input ComplexBandpassFilterBlock.in
[CompositeBlock] Connected output ComplexBandpassFilterBlock.out to input ComplexMagnitudeBlock.in
[CompositeBlock] Connected output ComplexMagnitudeBlock.out to input SubtractBlock.in1
[CompositeBlock] Connected output ComplexMagnitudeBlock.out to input SubtractBlock.in2
[CompositeBlock] Connected output SubtractBlock.out to input MultiplyConstantBlock.in
[CompositeBlock] Connected output MultiplyConstantBlock.out to input LowpassFilterBlock.in
[CompositeBlock] Connected output LowpassFilterBlock.out to input ZeroCrossingClockRecoveryBlock.in
[CompositeBlock] Connected output LowpassFilterBlock.out to input SamplerBlock.data
[CompositeBlock] Connected output ZeroCrossingClockRecoveryBlock.out to input SamplerBlock.clock
[CompositeBlock] Connected output SamplerBlock.out to input SlicerBlock.in
[CompositeBlock] Connected output SlicerBlock.out to input EvohomeFramerBlock.in
[CompositeBlock] Connected output EvohomeFramerBlock.out to input EvohomeUDPSinkBlock.in
[CompositeBlock] Connected output TunerBlock.out to input GnuplotSpectrumSink.in
[CompositeBlock] Connected output ZeroCrossingClockRecoveryBlock.out to input GnuplotPlotSink.in
[CompositeBlock] Dependency order:
[CompositeBlock]   RtlSdrSource
[CompositeBlock]       .out   -> {FrequencyTranslatorBlock.in}
[CompositeBlock]   FrequencyTranslatorBlock
[CompositeBlock]       .in    <- {RtlSdrSource.out}
[CompositeBlock]       .out   -> {LowpassFilterBlock.in}
[CompositeBlock]   LowpassFilterBlock
[CompositeBlock]       .in    <- {FrequencyTranslatorBlock.out}
[CompositeBlock]       .out   -> {DownsamplerBlock.in}
[CompositeBlock]   DownsamplerBlock
[CompositeBlock]       .in    <- {LowpassFilterBlock.out}
[CompositeBlock]       .out   -> {PowerSquelchGateBlock.in, GnuplotSpectrumSink.in}
[CompositeBlock]   PowerSquelchGateBlock
[CompositeBlock]       .in    <- {DownsamplerBlock.out}
[CompositeBlock]       .out   -> {ComplexBandpassFilterBlock.in, ComplexBandpassFilterBlock.in}
[CompositeBlock]   ComplexBandpassFilterBlock
[CompositeBlock]       .in    <- {PowerSquelchGateBlock.out}
[CompositeBlock]       .out   -> {ComplexMagnitudeBlock.in}
[CompositeBlock]   ComplexMagnitudeBlock
[CompositeBlock]       .in    <- {ComplexBandpassFilterBlock.out}
[CompositeBlock]       .out   -> {SubtractBlock.in2}
[CompositeBlock]   GnuplotSpectrumSink
[CompositeBlock]       .in    <- {DownsamplerBlock.out}
[CompositeBlock]   ComplexBandpassFilterBlock
[CompositeBlock]       .in    <- {PowerSquelchGateBlock.out}
[CompositeBlock]       .out   -> {ComplexMagnitudeBlock.in}
[CompositeBlock]   ComplexMagnitudeBlock
[CompositeBlock]       .in    <- {ComplexBandpassFilterBlock.out}
[CompositeBlock]       .out   -> {SubtractBlock.in1}
[CompositeBlock]   SubtractBlock
[CompositeBlock]       .in1   <- {ComplexMagnitudeBlock.out}
[CompositeBlock]       .in2   <- {ComplexMagnitudeBlock.out}
[CompositeBlock]       .out   -> {MultiplyConstantBlock.in}
[CompositeBlock]   MultiplyConstantBlock
[CompositeBlock]       .in    <- {SubtractBlock.out}
[CompositeBlock]       .out   -> {LowpassFilterBlock.in}
[CompositeBlock]   LowpassFilterBlock
[CompositeBlock]       .in    <- {MultiplyConstantBlock.out}
[CompositeBlock]       .out   -> {ZeroCrossingClockRecoveryBlock.in, SamplerBlock.data}
[CompositeBlock]   ZeroCrossingClockRecoveryBlock
[CompositeBlock]       .in    <- {LowpassFilterBlock.out}
[CompositeBlock]       .out   -> {SamplerBlock.clock, GnuplotPlotSink.in}
[CompositeBlock]   SamplerBlock
[CompositeBlock]       .data  <- {LowpassFilterBlock.out}
[CompositeBlock]       .clock <- {ZeroCrossingClockRecoveryBlock.out}
[CompositeBlock]       .out   -> {SlicerBlock.in}
[CompositeBlock]   GnuplotPlotSink
[CompositeBlock]       .in    <- {ZeroCrossingClockRecoveryBlock.out}
[CompositeBlock]   SlicerBlock
[CompositeBlock]       .in    <- {SamplerBlock.out}
[CompositeBlock]       .out   -> {EvohomeFramerBlock.in}
[CompositeBlock]   EvohomeFramerBlock
[CompositeBlock]       .in    <- {SlicerBlock.out}
[CompositeBlock]       .out   -> {EvohomeUDPSinkBlock.in}
[CompositeBlock]   EvohomeUDPSinkBlock
[CompositeBlock]       .in    <- {EvohomeFramerBlock.out}
[CompositeBlock]       .out   -> unconnected
[CompositeBlock] Parent pid 2128
[CompositeBlock] Block PowerSquelchGateBlock pid 2137
[CompositeBlock] Block GnuplotSpectrumSink pid 2140
[CompositeBlock] Block SubtractBlock pid 2143
[CompositeBlock] Block SlicerBlock pid 2149
[CompositeBlock] Block ComplexBandpassFilterBlock pid 2138
[CompositeBlock] Block DownsamplerBlock pid 2136
[CompositeBlock] Block ZeroCrossingClockRecoveryBlock pid 2146
[CompositeBlock] Block ComplexMagnitudeBlock pid 2139
[CompositeBlock] Block ComplexBandpassFilterBlock pid 2141
[CompositeBlock] Block EvohomeFramerBlock pid 2150
[CompositeBlock] Block LowpassFilterBlock pid 2145
[CompositeBlock] Block MultiplyConstantBlock pid 2144
[CompositeBlock] Block RtlSdrSource pid 2133
[CompositeBlock] Block LowpassFilterBlock pid 2135
[CompositeBlock] Block GnuplotPlotSink pid 2148
[CompositeBlock] Block FrequencyTranslatorBlock pid 2134
[CompositeBlock] Block ComplexMagnitudeBlock pid 2142
[CompositeBlock] Block SamplerBlock pid 2147
[CompositeBlock] Block EvohomeUDPSinkBlock pid 2151
Found Rafael Micro R820T tuner
[RtlSdrSource] Frequency: 868000000 Hz, Sample rate: 1800000 Hz
got sync
Invalid start-stop bit detected frame discarded
got sync
End byte detected parsing frame
frame length 20
1813be8004f964230903010802fc
frame added to out
[EvohomeUDPSinkBlock] Block runtime error: ./blocks/evohomeudpsink.lua:30: Bad file descriptor
stack traceback:
   [C]: in function 'assert'
   ./blocks/evohomeudpsink.lua:30: in function 'process'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[CompositeBlock] Child exited. Shutting down...
got sync
End byte detected parsing frame
frame length 1e
18593ef4593ef400080200a820
frame added to out
[EvohomeFramerBlock] Downstream block EvohomeUDPSinkBlock terminated unexpectedly.
[EvohomeFramerBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[SlicerBlock] Downstream block EvohomeFramerBlock terminated unexpectedly.
[SlicerBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[SamplerBlock] Downstream block SlicerBlock terminated unexpectedly.
[SamplerBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[LowpassFilterBlock] Downstream block SamplerBlock terminated unexpectedly.
[ZeroCrossingClockRecoveryBlock] Downstream block SamplerBlock terminated unexpectedly.
[ZeroCrossingClockRecoveryBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[LowpassFilterBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[MultiplyConstantBlock] Downstream block LowpassFilterBlock terminated unexpectedly.
[MultiplyConstantBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[SubtractBlock] Downstream block MultiplyConstantBlock terminated unexpectedly.
[SubtractBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[ComplexMagnitudeBlock] Downstream block SubtractBlock terminated unexpectedly.
[ComplexMagnitudeBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[ComplexMagnitudeBlock] Downstream block SubtractBlock terminated unexpectedly.
[ComplexMagnitudeBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[ComplexBandpassFilterBlock] Downstream block ComplexMagnitudeBlock terminated unexpectedly.
[ComplexBandpassFilterBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[ComplexBandpassFilterBlock] Downstream block ComplexMagnitudeBlock terminated unexpectedly.
[ComplexBandpassFilterBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[PowerSquelchGateBlock] Downstream block ComplexBandpassFilterBlock terminated unexpectedly.
[PowerSquelchGateBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[DownsamplerBlock] Downstream block PowerSquelchGateBlock terminated unexpectedly.
[DownsamplerBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[LowpassFilterBlock] Downstream block DownsamplerBlock terminated unexpectedly.
[LowpassFilterBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[FrequencyTranslatorBlock] Downstream block LowpassFilterBlock terminated unexpectedly.
[FrequencyTranslatorBlock] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.core.block"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0
[RtlSdrSource] Downstream block FrequencyTranslatorBlock terminated unexpectedly.
[RtlSdrSource] Block runtime error: [string "radio.core.pipe"]:0: write(): Broken pipe
stack traceback:
   [C]: in function 'error'
   [string "radio.core.pipe"]: in function 'write'
   [string "radio.blocks.sources.rtlsdr"]: in function <[string "radio.blocks.sources.rtlsdr"]:0>
   [C]: in function 'rtlsdr_read_async'
   [string "radio.blocks.sources.rtlsdr"]: in function 'run'
   [string "radio.core.composite"]: in function <[string "radio.core.composite"]:0>
   [C]: in function 'xpcall'
   [string "radio.core.composite"]: in function 'start'
   [string "radio.core.composite"]: in function 'run'
   evohome.lua:57: in main chunk
   [C]: in function 'dofile'
   /usr/local/bin/luaradio:105: in main chunk
   [C]: at 0x5642155d81d0


It's running in the latest version of Linux Mint on an x64 PC. I have two copies of 'nc' running as udp port listeners on ports 8888 and 8889 as a standin to Honeymon to receive any demodulated packets but they do not receive anything before the script crashes.

The second problem I have is that you suggest sending the demodulated packets to Honeymon for final decodeing, however your script makes UDP connections on port 8888 or 8889 however Honeymon only accepts data via a serial tty and does not even seem to support virtual pty's. So how did you pipe the output of your script to Honeymon ?

Keen to get this working so hopefully you can help. :)
DBMandrake
Starting Member
Starting Member
 
Posts: 2
Joined: May 2019

Re: Evohome / Evotouch Wireless protocol?

Postby ernst » Mon May 27, 2019 9:17 pm

@DBMandrake, I tried the code on linux mint. It worked just fine, could it be anything is using udp port 9000 (it's used as source port). Also is the lo ip 127.0.0.1 and is it up?

Honeymon listens on udp 8888 from mainwindow.cpp:

//receive broadcast traffic from RF receiver
udpSocket = new QUdpSocket(this);
udpSocket->bind(8888, QUdpSocket::ShareAddress);

Ernst
ernst
Starting Member
Starting Member
 
Posts: 2
Joined: November 2018

Re: Evohome / Evotouch Wireless protocol?

Postby DBMandrake » Wed May 29, 2019 11:24 pm

ernst wrote:@DBMandrake, I tried the code on linux mint. It worked just fine, could it be anything is using udp port 9000 (it's used as source port). Also is the lo ip 127.0.0.1 and is it up?

Honeymon listens on udp 8888 from mainwindow.cpp:

//receive broadcast traffic from RF receiver
udpSocket = new QUdpSocket(this);
udpSocket->bind(8888, QUdpSocket::ShareAddress);

Ernst

Hi,

Thanks for replying. Since initially posting (my post took more than a day to be moderated as I'm a new user here) I've actually managed to get it to work, however I had to make the following changes to evohomeudpsink.lua:

Code: Select all
--- evohomeudpsink.lua.bak   2019-05-25 17:52:22.698935542 +0100
+++ evohomeudpsink.lua   2019-05-25 21:07:11.604467542 +0100
@@ -5,8 +5,8 @@

local block = require('radio.core.block')
local types = require('radio.types')
-local socket = require('socket')
-local udp = socket.udp()
+-- local socket = require('socket')
+-- local udp = assert(socket.udp())
local EvohomeFrameType = require('blocks.evohomeframer').EvohomeFrameType


@@ -18,6 +18,8 @@


function EvohomeUDPSinkBlock:process(x)
+    local socket = require('socket')
+    local udp = assert(socket.udp())
     for i = 0, x.length-1 do
   local frame,raw_frame = "", ""
   for j = 0, x.data[i].raw_frame_length -1 do
@@ -26,7 +28,7 @@
   for j = 0, x.data[i].frame_length -1 do
             frame = frame .. string.char(x.data[i].frame[j])
   end
-   udp:setsockname('*', '9000')
+        udp:setsockname('*', '0')
         assert(udp:sendto(raw_frame, "127.0.0.1", 8888))
         assert(udp:sendto(frame , "127.0.0.1", 8889))
    end

For some reason the initial setup of the socket needs to be done in the EvohomeUDPSinkBlock function not in the global section at the beginning - I don't know why as I am not a Lua programmer, however I figured this out by following some of the socket examples supplied with luasocket in immediate mode.

Initially I was using lsocket installed by Luarocks which gave the errors that I posted earlier. I then removed lsocket and installed lua socket from here: http://w3.impa.br/~diego/software/luasocket/

However while the error message changed slightly in wording it was basically the same error and still did not work. Only after I made the code changes above did everything start working including communication with honeymon.

The change to udp:setsockname was not necessary to get it working, however it seemed like a good idea for it to use an automatically selected ephemerial source port rather than hard coding one which may clash with other software at random.

Hopefully that gives you enough information to figure out why I needed to make this change. As I say while I have programming experience (mainly python) I have no prior experice with Lua.
DBMandrake
Starting Member
Starting Member
 
Posts: 2
Joined: May 2019

Previous

Return to Questions & Discussions Forum

Who is online

Users browsing this forum: No registered users and 1 guest