thirtythreeforty / neolink

An RTSP bridge to Reolink IP cameras
https://www.thirtythreeforty.net/posts/2020/05/hacking-reolink-cameras-for-fun-and-profit/
GNU Affero General Public License v3.0
902 stars 152 forks source link

Minimize battery usage on UDP cameras #204

Open QuantumEntangledAndy opened 3 years ago

QuantumEntangledAndy commented 3 years ago

Battery UDP Camera's are mostly ready for merging (#199) however currently neolink drains their battery pretty fast even when on solar power.

I believe this is because. Neolink always pulls the camera stream even when there is no rtsp connection

We should adjust this to only stream from the camera when their is an active rtsp connection. #203 adds abort-able streams to neolink_core which should make this possible.

We can improve this further by only pulling the stream when the camera reports motion perhaps showing a black screen or something on the rtsp stream when no motion is detected.

luizbon commented 3 years ago

Thanks for the new issue, I think having the stream on only when the motion is detected would be ideal.

QuantumEntangledAndy commented 3 years ago

@luizbon how does the official client handle this? Is there any sort of way to provide an active stream only on motion? It would be nice if their was an official way to make the camera send us some sort of wake up request rather than having to keep the client logged in just to read the motion event data.

thirtythreeforty commented 3 years ago

Something else to consider that I thought about last night - lots of clients (esp. thinking of frigate although I haven't tried it out yet) use computer vision or deep learning techniques on the received video stream. In such cases, it would be really nice if our stream didn't totally black out - could we have Gstreamer keep the last frame as a still while the Neolink<->camera feed is out?

Although, from an NVR perspective, maybe you do want the feed to go black so a) you're not wasting storage (I am not persuaded by this, it'll compress just fine) and b) it's clear when you are and aren't receiving video from the camera.

We should also have a mode where we just stream from the cameras no matter what, with a warn!() that says the user will drain their battery unless the camera has a power supply.

QuantumEntangledAndy commented 3 years ago

Keeping the still sound good, I think this should all be configurable in the config.

Maybe there is a better way to detect battery then just udp because my E1 camera has udp and tcp although it's not battery. When I was testing the battery camera over vpn there was a battery meter in the corner showing the power left so that might be helpful, we could also have a setup to stream while maybe baterry >10%

luizbon commented 3 years ago

The official app keeps the last frame and a "disconnected" label on it until I actively connect. The motion sensor is used to send push notifications/emails and starts a recording. Probably the recording is an internal jog in the camera. But the cameras somehow needs to raise an event to the phone app to send the push notifications. I'm not sure how can I capture this from my phone though.

luizbon commented 3 years ago

Checking the app again, the email option is based on an SMTP server, neolink could offer an SMTP port to receive the notification.

cryogenx commented 3 years ago

first you all are gods among men, i just bought one of these cameras (Argus Eco with Solar) haven't gotten to testing neolink yet (just found it). Ive been searching for two days on a way to integrate this camera with Home Assistant.

anyway, i was reading this thread. I was attempting to utilize node-red email MTA node to accept SMTP and be able to parse those emails into actionable items in HASS (e.g. turning lights on when there is motion.) Alas the email implementation in Reolink is trash. they require auth and the node doesn't have any auth options.

Just an FYI if you implement some form of SMTP server make sure auth SSL/TLS works.

also i cant tell if it needs to be accessible outside the network at this point. just starting dabbling with it.

Would love to add, if neolink could receive the motion notifications and pass through to an MQTT broker.. I would die a happy man 😂

QuantumEntangledAndy commented 3 years ago

@cryogenx How's it going with your argus eco? Did you get neolink working? You'd need to use the udp branch PR.

I just wanted to mention that we already have a PR #197 that adds MQTT with motion detection messages. Just waiting for it to get merged.

You can test udp and mqtt using these binaries

For mqtt you'd need a config.toml like this

[[cameras]]
name = "CameraName"
username = "username"
password = "password"
address = "ABC00UID00EFG"
  [cameras.mqtt]
  server = "127.0.0.1"
  port = 1883
  credentials = ["username", "password"]
cryogenx commented 3 years ago

I haven’t had a chance, I tried briefly to run it on a Mac without success the same night I posted this comment, I haven’t had a free moment to go back to it and try on a different machine.

jolinux commented 3 years ago

My question -> I have a reolink argus 2 - If I use neolink and connect the cam without to connect the rtsp stream with vlc need the cam much more battery ? Or is this same as standby ?

If the CAM stream a video -> this need battery-power !!!

So can I run the neolink connect to the CAM in 24/7-Mode without use much more power then Standby-Mode ?

Standby-Mode the Status-LED blinking blue neolink connect the Status-LED blue ON (WLAN-connect)

thanks

Jo

QuantumEntangledAndy commented 3 years ago

@jolinux Currently neolink pulls video data from the camera all the time even when no clients are watching.

This is changed in the PR I am working on but it's not quite ready yet.

QuantumEntangledAndy commented 3 years ago

I'm not sure what standby mode is. None of the developers have a battery camera to see. We reversed the protocol over VPN with help from others who wanted battery cameras to work with neolink.

I suspect that we cannot communicate with the camera when it is in standby mode. What my PR does is connect to the camera but dosent make a stream request until motion and client are connected. It then sends a stop stream request when either of these are not true.

This means that neolink still needs to login and request motion messages to be sent over. Which will probably stop standby mode but will hopefully still be lower power because it won't be sending stream data.

jolinux commented 3 years ago

Can I help. Need you special TCPdumps ? My OS is Debian Buster my CAM Reolink Argus 2. Any channel to connect you ?

D4Ci0 commented 2 years ago

Any updates right now for handeling this situation regarding "motion based stream start and stop" for minimizing the battery usage?

From a "battery usage"-perspective, in theory, this would be very similar to manually opening the App and connecting to the camera when I get an alert on the phone. Correct me if I am wrong here.

Lanwalker commented 2 years ago

Anybody and everybody that owns a Reolink that makes us use that resource wasting AWS service ( how many routers and time to respond to and back ? ) needs to send an email to @.*** and tell them to fix this crap.

If the local Lan loses internet connection, even if your workstation is on the local Lan with the cameras, we have no way to access them for anything... same goes if our service provider goes down for any reason ( and here in Florida, that is almost every storm anymore )

I have 7 Argus units on my roof and 7 E1 units in my house and it is getting to be I can hardly download any files from these things anymore and the last client update was a joke... can't hardly see the menu on the bottom of the download routine area... I had to reinstall an old client... and the new client also failed on any downloads.

Share this to all your friends that have Reolinks and also put on Reolink areas in the many social media sites. We need these cameras to use the DEFAULT IP messaging protocols on our local segments, especially if our phones and workstations are on that segment with them.

Amazon Web Services has had way too many problems lately AND IT IS ONLY GETTING WORSE... and it is never going to get better as long as Amazon bows down to communist China and their censorship demands.

Robert Gamble - Disabled IT Analyst/Communication Systems Engineer & Automation Test, Control and Design Systems Engineer, 82nd Airborne Artillery ( 1977 ), National Admin for the United States Minutemen - American Patriots Coalition, Service Officer for the Newton American Legion, East Fultonham, Ohio

@. ( preferred ) @. @. @.

On Friday, December 24, 2021, 11:02:32 AM EST, D4Ci0 @.***> wrote:

Any updates right now for handeling this situation regarding "motion based stream start and stop" for minimizing the battery usage?

From a "battery usage"-perspective, in theory, this would be very similar to manually opening the App and connecting to the camera when I get an alert on the phone. Correct me if I am wrong here.

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you are subscribed to this thread.Message ID: @.***>

QuantumEntangledAndy commented 2 years ago

@D4Ci0 you can try my current implementation of pausing the stream when no client and when no motion is detected here: binaries docker: docker pull quantumentangledandy/neolink:motion_stream

It's a test build so mileage may vary.

You'll need to change your config to this for each camera:

[[cameras]]
name = "Cammy"
username = "****"
password = "****"
address = "****:9000"
  [cameras.pause]
  on_motion = true
  on_client = true

Replacing address with uid or whatever you usually use

QuantumEntangledAndy commented 2 years ago

@Lanwalker Although I can appreciate the sentiment with such things. The sentiment was posted on an issue thread about making neolink only connect when motion is detected and other ideas about reducing battery usage.

I'd appreciate it if comments were kept on topic.

Lanwalker commented 2 years ago

No problem, Sir !

I was just trying to make the point that the entire Reolink ' battery operated camera system ' design is a serious piece of crap and needs totally revamped, from the entire Linux based OS and all of its code that supposedly is ' locked to the AWS communication method ' to the most trashy client system for the cell phones and workstations I have ever had to deal with.

We need a completely new project that does a complete overhaul of that entire system by 3rd party members, including overwriting the installed system now used with a new OS and internal libraries and new clients that will use the new system OS for the cellular clients and the different workstations operating systems.

Your groups are doing a great job with the obstacles and should be leading the new projects. I have been fighting these obstacles with Reolink support for over a year now and realize that as I add more cameras to my own security system ( I have 7 Argus on my roof and 7 E1 based systems inside my residence ), the worse the performance of the entire system is getting to be. AWS is the main problem with implementing their failed ' solution ' due to the massive amount of time and resources used in routing and network performance and the many obstacles in keeping everything working.

Thank you for the response Sir ! ... and best wishes on your systems design !

Robert Gamble - Disabled IT Analyst/Communication Systems Engineer & Automation Test, Control and Design Systems Engineer, 82nd Airborne Artillery ( 1977 ), National Admin for the United States Minutemen - American Patriots Coalition, Service Officer for the Newton American Legion, East Fultonham, Ohio

@. ( preferred ) @. @. @.

On Saturday, December 25, 2021, 07:33:21 AM EST, Andrew King @.***> wrote:

@Lanwalker Although I can appreciate the sentiment with such things. The sentiment was posted on an issue thread about making neolink only connect when motion is detected and other ideas about reducing battery usage.

I'd appreciate it if comments were kept on topic.

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you were mentioned.Message ID: @.***>

Mangomc commented 2 years ago

I'm using a argus 2 with neolink. But the battery lasts just one day. I'm running it into a proxmox lxc Ubuntu x64 container and connected to home assistant. When u provide an Ubuntu build I can test the new motion stream test build. But I don't use docker

QuantumEntangledAndy commented 2 years ago

@Mangomc Do you mean a test build of the motion_stream branch I mentioed. I provided a link to the binaries in that post but I'll repeat it here

Mangomc commented 2 years ago

Sorry didnt saw that. Changed to the motion stream binary and i see in journalctl

Dec 30 12:58:08 neolink neolink[6990]: Stopping video: Ok(()) Dec 30 12:58:09 neolink neolink[6990]: Video stopped

Now lets hope my battery lasts longer, will give u a report :)

Mangomc commented 2 years ago

sadly didnt helped. ~50% in 6h Wonder why it doesnt show start and stop in the log with debug on. Only shows stop at startup but when i stream there is no new entry with start and stop also not. Now when the battery is gone its spamming with no connection errors

jolinux commented 2 years ago

Use the version with branch motion_stream. If I start the rtsp server with 'neolink -rtsp', the camera is activated immediately although no stream is loaded from the server. This is visible through the permanent glow of the blue LED and at night also through permanent IR LEDs. That certainly costs battery power. Would it be possible to achieve standby by logging out the camera? Or even a disconnection. Use the camera for this test without the motion function activated. Only after I close neolink and after a timeout period (approx. 5-10sec) of the camera are the IR LEDs switched off and the blue LED flash regularly after a 20sec break

jolinux commented 2 years ago

I am currently using neolink for testing without service systemd. Is it still possible to access a log file with the data that can otherwise be read via journalctl? Use export GST_DEBUG = 3 and export RUST_LOG = debug. But other data is output in neolink's call shell.

QuantumEntangledAndy commented 2 years ago

If we log out then we cannot monitor the motion status. I was hoping that not streaming would put less lead on the cpu and save power but it seems to not be enough. Do you know if it is possible to disable the LEDs manually using the offical client? That could be another place we could save power.

Mangomc commented 2 years ago

If we log out then we cannot monitor the motion status. I was hoping that not streaming would put less lead on the cpu and save power but it seems to not be enough. Do you know if it is possible to disable the LEDs manually using the offical client? That could be another place we could save power.

Yes. The status led and also the ir led can be turned off via the reolink app. Mine is always off. I don't like that blinking. That doesn't save power. What specially I need is start and stop when an app is fetching the stream. I don't need motion tracking. Is it possible to turn off the motion thing in neolink and just use the start and stop on client connect?

QuantumEntangledAndy commented 2 years ago

It should be possible but will probably need a refractor. Something that complex will have to wait until I have time

Mangomc commented 2 years ago

It should be possible but will probably need a refractor. Something that complex will have to wait until I have time

OK. I use the reolink app and shut down neolink in the meantime

Farmer-Eds-Shed commented 2 years ago

@Mangomc, Do you have solar panels or battery only on your cameras? I'm using Argus Eco's with solar panels , but have not yet tried this motion_stream branch. I'm using Neolink with Home Assistant/MotionEye and currently start and stop the Neolink service with a toggle switch on the Lovelace dashboard when I want to view the cameras in HA, I'm going to add some automation to automatically stop the service after a set time and start it on receipt of a mail notification from a camera, only concern is mail notification may be a bit slow so a separate motion sensor may be needed.

@QuantumEntangledAndy, I will give the motion_stream branch a go later, I only came across it yesterday, but suspect Mangomc is correct, the battery cameras really need to sleep probably even with solar. I've Status LED's off but IR is needed for night use, could possibly turn them on/off with an automation on motion detection, not sure how much power that would save though.

QuantumEntangledAndy commented 2 years ago

@Farmer-Eds-Shed it would seem so, we may have to go down the route of running an smtp server and listening for the cameras messages that way to detect motion. I was hoping that stopping the stream would be a more significant gain than this :(.

Mangomc commented 2 years ago

@Mangomc, Do you have solar panels or battery only on your cameras? I'm using Argus Eco's with solar panels , but have not yet tried this motion_stream branch. I'm using Neolink with Home Assistant/MotionEye and currently start and stop the Neolink service with a toggle switch on the Lovelace dashboard when I want to view the cameras in HA, I'm going to add some automation to automatically stop the service after a set time and start it on receipt of a mail notification from a camera, only concern is mail notification may be a bit slow so a separate motion sensor may be needed.

@QuantumEntangledAndy, I will give the motion_stream branch a go later, I only came across it yesterday, but suspect Mangomc is correct, the battery cameras really need to sleep probably even with solar. I've Status LED's off but IR is needed for night use, could possibly turn them on/off with an automation on motion detection, not sure how much power that would save though.

No. I don't use Any solar panel because the camera is in the floor without any windows. So almoat dark in there and Ive got 2 cats so motion detection is not a good way for me :D. I only added the rtsp stream as generic camera and run the record service when My alarm gets triggered.

QuantumEntangledAndy commented 2 years ago

@Mangomc I am not sure how you have everything linked but what about scripting neolink to start with your alarm when you start the rtsp?

Mangomc commented 2 years ago

Neolink is in a lxc container on proxmox and hassos in a vm on proxmox. Maybe it's possible but I'm not that pro to know how :)

Farmer-Eds-Shed commented 2 years ago

@Farmer-Eds-Shed it would seem so, we may have to go down the route of running an smtp server and listening for the cameras messages that way to detect motion. I was hoping that stopping the stream would be a more significant gain than this :(.

I'll give that route a go myself using Home Assistant and see how it works out.

I'll also give your current motion_stream version a go before ruling it out entirely, it may work out better with the solar powered cameras, although there is less than 8 hours of daylight here at the moment.

Farmer-Eds-Shed commented 2 years ago

@QuantumEntangledAndy What's the expected operation of the motion_stream branch?

I have this in the config running on 32 bit Pi OS (ARM)

Reolink Solar Cam

[[cameras]] name = "BackGate" username = "my_login" password = "my_very_secret_password" uid = "my_uid" [cameras.pause] on_motion = false on_client = false mode = "none" timeout = 1.0

Changing on_motion to true, pauses the video stream until movement detected as expected. I don't see what changing on_client to true does though, video doesn't seem to pause when no clients are connected (on_motion set to false for testing)

Farmer-Eds-Shed commented 2 years ago

Actually it doesn't seem to un-pause on motion either with on_motion = true.

Jan 04 09:06:55 FarmHA neolink[4148]: [2022-01-04T09:06:55Z INFO neolink::rtsp] BackGate: Logging in Jan 04 09:06:55 FarmHA neolink[4148]: [2022-01-04T09:06:55Z INFO neolink::rtsp] BackGate: Connected and logged in Jan 04 09:06:55 FarmHA neolink[4148]: [2022-01-04T09:06:55Z INFO neolink::rtsp] BackGate: Starting video stream Sub Stream (Fluent) Jan 04 09:06:55 FarmHA neolink[4148]: [2022-01-04T09:06:55Z INFO neolink::rtsp] BackGate: Connected and logged in Jan 04 09:06:55 FarmHA neolink[4148]: [2022-01-04T09:06:55Z INFO neolink::rtsp] BackGate: Camera time is already set: 2022-01-04 9:06:49 +0 Jan 04 09:06:56 FarmHA neolink[4148]: [2022-01-04T09:06:56Z INFO neolink::rtsp] BackGate: Camera reports firmware version 1030_671_488_41 Jan 04 09:06:56 FarmHA neolink[4148]: [2022-01-04T09:06:56Z INFO neolink::rtsp] BackGate: Starting video stream Main Stream (Clear) Jan 04 09:06:56 FarmHA neolink[4148]: Stopping video: Ok(()) Jan 04 09:06:56 FarmHA neolink[4148]: Video stopped Jan 04 09:06:58 FarmHA neolink[4148]: Stopping video: Ok(())

QuantumEntangledAndy commented 2 years ago

Hmm perhaps there is some sort of logic issue with it? I'd tried to make it robust as possible but perhaps I missed something.

Farmer-Eds-Shed commented 2 years ago

Here is some of the logs, get a lot of connection errors, sometimes comes to what looks like unpaused video, but I can't connect to the stream. Also it dose not display the option selected by mode when paused so no blank screen or test or last frame etc. When both options are set to false the stream works.

Maybe a compatibility issue with my model of camera? Argus Eco

Jan 04 09:14:55 FarmHA neolink[4148]: Dropped connection Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::bcconn] Deserialization error: Deserialization error Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: I/O error Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: Connection timedout when reading Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink::rtsp] Error streaming from camera BackGate, will retry in 4s: Failed to login to B Jan 04 09:14:55 FarmHA neolink[4148]: Jan 04 09:14:55 FarmHA neolink[4148]: Caused by: Jan 04 09:14:55 FarmHA neolink[4148]: Dropped connection Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp write poll aborted Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp write poll aborted Jan 04 09:14:55 FarmHA neolink[4148]: [2022-01-04T09:14:55Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp read poll aborted Jan 04 09:15:04 FarmHA neolink[4148]: [2022-01-04T09:15:04Z INFO neolink_core::bc_protocol::connection::udpconn::discover] Trying remote discovery against r Jan 04 09:15:08 FarmHA neolink[4148]: [2022-01-04T09:15:08Z INFO neolink::rtsp] BackGate: Connecting to camera at UID: Jan 04 09:15:08 FarmHA neolink[4148]: [2022-01-04T09:15:08Z INFO neolink::rtsp] BackGate: Logging in Jan 04 09:15:08 FarmHA neolink[4148]: [2022-01-04T09:15:08Z INFO neolink::rtsp] BackGate: Connecting to camera at UID: Jan 04 09:15:08 FarmHA neolink[4148]: [2022-01-04T09:15:08Z INFO neolink::rtsp] BackGate: Logging in Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] Deserialization error: Deserialization error Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: I/O error Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: Connection timedout when reading Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink::rtsp] Error streaming from camera BackGate, will retry in 8s: Failed to login to B Jan 04 09:15:13 FarmHA neolink[4148]: Jan 04 09:15:13 FarmHA neolink[4148]: Caused by: Jan 04 09:15:13 FarmHA neolink[4148]: Dropped connection Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp write poll aborted Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] Deserialization error: Deserialization error Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: I/O error Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::bcconn] caused by: Connection timedout when reading Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink::rtsp] Error streaming from camera BackGate, will retry in 8s: Failed to login to B Jan 04 09:15:13 FarmHA neolink[4148]: Jan 04 09:15:13 FarmHA neolink[4148]: Caused by: Jan 04 09:15:13 FarmHA neolink[4148]: Dropped connection Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp write poll aborted Jan 04 09:15:13 FarmHA neolink[4148]: [2022-01-04T09:15:13Z ERROR neolink_core::bc_protocol::connection::udpconn] Udp read poll aborted Jan 04 09:15:22 FarmHA neolink[4148]: [2022-01-04T09:15:22Z INFO neolink::rtsp] BackGate: Connecting to camera at UID: Jan 04 09:15:22 FarmHA neolink[4148]: [2022-01-04T09:15:22Z INFO neolink::rtsp] BackGate: Logging in Jan 04 09:15:23 FarmHA neolink[4148]: [2022-01-04T09:15:23Z INFO neolink::rtsp] BackGate: Connecting to camera at UID: Jan 04 09:15:23 FarmHA neolink[4148]: [2022-01-04T09:15:23Z INFO neolink::rtsp] BackGate: Logging in Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Connected and logged in Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Starting video stream Sub Stream (Fluent) Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Connected and logged in Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Camera time is already set: 2022-01-04 9:15:17 +0 Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Camera reports firmware version 1030_671_488_41 Jan 04 09:15:24 FarmHA neolink[4148]: [2022-01-04T09:15:24Z INFO neolink::rtsp] BackGate: Starting video stream Main Stream (Clear)

Farmer-Eds-Shed commented 2 years ago

The one thing it is doing though is still draining the battery even with solar. So maybe it still needs the redesign to logout of the camera until movement notification e-mail received anyway?

QuantumEntangledAndy commented 2 years ago

Yes I suspect so, its a big change though as the it is currently designed to maintain the login

Farmer-Eds-Shed commented 2 years ago

Yes I suspect so, its a big change though as the it is currently designed to maintain the login

I'm sure it is,

I can more or less implement what I need for now with the main branch using Home Assistant automations, its a bit of a blunt instrument approach but will do for now, honestly I'm delighted to be able to access the streams at all.

But I'll keep an eye out here for the more elegant solution in the future.

Thanks,

nfgb commented 2 years ago

Yes I suspect so, its a big change though as the it is currently designed to maintain the login

I'm sure it is,

I can more or less implement what I need for now with the main branch using Home Assistant automations, its a bit of a blunt instrument approach but will do for now, honestly I'm delighted to be able to access the streams at all.

But I'll keep an eye out here for the more elegant solution in the future.

Thanks,

I'm also trying to use a reolink battery camera on home assistant, but the drain issue prevents its usage. Have you managed to make it work in home assistant without draining the battery? I've though about having a swich for starting and stopping the service (each time I want to view the live the feed) but it doesn't seem very practical.

Farmer-Eds-Shed commented 2 years ago

Yes I suspect so, its a big change though as the it is currently designed to maintain the login

I'm sure it is, I can more or less implement what I need for now with the main branch using Home Assistant automations, its a bit of a blunt instrument approach but will do for now, honestly I'm delighted to be able to access the streams at all. But I'll keep an eye out here for the more elegant solution in the future. Thanks,

I'm also trying to use a reolink battery camera on home assistant, but the drain issue prevents its usage. Have you managed to make it work in home assistant without draining the battery? I've though about having a swich for starting and stopping the service (each time I want to view the live the feed) but it doesn't seem very practical.

That is exactly what I did, created a switch to start/stop the service. It's not perfect but it works, usually need to refresh page after starting service.

rudism commented 2 years ago

I gave this branch a try today and am also seeing the behavior where the video from my Argus Pros initially stops, then never resumes on motion or client connections (with both on_motion and on_client set to true). I tried merging upstream/master into the motion_stream branch and rebuilding since it was a bit behind, but it made no difference.

As far as battery concerns go, I agree that a good first step might be to have neolink log out of the camera entirely instead of just pausing the video, then reconnect when it detects an rtsp client (and later on motion once that piece is figured out).

For motion detection I bet you could get away without implementing a full-on SMTP server and just watch for incoming connections from the camera on whatever port you configure it to send the emails on. Should be fine unless the camera has an overly aggressive failed email retry policy that never gives up.

I'm happy to help test any new advancements on this issue. I think my plan for now might be to set up some kind of light-weight RTSP proxy server that will detect new connections, start up a neolink docker container, then forward the connection to it, stopping the container after all the connections have been closed. Not sure if I'll be able to pull it off but I'll update here if anyone else might be interested in something like that.

davo-downunder commented 2 years ago

I'm also having the same issues with battery life on an argus 2 and would also like an option to only connect to the camera when there is an active rtsp session.

Would it make it easier to hand off the listener to (say) inetd or xinetd so that when the rtsp session drops, neolink logs out of the camera?

Forgive me if this is a bit "old school" but it might be a quick win :-)

I'll have a look at the code but I suspect I'm way out of my depth.

Symbiot78 commented 2 years ago

Came here as I set up an argus pro 3 battery camera today. Wanted it integrated in Frigate but of course.. no can do So came to neolink and it works more or less out of the box. But yeah.. for a device that's supposed to be on battery (where you might not have a power outlet or POE option ... neolink eats that battery like a chipmunk in a nut-factory.

Hoping something can be done so the camera's motion-based alerts or similar can activate the stream.. or send a mqtt alert or something that can then trigger frigate to stream/detect/record.

marine1988 commented 2 years ago

I have a argus eco here and have the same problem with sollar everyday still cosumes more the panel can fee waiting for a solution with motion detection to work maybe add a bigger batterya and bigger solar pannel!

IanK6449 commented 2 years ago

Hi all,

Firstly thank you for developing Neolink in the first place... I wouldn't know where to start with doing that! Can I ask whether the option to pause the RTSP stream from the battery powered cameras made it into the main build of Neolink please? I am using a Neolink Home Assistant addon that somebody else very kindly created but I am not sure whether this option is included in that addon. I am using Neolink currently with a Reolink Argus Eco camera (plus solar panel) but the battery drain when using Neolink is very high. I found this thread and the motion_stream fork on Github and I'd like to try to make that an Addon but I have no idea how to do that if I'm honest. Appreciate your advice if possible QuantumEntangledAndy?

Cheers,

IK

blipk commented 2 years ago

@marine1988 @IanK6449 and anyone else wondering, there is config options for this explained in the PR here: https://github.com/thirtythreeforty/neolink/pull/210

IanK6449 commented 2 years ago

Yeah I did see this and I did try those config options but they appeared to be ignored and the battery life was still terrible. So, I assumed this fork hasn’t been merged into the main branch of Neolink. I could be wrong?

From: K @.> Sent: Tuesday, 29 November 2022 14:03 To: thirtythreeforty/neolink @.> Cc: IanK6449 @.>; Mention @.> Subject: Re: [thirtythreeforty/neolink] Minimize battery usage on UDP cameras (#204)

@marine1988https://github.com/marine1988 @IanK6449https://github.com/IanK6449 and anyone else wondering, there is config options for this explained in the PR here:

210https://github.com/thirtythreeforty/neolink/pull/210

— Reply to this email directly, view it on GitHubhttps://github.com/thirtythreeforty/neolink/issues/204#issuecomment-1330043855, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJHUZDUMPBCCSWLYCCZQRMDWKV6ADANCNFSM5DFIN2YA. You are receiving this because you were mentioned.Message ID: @.**@.>>