This tool was originally created by Oleksandr Porunov: https://github.com/porunov/xiaomi_gdrive
I ported it on yi cam based on MStar platform.
Google drive loader for yi smart ip camera (MStar based). yi_gdrive let you automatically upload your videos from yi smart ip camera to your Google Drive account. Also it can automatically remove old files from your Google Drive account to prevent space exhaustion. If you want to run this tool, you need to hack the cam: https://github.com/roleoroleo/yi-hack-MStar
For Microsoft OneDrive storage users, please check yihack-onedrive-uploader
Turn off your camera and get microSD
Download yi_gdrive
Create "yi-hack" folder into your microSD
Copy gdrive folders inside "yi-hack" folder into your microSD:
If you want to set the time when your GDrive can interact with the Internet (i.e. send or remove files to Google Drive) you can change change the time in GDriveAutoremover and GDriveUploader files. If you want to let the camera interact with the Internet 24 hour/day (immediately send a video after it is recorded) then skip this step. If you still want to change the time then open your GDriveUploader script and change start_time and finish_time variables to whatever you want in the next format: HH:MM:SS. To do it find the next line:
start_time="00:00:00"
and change the time in this line to whatever you want. Example 7:35:00 pm will be:
start_time="19:35:00"
Then find the next line:
finish_time="23:59:59"
and change it to whatever you want. Example 01:00:05 am will be:
finish_time="01:00:05"
Your camera will be able to interact with the Internet from start_time to finish_time.
Put microSD into your camera
Turn on camera
After turning on your camera, use telnet or SSH (the default user is root
without passowrd) to connect to your camera:
Go to the browser, create your Google Drive application and OAuth keys for Google Drive API (example tutorial: http://www.iperiusbackup.net/en/how-to-enable-google-drive-api-and-get-client-credentials/). Essential steps' summary:
Google Drive API
, select and enable it;External
User Type, fill App name, user support email, Developer contact email, and then:
Web application
as the Application type, input the app name;http://127.0.0.1
as one of your Authorized redirect URIs when you create the credentials.Go back to your SSH console
Run GDriveConf from /tmp/sd/yi-hack/gdrive folder to configure your Google Drive access:
cd /tmp/sd/
sh yi-hack/gdrive/GDriveConf
Paste your client id and press enter
Paste your client secret and press enter
Copy link which you see and paste into your browser
Click "Accept"
Select and copy the code from the browser address bar. :warning: Even when you see a page shows "This site can't be reached", you've already got the code in your address bar. e.g.:
127.0.1/?state=state&code=4%F0AfgeXvsbZbJJklkweJKJklsfl899DcstdjfkIfdMQxffdf&scope=https:%3A%2F%2Fwww.googleapis.com%2Fauth%2fdrive
&code=
and &scope=
which is your authorization codeGo to your console back
Paste your code and press enter
You will be suggested to see the folders. Press Enter if you want to see all folders. If you want to see only root folders type root
and press Enter.
//Folders showing isn't fast. Wait for 5-10 seconds to see your directories.
You will see your folders (number of folder is on the left side)
Type the number of a folder and press Enter. (If you want to save videos in the root dir then just press Enter)
You will be asked if you want to turn on automatic remove. Press 1
and type Enter if you want. Press 0
and type Enter if you do not want. GDriveAutoremover itself will delete old files in case if your disk space overflows.
Reboot your camera:
reboot # do it manually if this command doesn't work
Done
You can check some screenshots for reference guide.
How it works: The script in the loop will create the same folders as in the record folder and upload videos into Google Drive. After the reboot, or failure of the internet script continues normally send files. If you have enabled automatic remove, GDriveAutoremover will check your free space every 45 minutes. In case when disk space is not enough, the script will erase old videos (IMPORTANT: do not put anything extra in the folder which is designed for video because GDriveAutoremover can remove it if it considers that the disk space is not enough).
This scripts were tested under: