- Capture l'IMSI dans une variable pour l'afficher dans le récap - Affiche l'URL complète http://<ip>/html/admin.html (cliquable dans le terminal) - Supprime la ligne eth0 (pas de connexion ethernet) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
151 lines
4.6 KiB
Bash
151 lines
4.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Script to set up the App after rebooting
|
|
|
|
# Exit on error, unset variable usage, and error in a pipeline
|
|
set -euo pipefail
|
|
|
|
# Define color variables
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No color
|
|
|
|
# Function to print messages in color
|
|
info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
|
error() { echo -e "${RED}[ERROR]${NC} $1"; exit 1; }
|
|
|
|
# Check for root privileges
|
|
if [[ "$EUID" -ne 0 ]]; then
|
|
error "This script must be run as root. Use 'sudo ./installation.sh'"
|
|
fi
|
|
REPO_DIR="/var/www/nebuleair_pro_4g"
|
|
#set up the RTC
|
|
info "Set up the RTC"
|
|
/usr/bin/python3 /var/www/nebuleair_pro_4g/RTC/set_with_NTP.py
|
|
|
|
#Wake up SARA
|
|
info "Wake Up SARA"
|
|
pinctrl set 16 op
|
|
pinctrl set 16 dh
|
|
|
|
info "Waiting for SARA to wake up..."
|
|
for i in {1..8}; do
|
|
echo -ne " $i/8 seconds\r"
|
|
sleep 1
|
|
done
|
|
echo -e "\n"
|
|
|
|
#Check SARA connection (ATI)
|
|
info "Check SARA connection (ATI)"
|
|
/usr/bin/python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 ATI 2 || warning "SARA not detected (ATI). Continuing..."
|
|
|
|
sleep 1
|
|
|
|
#set up SARA R4 APN
|
|
#info "Set up Monogoto APN"
|
|
#/usr/bin/python3 /var/www/nebuleair_pro_4g/SARA/sara_setAPN.py ttyAMA2 data.mono 2
|
|
|
|
#activate blue network led on the SARA R4
|
|
info "Activate blue LED"
|
|
/usr/bin/python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+UGPIOC=16,2 2 || warning "SARA LED activation failed. Continuing..."
|
|
|
|
sleep 1
|
|
|
|
#get SIM card CCID
|
|
info "Get SIM card CCID"
|
|
/usr/bin/python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+CCID? 2 || warning "SARA CCID read failed. Continuing..."
|
|
|
|
sleep 1
|
|
|
|
#get SIM card IMSI
|
|
info "Get SIM card IMSI"
|
|
imsi_output=$(/usr/bin/python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+CIMI 2 2>&1) || warning "SARA IMSI read failed. Continuing..."
|
|
echo "$imsi_output"
|
|
# Extract IMSI (15-digit numeric string)
|
|
imsi_number=$(echo "$imsi_output" | grep -oP '^\d{15}$' || echo "N/A")
|
|
|
|
#Connect to network
|
|
#info "Connect SARA R4 to network"
|
|
#python3 /var/www/nebuleair_pro_4g/SARA/sara_connectNetwork.py ttyAMA2 20810 60
|
|
|
|
#Need to create the two service
|
|
# 1. start the scripts to set-up the services
|
|
# 2. rtc_save_to_db
|
|
|
|
#1. set-up the services (SARA, NPM, BME280, etc)
|
|
info "Setting up systemd services..."
|
|
|
|
if [[ -f "$REPO_DIR/services/setup_services.sh" ]]; then
|
|
sudo chmod +x "$REPO_DIR/services/setup_services.sh"
|
|
sudo "$REPO_DIR/services/setup_services.sh" || warning "Failed to set up systemd services"
|
|
success "Systemd services set up successfully."
|
|
else
|
|
warning "Systemd services setup script not found."
|
|
fi
|
|
|
|
#2. Add rtc_save_to_db.service
|
|
SERVICE_FILE_2="/etc/systemd/system/rtc_save_to_db.service"
|
|
info "Setting up systemd service for rtc_save_to_db..."
|
|
|
|
# Create the systemd service file (overwrite if necessary)
|
|
sudo bash -c "cat > $SERVICE_FILE_2" <<EOF
|
|
[Unit]
|
|
Description=RTC Save to DB Script
|
|
After=network.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/RTC/save_to_db.py
|
|
Restart=always
|
|
RestartSec=1
|
|
User=root
|
|
WorkingDirectory=/var/www/nebuleair_pro_4g
|
|
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/rtc_save_to_db.log
|
|
StandardError=append:/var/www/nebuleair_pro_4g/logs/rtc_save_to_db_errors.log
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
success "Systemd service file created: $SERVICE_FILE_2"
|
|
|
|
# Reload systemd to recognize the new service
|
|
info "Reloading systemd daemon..."
|
|
sudo systemctl daemon-reload
|
|
|
|
# Enable the service to start on boot
|
|
info "Enabling the service to start on boot..."
|
|
sudo systemctl enable rtc_save_to_db.service
|
|
|
|
# Start the service immediately
|
|
info "Starting the service..."
|
|
sudo systemctl start rtc_save_to_db.service
|
|
|
|
# Display device information
|
|
echo ""
|
|
echo "=========================================="
|
|
echo -e "${GREEN} Installation Complete!${NC}"
|
|
echo "=========================================="
|
|
|
|
# Get Raspberry Pi serial number (last 8 characters)
|
|
serial_number=$(cat /proc/cpuinfo | grep Serial | awk '{print substr($3, length($3) - 7)}' | tr '[:lower:]' '[:upper:]')
|
|
echo -e "${BLUE}Device ID (Serial):${NC} $serial_number"
|
|
|
|
# Display IMSI
|
|
echo -e "${BLUE}IMSI:${NC} ${imsi_number:-N/A}"
|
|
|
|
# Get IP address and make it a clickable link
|
|
ip_wlan0=$(ip -4 addr show wlan0 2>/dev/null | grep -oP '(?<=inet\s)\d+(\.\d+){3}' || echo "Not connected")
|
|
|
|
if [[ "$ip_wlan0" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
admin_url="http://${ip_wlan0}/html/admin.html"
|
|
echo -e "${BLUE}IP Address (wlan0):${NC} ${admin_url}"
|
|
else
|
|
echo -e "${BLUE}IP Address (wlan0):${NC} $ip_wlan0"
|
|
fi
|
|
|
|
echo "=========================================="
|