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
Udp (Battery) Camera Support #199
Udp (Battery) Camera Support #199
Conversation
Using udp code from jdillenkofer
Also add remote discovery but it is disabled for now
Using a keep alive message Restructed udp into modules Using all interfaces broadcast address (ipv4) Using remote discovery if local fails
Also added them to the heurestic check
69d8440
to
7ab46e4
Compare
I separated this PR from the mqtt PR so that it can be merged independantly |
Also thought I'd try and describe UDP UDP has two stages, Discovery and Transmit DiscoveryThe discovery stage negociates the connection with the camera. 4 pieces of information must be shared for a connection to start.
The discovery stage is contained in Transmit stageThe transmit stage represenets and encasulated stream of Bc packets The Udp packets can come in any order and are not guaranteed to be received. As a result There are two loops in the UDP transmit which represent the receive and send part of the connection. Recieved packets are put into a buffer. When sufficent contigious packets are received then these packets are pushed into a crossbeam channel hooked up to the The send loop handles sending packets and acknowledgments. The |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haven't finished reading through the UDP implementation itself, so more comments to come - quite a lot of SLoC - but this is really cool. Honestly I think this will make Neolink a much bigger deal than it is now, because a lot more people have battery-powered cams than do the PoE models, since it's a lower barrier to entry.
22d2571
to
4da6db9
Compare
4da6db9
to
79e0126
Compare
35fadf6
to
f70a93a
Compare
Using an Reolink Argus 3 results in a parsing error (yes im sure my credentials are correct.):
|
Thanks and sorry I didnt see that one. So is there any neolink binary that I can use for the Argus 3 right now? |
Yeah my |
It doesn't but oh well (says auth failed even though the credentials are correct, even verified by logging out of the app & back in). Can't report it anywhere, and this is the wrong place to do this. |
Maybe open an issue on my fork and we can discuss it there. It's getting late in my timezone now so won't be able to help much until tomorrow though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, I have some remaining concerns with code duplication in the various subcommands, but I think overall the approach is fine and can go ahead and merge to get the other PRs moving. Thanks for the work!
And just to make sure I don't understate this: this is super super cool to have working. |
I'm so glad we can merge this. Was a lot of work to pull of and must say thank you to those that also supported the dev. By providing me with remote access to their cameras and setting up vpns and generally sticking through my insistent tests about UDP broadcasts. Also thanks to the testers that tried their best to stress test this :) |
Yes! Seriously cool, and I think it'll expand the scope of who's interested in the software by an order of magnitude - everyone seems to have cheap battery cams, PoE hardwired setups are a bit rarer. |
Hi. Is this also part of the current downloadable binary for armhf? As far as I understand this should also work with Argus 2, but at the moment I'm not able to use it for that Cams.. |
@MasterPlexus Can you open a new issue and give up some more details such as your log files when in debug mode. export RUST_LOG=debug |
Depends on #185
This PR adds support for UDP based cameras such as battery camera.
BcSource
enumTo use UDP the only change in the config is to set the address field to the uid
This PR also updates the dissector
This is another big PR but it is ultimately one feature, if you want me to break it down into smaller PRs please let me know