#!/bin/bash
# 核心配置（按需修改）
SERIAL_PORT="/dev/ttyACM0"  # 你的串口设备
LOG_FILE="/home/ESP32 log.txt"  # 日志文件路径
INTERVAL=3600  # 间隔时间（秒），3600=1小时

# 第一步：初始化（确保权限和日志文件存在）
# 创建日志文件（不存在则新建）
touch "$LOG_FILE"
# 赋予串口和日志文件读写权限（避免权限问题）
chmod 666 "$SERIAL_PORT" 2>/dev/null
chmod 777 "$LOG_FILE"

# 打印启动信息（日志+终端）
START_TIME="[$(date +%Y-%m-%d\ %H:%M:%S)]"
echo -e "$START_TIME ESP32 定时重启脚本启动！每${INTERVAL}秒发送一次restart指令\n"
echo -e "$START_TIME 脚本启动 → 目标串口：$SERIAL_PORT | 日志文件：$LOG_FILE\n" >> "$LOG_FILE"

# 第二步：无限循环（发送指令 → 睡眠1小时 → 重复）
while true; do
    # 生成当前时间戳
    TIME_STAMP="[$(date +%Y-%m-%d\ %H:%M:%S)]"
    
    # 核心操作：发送 restart + 回车换行 到串口
    echo -e "restart\n" > "$SERIAL_PORT"
    # 记录指令执行结果（0=成功，非0=失败）
    CMD_RESULT=$?

    # 写入日志（每一行都带时间戳）
    if [ $CMD_RESULT -eq 0 ]; then
        LOG_CONTENT="$TIME_STAMP 指令发送成功 → restart（含回车换行）"
    else
        LOG_CONTENT="$TIME_STAMP 指令发送失败！错误码：$CMD_RESULT（检查串口是否连接）"
    fi
    
    # 终端打印 + 日志写入
    echo $LOG_CONTENT
    echo $LOG_CONTENT >> "$LOG_FILE"
    echo "----------------------------------------" >> "$LOG_FILE"

    # 睡眠1小时（3600秒），循环继续
    sleep $INTERVAL
done