@@ -35,7 +35,7 @@ on_exit() {
3535 # Custom actions before the script exits
3636 echo " Running cleanup tasks..."
3737 if [ -e " /usr/local/bin/supervisor" ]; then
38- /usr/local/bin/supervisor led sys_event_off || true
38+ /usr/local/bin/supervisor led clear || true
3939 fi
4040
4141 echo " System finished to install deb packages. " | wall
@@ -1028,17 +1028,61 @@ install_supervisor_deb() {
10281028 return 0
10291029}
10301030
1031+ is_backup_capable () {
1032+ if dpkg -l | grep -q " ^ii\s*thirdreality-hacore" ; then
1033+ return 0
1034+ fi
1035+ if dpkg -l | grep -q " ^ii\s*thirdreality-zigbee-mqtt" ; then
1036+ return 0
1037+ fi
1038+ return 1
1039+ }
1040+
1041+ perform_backup_if_ready () {
1042+ local backup_dir=" /mnt/R3Backup"
1043+ local flag_primary=" $backup_dir /.enable-backup"
1044+ local flag_alt=" $backup_dir /.enable_backup"
1045+
1046+ if [ ! -d " $backup_dir " ] || [ ! -x " /usr/local/bin/supervisor" ]; then
1047+ return 0
1048+ fi
1049+
1050+ if [ ! -f " $flag_primary " ] && [ ! -f " $flag_alt " ]; then
1051+ return 0
1052+ fi
1053+
1054+ if is_backup_capable; then
1055+ /usr/local/bin/supervisor led clear || true
1056+ echo " Found .enable-backup flag, forcing backup..."
1057+ echo " System found .enable-backup flag, forcing backup..." | wall
1058+ /usr/local/bin/supervisor setting backup || true
1059+ rm -f " $flag_primary " " $flag_alt "
1060+ echo " Backup completed, .enable-backup flag removed"
1061+ /usr/local/bin/supervisor led clear || true
1062+ else
1063+ echo " Backup flag detected but required packages not installed; deferring backup."
1064+ fi
1065+ }
1066+
10311067validate_config () {
1032- # Validate configuration and clean up invalid flags
1033- if [ -d " /mnt/R3Backup" ] && { [ -f " /mnt/R3Backup/.enable-backup" ] || [ -f " /mnt/R3Backup/.enable_backup" ]; }; then
1034- # Check if thirdreality-python3 package is installed
1035- if ! dpkg -l | grep -q " ^ii\s*thirdreality-python3" ; then
1036- echo " Warning: .enable-backup flag found but thirdreality-python3 package not installed"
1037- echo " Removing .enable-backup flag..."
1038- rm -f " /mnt/R3Backup/.enable-backup" " /mnt/R3Backup/.enable_backup"
1039- echo " .enable-backup flag removed due to missing thirdreality-python3 package"
1040- fi
1068+ local backup_dir=" /mnt/R3Backup"
1069+ local flag_primary=" $backup_dir /.enable-backup"
1070+ local flag_alt=" $backup_dir /.enable_backup"
1071+
1072+ if [ ! -d " $backup_dir " ]; then
1073+ return 0
1074+ fi
1075+
1076+ if [ ! -f " $flag_primary " ] && [ ! -f " $flag_alt " ]; then
1077+ return 0
1078+ fi
1079+
1080+ if is_backup_capable; then
1081+ return 0
10411082 fi
1083+
1084+ echo " Warning: Backup flag present but required packages are missing. Removing flag..."
1085+ rm -f " $flag_primary " " $flag_alt "
10421086}
10431087
10441088main_procedure ()
@@ -1054,6 +1098,7 @@ main_procedure()
10541098
10551099 # install supervisor
10561100 install_supervisor_deb
1101+ perform_backup_if_ready
10571102
10581103 # install board firmware
10591104 install_board_flash_debs
@@ -1102,22 +1147,12 @@ main_procedure()
11021147
11031148 if [ -e " /usr/local/bin/supervisor" ]; then
11041149 /usr/bin/sync
1105- /usr/local/bin/supervisor led sys_event_off || true
1150+ /usr/local/bin/supervisor led clear || true
11061151 fi
11071152
11081153 # Auto restore functionality
11091154 if [ -d " /mnt/R3Backup" ] && [ -e " /usr/local/bin/supervisor" ]; then
1110- # Check if .enable-backup exists - force backup and exit
1111- if [ -f " /mnt/R3Backup/.enable-backup" ] || [ -f " /mnt/R3Backup/.enable_backup" ]; then
1112- /usr/local/bin/supervisor led sys_event_off || true
1113- echo " Found .enable-backup flag, forcing backup..."
1114- echo " System found .enable-backup flag, forcing backup..." | wall
1115- /usr/local/bin/supervisor setting backup || true
1116- rm -f " /mnt/R3Backup/.enable-backup" " /mnt/R3Backup/.enable_backup"
1117- echo " Backup completed, .enable-backup flag removed"
1118- /usr/local/bin/supervisor led sys_event_off || true
1119- return 0
1120- fi
1155+ perform_backup_if_ready
11211156
11221157 # Check if .enable-restore exists - force restore if flag is present
11231158 if [ -f " /mnt/R3Backup/.enable-restore" ] || [ -f " /mnt/R3Backup/.enable_restore" ]; then
@@ -1127,7 +1162,7 @@ main_procedure()
11271162 echo " Found .enable-restore flag, attempting to restore..."
11281163 echo " System found .enable-restore flag, attempting to restore..." | wall
11291164 /usr/local/bin/supervisor setting restore || true
1130- /usr/local/bin/supervisor led sys_event_off || true
1165+ /usr/local/bin/supervisor led clear || true
11311166 echo " Restore completed, .enable-restore flag removed"
11321167 rm -f " /mnt/R3Backup/.enable-restore" " /mnt/R3Backup/.enable_restore"
11331168 else
0 commit comments