|
@@ -4,6 +4,418 @@
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
|
|
+## 十二、树莓派 5 8G 安装配置指南(兼容 Ubuntu 24.04)
|
|
|
|
|
+
|
|
|
|
|
+### 12.1 硬件要求
|
|
|
|
|
+
|
|
|
|
|
+| 组件 | 规格 | 说明 |
|
|
|
|
|
+|------|------|------|
|
|
|
|
|
+| 主板 | Raspberry Pi 5 8GB | BCM2712 四核 Cortex-A76 @ 2.4GHz |
|
|
|
|
|
+| 存储 | microSD 卡 ≥32GB 或 NVMe SSD | 推荐 SSD 提升数据库写入性能 |
|
|
|
|
|
+| 电源 | 官方 27W USB-C 电源 | 确保稳定供电 |
|
|
|
|
|
+| 网络 | 以太网 或 Wi-Fi | 用于连接 Modbus 设备和 Web 访问 |
|
|
|
|
|
+| 散热 | 主动散热风扇 | 长时间运行必备 |
|
|
|
|
|
+
|
|
|
|
|
+### 12.2 操作系统安装
|
|
|
|
|
+
|
|
|
|
|
+#### 方式一:Ubuntu 24.04 Server(推荐)
|
|
|
|
|
+
|
|
|
|
|
+1. **下载镜像**
|
|
|
|
|
+ ```bash
|
|
|
|
|
+ # 从 Ubuntu 官网下载 Raspberry Pi 专用镜像
|
|
|
|
|
+ wget https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.1-preinstalled-server-arm64+raspi.img.xz
|
|
|
|
|
+ ```
|
|
|
|
|
+
|
|
|
|
|
+2. **烧录镜像**
|
|
|
|
|
+ ```bash
|
|
|
|
|
+ # 使用 Raspberry Pi Imager 或 dd 命令
|
|
|
|
|
+ sudo dd if=ubuntu-24.04.1-preinstalled-server-arm64+raspi.img.xz of=/dev/sdX bs=4M status=progress
|
|
|
|
|
+ ```
|
|
|
|
|
+
|
|
|
|
|
+3. **首次启动配置**
|
|
|
|
|
+ ```bash
|
|
|
|
|
+ # 连接显示器和键盘,或通过网络 SSH 登录
|
|
|
|
|
+ # 默认用户名/密码:ubuntu/ubuntu
|
|
|
|
|
+ # 首次登录会要求修改密码
|
|
|
|
|
+ ```
|
|
|
|
|
+
|
|
|
|
|
+#### 方式二:Raspberry Pi OS(Debian Bookworm)
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 使用 Raspberry Pi Imager 选择 Raspberry Pi OS (64-bit)
|
|
|
|
|
+# 或手动下载:https://www.raspberrypi.com/software/operating-systems/
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.3 系统初始化配置
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 1. 更新系统
|
|
|
|
|
+sudo apt update && sudo apt upgrade -y
|
|
|
|
|
+
|
|
|
|
|
+# 2. 设置时区(中国)
|
|
|
|
|
+sudo timedatectl set-timezone Asia/Shanghai
|
|
|
|
|
+
|
|
|
|
|
+# 3. 设置主机名
|
|
|
|
|
+sudo hostnamectl set-hostname mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 4. 配置静态 IP(可选,编辑 /etc/netplan/01-netcfg.yaml)
|
|
|
|
|
+# network:
|
|
|
|
|
+# version: 2
|
|
|
|
|
+# ethernets:
|
|
|
|
|
+# eth0:
|
|
|
|
|
+# dhcp4: no
|
|
|
|
|
+# addresses: [192.168.1.100/24]
|
|
|
|
|
+# gateway4: 192.168.1.1
|
|
|
|
|
+# nameservers:
|
|
|
|
|
+# addresses: [8.8.8.8, 114.114.114.114]
|
|
|
|
|
+
|
|
|
|
|
+# 5. 重启
|
|
|
|
|
+sudo reboot
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.4 安装编译依赖
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 基础编译工具
|
|
|
|
|
+sudo apt install -y build-essential gcc make
|
|
|
|
|
+
|
|
|
|
|
+# SQLite3 开发库
|
|
|
|
|
+sudo apt install -y libsqlite3-dev
|
|
|
|
|
+
|
|
|
|
|
+# OpenSSL 开发库(可选,用于 HTTPS)
|
|
|
|
|
+sudo apt install -y libssl-dev
|
|
|
|
|
+
|
|
|
|
|
+# 验证安装
|
|
|
|
|
+gcc --version
|
|
|
|
|
+sqlite3 --version
|
|
|
|
|
+pkg-config --libs openssl # 如果安装了 OpenSSL
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.5 编译项目
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 1. 传输项目文件到树莓派
|
|
|
|
|
+# 方式一:SCP
|
|
|
|
|
+scp -r mppt_monitor/ ubuntu@192.168.1.100:~/
|
|
|
|
|
+
|
|
|
|
|
+# 方式二:Git
|
|
|
|
|
+git clone <your-repo-url> ~/mppt_monitor
|
|
|
|
|
+
|
|
|
|
|
+# 2. 进入项目目录
|
|
|
|
|
+cd ~/mppt_monitor
|
|
|
|
|
+
|
|
|
|
|
+# 3. 编译
|
|
|
|
|
+make clean && make
|
|
|
|
|
+
|
|
|
|
|
+# 4. 验证编译结果
|
|
|
|
|
+ls -la build/mppt_monitor
|
|
|
|
|
+file build/mppt_monitor
|
|
|
|
|
+# 应显示:ELF 64-bit LSB executable, ARM aarch64
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.6 配置文件
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 编辑配置文件
|
|
|
|
|
+nano config.ini
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+```ini
|
|
|
|
|
+[modbus]
|
|
|
|
|
+host = discover.zhonjin.com
|
|
|
|
|
+port = 40635
|
|
|
|
|
+timeout_sec = 10
|
|
|
|
|
+reconnect_interval_sec = 2
|
|
|
|
|
+
|
|
|
|
|
+[devices]
|
|
|
|
|
+# 设备地址列表(逗号分隔,1-247)
|
|
|
|
|
+addresses = 1
|
|
|
|
|
+
|
|
|
|
|
+[storage]
|
|
|
|
|
+# 数据存储间隔(秒)
|
|
|
|
|
+interval_sec = 10
|
|
|
|
|
+# 数据库文件路径
|
|
|
|
|
+db_path = mppt_data.db
|
|
|
|
|
+
|
|
|
|
|
+[web]
|
|
|
|
|
+# Web 服务端口
|
|
|
|
|
+port = 8085
|
|
|
|
|
+# 历史数据分页大小
|
|
|
|
|
+page_size = 20
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.7 运行服务
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 方式一:直接运行(调试用)
|
|
|
|
|
+./build/mppt_monitor
|
|
|
|
|
+
|
|
|
|
|
+# 方式二:后台运行
|
|
|
|
|
+nohup ./build/mppt_monitor > /var/log/mppt_monitor.log 2>&1 &
|
|
|
|
|
+
|
|
|
|
|
+# 方式三:systemd 服务(推荐生产环境)
|
|
|
|
|
+sudo make systemd
|
|
|
|
|
+sudo systemctl enable mppt-monitor
|
|
|
|
|
+sudo systemctl start mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 查看服务状态
|
|
|
|
|
+sudo systemctl status mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 查看日志
|
|
|
|
|
+sudo journalctl -u mppt-monitor -f
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.8 systemd 服务配置
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 创建服务文件
|
|
|
|
|
+sudo tee /etc/systemd/system/mppt-monitor.service << 'EOF'
|
|
|
|
|
+[Unit]
|
|
|
|
|
+Description=MPPT Solar Monitor - DM Series
|
|
|
|
|
+After=network-online.target
|
|
|
|
|
+Wants=network-online.target
|
|
|
|
|
+
|
|
|
|
|
+[Service]
|
|
|
|
|
+Type=simple
|
|
|
|
|
+User=ubuntu
|
|
|
|
|
+WorkingDirectory=/home/ubuntu/mppt_monitor
|
|
|
|
|
+ExecStart=/home/ubuntu/mppt_monitor/build/mppt_monitor
|
|
|
|
|
+Restart=always
|
|
|
|
|
+RestartSec=5
|
|
|
|
|
+StandardOutput=journal
|
|
|
|
|
+StandardError=journal
|
|
|
|
|
+
|
|
|
|
|
+# 安全加固
|
|
|
|
|
+NoNewPrivileges=true
|
|
|
|
|
+ProtectSystem=strict
|
|
|
|
|
+ProtectHome=true
|
|
|
|
|
+ReadWritePaths=/home/ubuntu/mppt_monitor
|
|
|
|
|
+
|
|
|
|
|
+[Install]
|
|
|
|
|
+WantedBy=multi-user.target
|
|
|
|
|
+EOF
|
|
|
|
|
+
|
|
|
|
|
+# 重载 systemd
|
|
|
|
|
+sudo systemctl daemon-reload
|
|
|
|
|
+
|
|
|
|
|
+# 启用并启动服务
|
|
|
|
|
+sudo systemctl enable mppt-monitor
|
|
|
|
|
+sudo systemctl start mppt-monitor
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.9 防火墙配置
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 如果使用 UFW 防火墙
|
|
|
|
|
+sudo ufw allow 8085/tcp # Web 服务端口
|
|
|
|
|
+sudo ufw allow 22/tcp # SSH(如果还没开放)
|
|
|
|
|
+sudo ufw enable
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.10 性能优化
|
|
|
|
|
+
|
|
|
|
|
+#### 12.10.1 CPU 调度优化
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 设置 CPU 性能模式为 performance
|
|
|
|
|
+sudo apt install -y cpufrequtils
|
|
|
|
|
+echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
|
|
|
|
|
+sudo systemctl restart cpufrequtils
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.10.2 数据库优化
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# SQLite3 性能优化(在 db.c 中已配置)
|
|
|
|
|
+# - WAL 模式:允许读写并发
|
|
|
|
|
+# - 同步模式:NORMAL(平衡性能和安全性)
|
|
|
|
|
+# - 缓存大小:2000 页
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.10.3 网络优化
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 优化 TCP 参数(/etc/sysctl.d/99-mppt.conf)
|
|
|
|
|
+net.ipv4.tcp_keepalive_time = 300
|
|
|
|
|
+net.ipv4.tcp_keepalive_intvl = 30
|
|
|
|
|
+net.ipv4.tcp_keepalive_probes = 5
|
|
|
|
|
+net.core.somaxconn = 1024
|
|
|
|
|
+
|
|
|
|
|
+# 应用配置
|
|
|
|
|
+sudo sysctl -p /etc/sysctl.d/99-mppt.conf
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.11 监控和维护
|
|
|
|
|
+
|
|
|
|
|
+#### 12.11.1 查看运行状态
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 服务状态
|
|
|
|
|
+sudo systemctl status mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 实时日志
|
|
|
|
|
+sudo journalctl -u mppt-monitor -f --since "1 hour ago"
|
|
|
|
|
+
|
|
|
|
|
+# 资源使用
|
|
|
|
|
+top -p $(pgrep mppt_monitor)
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.11.2 数据库维护
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 查看数据库大小
|
|
|
|
|
+ls -lh ~/mppt_monitor/mppt_data.db
|
|
|
|
|
+
|
|
|
|
|
+# 查看记录数
|
|
|
|
|
+sqlite3 ~/mppt_monitor/mppt_data.db "SELECT COUNT(*) FROM history_data;"
|
|
|
|
|
+
|
|
|
|
|
+# 清理旧数据(保留最近 30 天)
|
|
|
|
|
+sqlite3 ~/mppt_monitor/mppt_data.db "DELETE FROM history_data WHERE created_at < datetime('now', '-30 days');"
|
|
|
|
|
+
|
|
|
|
|
+# 数据库优化
|
|
|
|
|
+sqlite3 ~/mppt_monitor/mppt_data.db "VACUUM;"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.11.3 自动备份
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 创建备份脚本
|
|
|
|
|
+cat << 'EOF' > ~/mppt_monitor/backup.sh
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
+BACKUP_DIR="/home/ubuntu/backups"
|
|
|
|
|
+DATE=$(date +%Y%m%d_%H%M%S)
|
|
|
|
|
+mkdir -p $BACKUP_DIR
|
|
|
|
|
+cp ~/mppt_monitor/mppt_data.db "$BACKUP_DIR/mppt_data_$DATE.db"
|
|
|
|
|
+# 保留最近 7 天的备份
|
|
|
|
|
+find $BACKUP_DIR -name "mppt_data_*.db" -mtime +7 -delete
|
|
|
|
|
+EOF
|
|
|
|
|
+chmod +x ~/mppt_monitor/backup.sh
|
|
|
|
|
+
|
|
|
|
|
+# 添加 cron 定时任务(每天凌晨 2 点备份)
|
|
|
|
|
+crontab -e
|
|
|
|
|
+# 添加:0 2 * * * /home/ubuntu/mppt_monitor/backup.sh
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.12 故障排查
|
|
|
|
|
+
|
|
|
|
|
+#### 12.12.1 服务无法启动
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 检查端口占用
|
|
|
|
|
+sudo ss -tuln | grep 8085
|
|
|
|
|
+
|
|
|
|
|
+# 检查日志
|
|
|
|
|
+sudo journalctl -u mppt-monitor -n 100
|
|
|
|
|
+
|
|
|
|
|
+# 手动运行查看错误
|
|
|
|
|
+./build/mppt_monitor
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.12.2 Modbus 连接失败
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 测试网络连通性
|
|
|
|
|
+ping discover.zhonjin.com
|
|
|
|
|
+
|
|
|
|
|
+# 测试端口连通性
|
|
|
|
|
+nc -zv discover.zhonjin.com 40635
|
|
|
|
|
+
|
|
|
|
|
+# 检查 DNS 解析
|
|
|
|
|
+nslookup discover.zhonjin.com
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 12.12.3 数据库锁定
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 检查数据库锁
|
|
|
|
|
+sqlite3 ~/mppt_monitor/mppt_data.db "PRAGMA busy_timeout = 5000;"
|
|
|
|
|
+
|
|
|
|
|
+# 如果数据库损坏,尝试恢复
|
|
|
|
|
+sqlite3 ~/mppt_monitor/mppt_data.db ".recover" > recovered.sql
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 12.13 升级指南
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 1. 停止服务
|
|
|
|
|
+sudo systemctl stop mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 2. 备份数据
|
|
|
|
|
+cp ~/mppt_monitor/mppt_data.db ~/mppt_monitor/mppt_data.db.backup
|
|
|
|
|
+
|
|
|
|
|
+# 3. 拉取新代码
|
|
|
|
|
+cd ~/mppt_monitor
|
|
|
|
|
+git pull
|
|
|
|
|
+
|
|
|
|
|
+# 4. 重新编译
|
|
|
|
|
+make clean && make
|
|
|
|
|
+
|
|
|
|
|
+# 5. 启动服务
|
|
|
|
|
+sudo systemctl start mppt-monitor
|
|
|
|
|
+
|
|
|
|
|
+# 6. 验证
|
|
|
|
|
+curl http://localhost:8085/api/health
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 十三、Ubuntu 24.04 x86_64 安装配置(PC/服务器)
|
|
|
|
|
+
|
|
|
|
|
+### 13.1 系统要求
|
|
|
|
|
+
|
|
|
|
|
+| 组件 | 最低配置 | 推荐配置 |
|
|
|
|
|
+|------|---------|---------|
|
|
|
|
|
+| CPU | 双核 2.0GHz | 四核 3.0GHz+ |
|
|
|
|
|
+| 内存 | 2GB | 4GB+ |
|
|
|
|
|
+| 存储 | 10GB | SSD 50GB+ |
|
|
|
|
|
+| 网络 | 100Mbps | 1Gbps |
|
|
|
|
|
+
|
|
|
|
|
+### 13.2 安装步骤
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 1. 安装 Ubuntu 24.04 Server
|
|
|
|
|
+# 从 https://ubuntu.com/download/server 下载 ISO
|
|
|
|
|
+
|
|
|
|
|
+# 2. 安装依赖
|
|
|
|
|
+sudo apt update && sudo apt upgrade -y
|
|
|
|
|
+sudo apt install -y build-essential gcc make libsqlite3-dev libssl-dev
|
|
|
|
|
+
|
|
|
|
|
+# 3. 编译项目
|
|
|
|
|
+cd ~/mppt_monitor
|
|
|
|
|
+make clean && make
|
|
|
|
|
+
|
|
|
|
|
+# 4. 运行服务
|
|
|
|
|
+sudo make systemd
|
|
|
|
|
+sudo systemctl enable mppt-monitor
|
|
|
|
|
+sudo systemctl start mppt-monitor
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 13.3 Docker 部署(可选)
|
|
|
|
|
+
|
|
|
|
|
+```dockerfile
|
|
|
|
|
+# Dockerfile
|
|
|
|
|
+FROM ubuntu:24.04
|
|
|
|
|
+
|
|
|
|
|
+RUN apt update && apt install -y \
|
|
|
|
|
+ build-essential gcc make libsqlite3-dev \
|
|
|
|
|
+ && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
+
|
|
|
|
|
+WORKDIR /app
|
|
|
|
|
+COPY . .
|
|
|
|
|
+RUN make clean && make
|
|
|
|
|
+
|
|
|
|
|
+EXPOSE 8085
|
|
|
|
|
+CMD ["./build/mppt_monitor"]
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 构建和运行
|
|
|
|
|
+docker build -t mppt-monitor .
|
|
|
|
|
+docker run -d --name mppt -p 8085:8085 -v $(pwd)/data:/app mppt-monitor
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
## 一、系统概述
|
|
## 一、系统概述
|
|
|
|
|
|
|
|
### 1.1 项目目标
|
|
### 1.1 项目目标
|