BlackVue Sync - A new portable, hands-off, automatic recording downloader for NAS or Docker

@acolomba what is the result of "driving away" from home network while a cron/download is currently in progress? is it "safe" to do a dirty disconnect like this?

thanks for all the great work on this .. I can't wait to get this going.
 
@acolomba what is the result of "driving away" from home network while a cron/download is currently in progress? is it "safe" to do a dirty disconnect like this?

thanks for all the great work on this .. I can't wait to get this going.
Thank you. It's perfectly safe. The system is resilient to disconnections for any reason, and will resume where it left off at the first opportunity.
 
Thank you. It's perfectly safe. The system is resilient to disconnections for any reason, and will resume where it left off at the first opportunity.
This is awesome, works exactly as advertised.

I have 2 questions:
1) It is possible to obtain the battery voltage from the device somehow?
2) Is it possible to obtain the direction and magnitude of the "impact" forces for any particular "event"? Side/Front/Up?

Thanks
 
This is awesome, works exactly as advertised.

I have 2 questions:
1) It is possible to obtain the battery voltage from the device somehow?
2) Is it possible to obtain the direction and magnitude of the "impact" forces for any particular "event"? Side/Front/Up?

Thanks

Good to hear. :)

Respectively:

1) The only feature I'm aware of is the web server that the dashcam exposes to download recordings.
2) Yes, the dashcam records accelerometer data in three axis to .3gf files. BlackVue Sync downloads these files along with the rest -- video, GPS data and thumbnails.
 
BlackVue Sync has been working flawlessly. Thanks!

How to decode the 3gf accelerometer binary data? Any ideas?
It looks as if some version of the BlackVue Viewer had the ability to display the data, but not with the currently available BV Viewer I have installed for my macOS now.
I did find on the web some python for dealing with the 3gf data for AFTER it's been decompiled from binary, but nothing to decompile the binary data itself.

Thanks!

jpf
 
Thanks heaps for this, it works incredibly well with my new BlackVue 900x running in Docker on my UnRaid box.
I was wondering if it works with more than one dashcam at the same time? I would think you have to run 2 docker containers, one for each of the BlackVue's, and pointing to separate directories to save, but that should work, right?
 
Thanks heaps for this, it works incredibly well with my new BlackVue 900x running in Docker on my UnRaid box.
I was wondering if it works with more than one dashcam at the same time? I would think you have to run 2 docker containers, one for each of the BlackVue's, and pointing to separate directories to save, but that should work, right?
That's right. You would run one instance per dashcam. As long as the two instances write to different directories, they are completely isolated from each other.
 
Hi all, I have used the docker-compose to set this up - and as far as I can tell, it is working....dashcam files have been downloaded to the correct directory.

However, my docker logs are spammed with:

Code:
2023-01-15 15:50:01,582: ERROR [Errno 17] File exists: '/recordings'
Traceback (most recent call last):
  File "/blackvuesync.py", line 657, in run
    ensure_destination(destination)
  File "/blackvuesync.py", line 453, in ensure_destination
    os.makedirs(destination)
  File "/usr/lib/python3.9/os.py", line 225, in makedirs
    mkdir(name, mode)
FileExistsError: [Errno 17] File exists: '/recordings'

Have I done something wrong? Files are going into the 'dashcam' directory. The docker compose line in the yaml was:

volumes:
# Recording download destination. Change only the part before the colon.
- /mnt/dashcam:/recordings:rw

Thanks.
 
volumes:
# Recording download destination. Change only the part before the colon.
- /mnt/dashcam:/recordings:rw

Thanks.
Is that an extra colon after the word 'dashcam' there? That doesn't look right to me. Then the '/recordings' part after is being misinterpreted by the API call.
 
Is that an extra colon after the word 'dashcam' there? That doesn't look right to me. Then the '/recordings' part after is being misinterpreted by the API call.
Thanks for looking.

It is indeed a colon - that is exactly as pulled from GitHub. Should it be - /mnt/dashcam:rw - assuming I don't want a subdirectory called recordings?
 
Sorry all - I'm really struggling with this. I removed the container and had a fiddle, and now I can't even get the docker compose to re-create the container. Any help would be appreciated! I'm annoyed, because it was basically working until I tried to solve the errors in the logs!

I want to save the recordings to the mounted location /mnt/dashcam.

What do I need to put in my docker-compose.yaml in this section? When I try and run copose I now get:

Error response from daemon: error while creating mount source path '/mnt/dashcam': mkdir /mnt/dashcam: file exists

the location 'dashcam' is currently empty

# Recording download destination. Change only the part before the colon.
- /mnt/dashcam:/recordings:rw
 
Hello All,

I made a new BlackVue recording LAN downloader. I've been using it for several months now, and it's ready for public consumption.

GitHub: https://github.com/acolomba/blackvuesync
Docker Hub: https://hub.docker.com/r/acolomba/blackvuesync

Features:
  • Portable runtimes:
  • Smart: Only downloads recordings that haven't been downloaded yet.
  • Resilient: If a download interrupts for whatever reason, at the next run the script resumes where it left off. This is especially useful for possibly unreliable Wi-Fi connections from a garage.
  • Hands-off: Optionally retains recordings for a limited amount of time. Outdated recordings are automatically removed.
  • Cron-friendly: Only one process is allowed to run at any given time for a specific download destination.
  • Safe: Stops executing if the disk is almost full.
  • Friendly error reporting: Clearly communicates a range of known error conditions with sensible verbosity.
TL;DR: Set it up once, forget about it.

Should you find any bugs or wish to suggest new features, please submit an issue on GitHub (https://github.com/acolomba/blackvuesync/issues).

Edit: If you don't have GitHub account, feel free to respond here instead.

Enjoy!
___
Alessandro
Thank you for writing this, I needed something like this as the location the installer put the base in is very hard to reach.
I currently have the BlackVue 770X connected to the internet through a T-Mobile SyncUp Drive unit. I found the price for service from T-mobile is much better than the price through BlackVue for their sim.

The SyncUp does not have a way as far as I can tell to give out a static IP.

I was thinking of putting a laptop in my car , and power it from a 12V port. The laptop would have two wifi adapters. One to connect to the 770X and give it an IP in the 192.168.X.X range and one connected to the SyncUp which gives
A 172. something IP address out. When I turn off the car it would stop seeing the SyncUp and then connect to my home wifi and transfer the video to my NAS.

My main problem is I have no idea how to do any of this.
 
Hello All,

I made a new BlackVue recording LAN downloader. I've been using it for several months now, and it's ready for public consumption.

GitHub: https://github.com/acolomba/blackvuesync
Docker Hub: https://hub.docker.com/r/acolomba/blackvuesync

Features:
  • Portable runtimes:
  • Smart: Only downloads recordings that haven't been downloaded yet.
  • Resilient: If a download interrupts for whatever reason, at the next run the script resumes where it left off. This is especially useful for possibly unreliable Wi-Fi connections from a garage.
  • Hands-off: Optionally retains recordings for a limited amount of time. Outdated recordings are automatically removed.
  • Cron-friendly: Only one process is allowed to run at any given time for a specific download destination.
  • Safe: Stops executing if the disk is almost full.
  • Friendly error reporting: Clearly communicates a range of known error conditions with sensible verbosity.
TL;DR: Set it up once, forget about it.

Should you find any bugs or wish to suggest new features, please submit an issue on GitHub (https://github.com/acolomba/blackvuesync/issues).

Edit: If you don't have GitHub account, feel free to respond here instead.

Enjoy!
___
Alessandro
Good afternoon. I am using Mint as my OS.
The 770X has an IP of 10.99.77.1

I downloaded from the github page the python file and made it executable with chmod +x

Trying a dry run I am entering
./blackvuesync.py 10.99.77.1 --keep 2w --destination /home/emanuel/blackvuesync/BlackVue/Record/ --dry-run

I am getting the following reply. What am I doing incorrectly?
2023-09-27 17:27:52,628: ERROR 'NoneType' object has no attribute 'datetime'
Traceback (most recent call last):
File "/home/emanuel/blackvuesync/BlackVue/./blackvuesync.py", line 665, in run
sync(args.address, destination, grouping, args.priority, args.filter)
File "/home/emanuel/blackvuesync/BlackVue/./blackvuesync.py", line 496, in sync
current_dashcam_recordings = get_current_recordings(dashcam_recordings)
File "/home/emanuel/blackvuesync/BlackVue/./blackvuesync.py", line 440, in get_current_recordings
return recordings if cutoff_date is None else [x for x in recordings if x.datetime.date() >= cutoff_date]
File "/home/emanuel/blackvuesync/BlackVue/./blackvuesync.py", line 440, in <listcomp>
return recordings if cutoff_date is None else [x for x in recordings if x.datetime.date() >= cutoff_date]
AttributeError: 'NoneType' object has no attribute 'datetime'


Date and time on the laptop is correct.
 
ok, need a hand.....not sure what's broken but I seem to have a permission issue.


QNAP NAS pulling the docker from the library

2023-11-15 22:30:37,256: ERROR [Errno 13] Permission denied: '/recordings'
Traceback (most recent call last):
File "/blackvuesync.py", line 657, in run
ensure_destination(destination)
File "/blackvuesync.py", line 453, in ensure_destination
os.makedirs(destination)
File "/usr/lib/python3.9/os.py", line 225, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/recordings'
crond[16]: crond (busybox 1.34.1) started, log level 8

I verified access to the dash cam . I'm using below for my environmental

Variable:
Value:
ADDRESS
192.168.1.132
CRON
1
DRY_RUN

GROUPING

KEEP

MAX_USED_DISK

PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PGID
100
PRIORITY

PUID
1000
QUIET
 
ok, need a hand.....not sure what's broken but I seem to have a permission issue.


QNAP NAS pulling the docker from the library



I verified access to the dash cam . I'm using below for my environmental
well I got around the issue using the docker compose file . I had to edit the destination location from /mnt/ to /share/CACHEDEV1_DATA/xxxxxx
 
Hi,

I have built an auto downloader for docker or windows service using c#. Anyone interested?

All you have to do is set up your BlackVue dash cam to connect to your home net work. No config apart from where you want to store the videos.

Kind regards
Steve
 
Back
Top