diff --git a/README.md b/README.md index e95413c..eabba21 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,11 @@ Required: * A Micro SD card, at least 8 GB in size, and an adapter (if necessary) to connect the card to your computer. * A mechanism to connect the Pi to the Tesla. Either: * A USB A/Micro B cable: [Adafruit](https://www.adafruit.com/product/898) or [Amazon](https://www.amazon.com/gp/product/B013G4EAEI/), or - * A USB A Add-on Board if you want to plug your Pi into your Tesla like a USB drive instead of using a cable. [Amazon](https://www.amazon.com/gp/product/B07BK2BR6C/) + * A USB A Add-on Board if you want to plug your Pi into your Tesla like a USB drive instead of using a cable. [Amazon](https://www.amazon.com/gp/product/B07BK2BR6C/), or + * A PCB kit if you want the lowest profile possible and you're able to solder. [Sparkfun](https://www.sparkfun.com/products/14526) Optional: -* A case. The "Official" case: [Adafruit](https://www.adafruit.com/product/2885) or [Amazon](https://www.amazon.com/gp/product/B06Y593MHV). There are many others to choose from. Note that the official case won't work with the USB A Add on board. +* A case. The "Official" case: [Adafruit](https://www.adafruit.com/product/3446) or [Amazon](https://www.amazon.com/gp/product/B06Y593MHV). There are many others to choose from. Note that the official case won't work with the USB A Add-on board or the PCB kit. * USB Splitter if you don't want to lose a front USB port. [The Onvian Splitter](https://www.amazon.com/gp/product/B01KX4TKH6) has been reported working by multiple people on reddit. ### Software @@ -94,6 +95,8 @@ On the next boot, the Pi hostname will become `teslausb`, so future `ssh` sessio Your Pi is now ready to be plugged into your Tesla. If you want to add music to the Pi, follow the instructions in the next section. ## (Optional) Add music to the Pi +> Note: If you set `campercent` to 100% this drive will not show up + Connect the Pi to a computer. If you're using a cable be sure to use the port labeled "USB" on the circuitboard. 1. Wait for the Pi to show up on the computer as a USB drive. 1. Copy any music you'd like to the drive labeled MUSIC. diff --git a/run/cifs_archive/configure-archive.sh b/run/cifs_archive/configure-archive.sh index eff994f..f6c4fe4 100644 --- a/run/cifs_archive/configure-archive.sh +++ b/run/cifs_archive/configure-archive.sh @@ -13,8 +13,8 @@ function configure_archive () { fi local credentials_file_path="/root/.teslaCamArchiveCredentials" - - /root/bin/write-archive-credentials-to.sh "$credentials_file_path" + echo "username=$shareuser" > "$credentials_file_path" + echo "password=$sharepassword" >> "$credentials_file_path" echo "//$archive_server_ip_address/$sharename $archive_path cifs vers=${cifs_version},credentials=${credentials_file_path},iocharset=utf8,file_mode=0777,dir_mode=0777 0" >> /etc/fstab diff --git a/run/cifs_archive/verify-archive-configuration.sh b/run/cifs_archive/verify-archive-configuration.sh index 5bbc131..684a42b 100644 --- a/run/cifs_archive/verify-archive-configuration.sh +++ b/run/cifs_archive/verify-archive-configuration.sh @@ -24,10 +24,8 @@ function check_archive_mountable () { mkdir "$test_mount_location" fi - local tmp_credentials_file_path="/tmp/teslaCamArchiveCredentials" - - /root/bin/write-archive-credentials-to.sh "$tmp_credentials_file_path" - + local tmp_credentials_file_path="/root/.teslaCamArchiveCredentials" + local mount_failed=false mount -t cifs "//$archive_server_ip_address/$sharename" "$test_mount_location" -o "vers=${cifs_version},credentials=${tmp_credentials_file_path},iocharset=utf8,file_mode=0777,dir_mode=0777" || mount_failed=true diff --git a/run/cifs_archive/write-archive-credentials-to.sh b/run/cifs_archive/write-archive-credentials-to.sh deleted file mode 100644 index edce256..0000000 --- a/run/cifs_archive/write-archive-credentials-to.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -eu - -FILE_PATH="$1" - -echo "username=$shareuser" > "$FILE_PATH" -echo "password=$sharepassword" >> "$FILE_PATH" diff --git a/setup/pi/make-root-fs-readonly.sh b/setup/pi/make-root-fs-readonly.sh index fdf2ba6..aeafeb0 100644 --- a/setup/pi/make-root-fs-readonly.sh +++ b/setup/pi/make-root-fs-readonly.sh @@ -25,7 +25,7 @@ append_cmdline_txt_param ro # Move fake-hwclock.data to /mutable directory so it can be updated if ! findmnt --mountpoint /mutable then - echo "Mounting the multable partition..." + echo "Mounting the mutable partition..." mount /mutable echo "Mounted." fi diff --git a/setup/pi/setup-teslausb b/setup/pi/setup-teslausb index d92ad4b..0b52fe1 100644 --- a/setup/pi/setup-teslausb +++ b/setup/pi/setup-teslausb @@ -113,6 +113,43 @@ function check_pushover_enabled () { fi } +function check_archive_configs () { + + RSYNC_ENABLE="${RSYNC_ENABLE:-false}" + RCLONE_ENABLE="${RCLONE_ENABLE:-false}" + + if [ "$RSYNC_ENABLE" = true ] && [ "$RCLONE_ENABLE" = true ] + then + setup_progress "STOP: Cannot enable rsync and rclone at the same time" + exit 1 + fi + + if [ "$RSYNC_ENABLE" = true ] + then + check_variable "RSYNC_USER" + check_variable "RSYNC_SERVER" + export archiveserver="$RSYNC_SERVER" + check_variable "RSYNC_PATH" + export archive_module="run/rsync_archive" + elif [ "$RCLONE_ENABLE" = true ] + then + check_variable "RCLONE_DRIVE" + check_variable "RCLONE_PATH" + # since it's a cloud hosted drive we'll just set this to google dns + export archiveserver="8.8.8.8" + export archive_module="run/rclone_archive" + else # Else for now, TODO allow both for more redundancy? + check_variable "sharename" + check_variable "shareuser" + check_variable "sharepassword" + + export cifs_version="${cifs_version:-3.0}" + export archive_module="run/cifs_archive" + fi + + check_variable "archiveserver" +} + function check_available_space () { setup_progress "Verifying that there is sufficient space available on the MicroSD card..." @@ -190,28 +227,23 @@ function configure_archive_scripts () { setup_progress "Configuring the archive scripts..." get_script /root/bin archiveloop run - - if [ $RSYNC_ENABLE = true ] - then - get_script /root/bin archive-clips.sh run/rsync_archive - get_script /root/bin connect-archive.sh run/rsync_archive - get_script /root/bin disconnect-archive.sh run/rsync_archive - elif [ $RCLONE_ENABLE = true ] - then - get_script /root/bin archive-clips.sh run/rclone_archive - get_script /root/bin connect-archive.sh run/rclone_archive - get_script /root/bin disconnect-archive.sh run/rclone_archive - else - get_script /root/bin archive-clips.sh run/cifs_archive - get_script /root/bin connect-archive.sh run/cifs_archive - get_script /root/bin disconnect-archive.sh run/cifs_archive - fi - get_script /root/bin remountfs_rw run setup_progress "Configured the archive scripts." } +function install_archive_scripts () { + check_variable "archive_module" + setup_progress "Installing scripts for archive module: $archive_module" + + local install_path="/root/bin" + get_script $install_path verify-archive-configuration.sh $archive_module + get_script $install_path configure-archive.sh $archive_module + get_script $install_path archive-clips.sh $archive_module + get_script $install_path connect-archive.sh $archive_module + get_script $install_path disconnect-archive.sh $archive_module +} + function configure_pushover_scripts() { get_script /root/bin send-pushover run } @@ -274,32 +306,8 @@ headless_setup_progress_flash 1 setup_progress "Verifying environment variables..." -RSYNC_ENABLE="${RSYNC_ENABLE:-false}" -RCLONE_ENABLE="${RCLONE_ENABLE:-false}" - -if [ "$RSYNC_ENABLE" = true ] -then - check_variable "RSYNC_USER" - check_variable "RSYNC_SERVER" - export archiveserver="$RSYNC_SERVER" - check_variable "RSYNC_PATH" -elif [ "$RCLONE_ENABLE" = true ] -then - check_variable "RCLONE_DRIVE" - check_variable "RCLONE_PATH" - # since it's a cloud hosted drive we'll just set this to google dns - export archiveserver="8.8.8.8" -else # Else for now, TODO allow both for more redundancy? - check_variable "sharename" - check_variable "shareuser" - check_variable "sharepassword" - - export cifs_version="${cifs_version:-3.0}" -fi - -check_variable "archiveserver" check_variable "campercent" - +check_archive_configs check_pushover_enabled # Flash for Stage 3 headless (grab scripts) @@ -312,22 +320,10 @@ then mkdir /root/bin fi -if [ "$RSYNC_ENABLE" = true ] -then - get_script /root/bin verify-archive-configuration.sh run/rsync_archive - get_script /root/bin configure-archive.sh run/rsync_archive -elif [ "$RCLONE_ENABLE" = true ] -then - get_script /root/bin verify-archive-configuration.sh run/rclone_archive - get_script /root/bin configure-archive.sh run/rclone_archive -else - get_script /root/bin verify-archive-configuration.sh run/cifs_archive - get_script /root/bin configure-archive.sh run/cifs_archive - get_script /root/bin write-archive-credentials-to.sh run/cifs_archive -fi - get_script /root/bin get-archiveserver-ip-address.sh run +install_archive_scripts +/root/bin/configure-archive.sh /root/bin/verify-archive-configuration.sh check_available_space @@ -336,7 +332,6 @@ get_ancillary_setup_scripts pushd ~ - configure_archive_scripts configure_pushover_scripts @@ -350,8 +345,6 @@ headless_setup_progress_flash 3 create_usb_drive_backing_files -/root/bin/configure-archive.sh - configure_rc_local configure_hostname