Files

121 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
#
# piNail2 Deploy Script
#
# Deploys piNail2 to the Raspberry Pi. Steps:
# 1. Copy piNail2 files to ~/piNail2/ on the Pi
# 2. Copy the MAX6675 library from the old project
# 3. Install pip dependencies (system-wide for Python 3.5)
# 4. Optionally install and enable the systemd service
#
# Usage: ./deploy.sh [--service]
# --service Also install and enable the systemd service
#
set -euo pipefail
PI_HOST="pinail" # SSH alias from ~/.ssh/config
PI_USER="pi"
REMOTE_DIR="/home/${PI_USER}/piNail2"
LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_SERVICE=false
if [[ "${1:-}" == "--service" ]]; then
INSTALL_SERVICE=true
fi
echo "=== piNail2 Deployment ==="
echo "Target: ${PI_HOST} -> ${REMOTE_DIR}"
echo ""
# -------------------------------------------------------------------
# Step 1: Copy project files
# -------------------------------------------------------------------
echo "--- Step 1: Copying piNail2 to Pi ---"
ssh ${PI_HOST} "mkdir -p ${REMOTE_DIR}/static ${REMOTE_DIR}/templates ${REMOTE_DIR}/logs"
# Copy Python source files
scp -q "${LOCAL_DIR}/app.py" \
"${LOCAL_DIR}/config.py" \
"${LOCAL_DIR}/thermocouple.py" \
"${LOCAL_DIR}/pid_controller.py" \
"${LOCAL_DIR}/config.json" \
"${LOCAL_DIR}/requirements.txt" \
"${LOCAL_DIR}/pinail.service" \
"${PI_HOST}:${REMOTE_DIR}/"
# Copy static + templates
scp -q "${LOCAL_DIR}/static/app.js" \
"${LOCAL_DIR}/static/style.css" \
"${PI_HOST}:${REMOTE_DIR}/static/"
scp -q "${LOCAL_DIR}/templates/index.html" \
"${PI_HOST}:${REMOTE_DIR}/templates/"
echo "Files copied."
echo ""
# -------------------------------------------------------------------
# Step 2: Copy MAX6675 library from old project
# -------------------------------------------------------------------
echo "--- Step 2: Copying MAX6675 library ---"
ssh ${PI_HOST} bash -s <<'REMOTE_SCRIPT'
# Copy the MAX6675 Python package from the old piNail project
if [ -d /home/pi/piNail/MAX6675-master/MAX6675 ]; then
cp -r /home/pi/piNail/MAX6675-master/MAX6675 /home/pi/piNail2/MAX6675
echo "MAX6675 library copied from old project"
else
echo "WARNING: MAX6675 library not found in old project!"
fi
REMOTE_SCRIPT
echo ""
# -------------------------------------------------------------------
# Step 3: Install pip dependencies
# -------------------------------------------------------------------
echo "--- Step 3: Installing dependencies ---"
ssh ${PI_HOST} bash -s <<'REMOTE_SCRIPT'
cd /home/pi/piNail2
echo "Installing dependencies with pip3..."
pip3 install --user -r requirements.txt 2>&1 | tail -10
echo ""
echo "Key packages:"
pip3 show Flask simple-pid RPi.GPIO Adafruit-GPIO 2>/dev/null | grep -E '^(Name|Version):'
REMOTE_SCRIPT
echo ""
# -------------------------------------------------------------------
# Step 4: Systemd service (optional)
# -------------------------------------------------------------------
if $INSTALL_SERVICE; then
echo "--- Step 4: Installing systemd service ---"
ssh ${PI_HOST} bash -s <<'REMOTE_SCRIPT'
sudo cp /home/pi/piNail2/pinail.service /etc/systemd/system/pinail2.service
sudo systemctl daemon-reload
sudo systemctl enable pinail2.service
echo "Service installed and enabled (pinail2.service)"
echo "Start with: sudo systemctl start pinail2"
echo "Logs with: sudo journalctl -u pinail2 -f"
REMOTE_SCRIPT
else
echo "--- Step 4: Skipping systemd service (use --service flag to install) ---"
fi
echo ""
echo "=== Deployment complete! ==="
echo ""
echo "To run manually:"
echo " ssh ${PI_HOST}"
echo " cd ~/piNail2"
echo " python3 app.py"
echo ""
echo "Web UI will be at: http://192.168.0.159:5000"