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

Multiple Protocols per Invocation #39

Closed
jepler opened this issue Dec 8, 2015 · 17 comments
Closed

Multiple Protocols per Invocation #39

jepler opened this issue Dec 8, 2015 · 17 comments

Comments

@jepler
Copy link

jepler commented Dec 8, 2015

I happen to have a supported electric meter and water meter, but it appears that one sends IDM messages and the other SCM messages. Is it only a software limitation that the two distinct message types can't be received and decoded by a single rtlamr instance?

Right now my workaround is to invoke it in single shot mode first for one message type and then the other, and that does work so woo

@bemasher
Copy link
Owner

bemasher commented Dec 8, 2015

It's primarily a software limitation at the moment. It is theoretically possible but messy with the way things are structured now. It is also a matter of performance, you almost certainly won't be able to do this on something like a Raspberry Pi.

I'll do some investigation into how easily this could be done.

@jepler
Copy link
Author

jepler commented Dec 8, 2015

Indeed, my solution over in pull request #40 for scm+ism is taking ~100% of one CPU thread on the Odroid U3 where it is running--so close to 100% that now I wonder if it isn't dropping packets to boot. I didn't think to look at CPU usage when running in just scm or just ism mode, but I can see that splitting the work in the wrong place would double resource usage.

@bemasher
Copy link
Owner

bemasher commented Dec 9, 2015

It's also a matter of coordinating the two receivers. One solution I've considered is building a multiplexed rtl_tcp clone in go, you get all the same features, and the ability to connect multiple clients who will all receive the same data.

@bemasher bemasher mentioned this issue Apr 22, 2016
@bemasher bemasher changed the title Support both IDM and SCM messages in one invocation Support multiple protocols per invocation. Apr 22, 2016
@bemasher bemasher changed the title Support multiple protocols per invocation. Multiple Protocols per Invocation Apr 22, 2016
@parkerlreed
Copy link

parkerlreed commented Sep 27, 2017

This is currently working for me using https://github.com/simonyiszk/rtl_mus

screenshot from 2017-09-27 05-04-54

Top right is rtlamr with default scm and bottom right is idm. Both are pointed to the 7373 port created by rtl_mus. I receive messages on both.

This is using a single receiver.

EDIT: Just realized this post was more about receiving both message types in one session. Saw multiplex mentioned.

I notice this does allow for both rtlamr instances to run at once (second just freezes if I try without rtl_mus)

@ekrohn
Copy link

ekrohn commented May 9, 2018

rtl_mus is an excellent suggestion. I have a PV installation with production meter sending SCM and IDM packets and a net meter (consumption-production) sending SCM+ packets. rtl_mus lets me collect data from both of my meters and it lets me fire up additional rtlamr clients to explore other traffic without disrupting the first two.

@bemasher
Copy link
Owner

I've just committed multi-protocol support to a new feature branch. If anyone would be willing to test this, let me know how it goes. You can install the new branch as follows:

git fetch
git checkout multiprotocol
go install -v .
rtlamr -msgtype=all

This feature will require some documentation before it can be included in the next release.

@bemasher bemasher removed the maybe label May 28, 2018
@cypherstream

This comment has been minimized.

@ekrohn
Copy link

ekrohn commented May 30, 2018 via email

@cypherstream

This comment has been minimized.

@bemasher
Copy link
Owner

bemasher commented May 31, 2018

@ekrohn netidm is not included in all because it is the same preamble/length/checksum as idm, it only interprets the contents of the packet differently. The idea behind all is that it should at least show messages from each protocol, and users should only be using it for discovery. Once they know what is being transmitted, they should select the appropriate message types based on their meter(s). This is the same reason r900bcd isn't included in all.

@bemasher
Copy link
Owner

@cypherstream you may want to try using git clone instead of go get.

From a Git Bash terminal:

cd %GOPATH%/github.com/bemasher
rm -rf rtlamr
git clone https://github.com/bemasher/rtlamr.git
cd rtlamr
git checkout multiprotocol
go install -v .

@cypherstream

This comment has been minimized.

@cypherstream

This comment has been minimized.

@cypherstream

This comment has been minimized.

@cypherstream
Copy link

Ok never mind my last few posts. Quite a few people had that issue. Found my way through it from a post over at stackexchange. It was for unix based system but basically an environment variable called GOBIN needed to be set. I did this and then it was able to build properly.

I am now able to run it with the -msgtype=all so I can discover what type of protocols I am finding in our area. We've had remote read water and gas meters and just yesterday they put on an Itron OpenWay IP Mesh digital electric meter. I wanted the ability to search through all message types to determine which devices used which protocols.

@bemasher
Copy link
Owner

@cypherstream I'm going to hide a few of your posts between your last one and this one to keep the issue on topic.

@bemasher
Copy link
Owner

bemasher commented Sep 2, 2018

Preliminary support has been added in release v0.9.0

@bemasher bemasher closed this as completed Sep 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants