diff --git a/healthcheck-service b/healthcheck-service new file mode 100644 index 0000000..065267b --- /dev/null +++ b/healthcheck-service @@ -0,0 +1,8 @@ +# /etc/systemd/system/sim800-healthcheck.service + +[Unit] +Description=SIM800 Healthcheck service + +[Service] +Type=oneshot +ExecStart=/etc/init.d/sim800c healthcheck diff --git a/healthcheck-timer b/healthcheck-timer new file mode 100644 index 0000000..fbb5af6 --- /dev/null +++ b/healthcheck-timer @@ -0,0 +1,12 @@ +# /etc/systemd/system/sim800-healthcheck.timer + +[Unit] +Description=SIM800 healthcheck timer +After=sim800.service + +[Timer] +OnBootSec=1min +OnUnitActiveSec=1m + +[Install] +WantedBy=timers.target diff --git a/install.sh b/install.sh index e91ef9f..4b52e59 100644 --- a/install.sh +++ b/install.sh @@ -8,7 +8,8 @@ fi set -e apt update -apt install -y ppp curl +apt remove -y inetutlis-ping +apt install -y ppp curl iputils-ping mkdir -p /etc/ppp/chatscripts mkdir -p /etc/ppp/peers @@ -19,7 +20,11 @@ curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/chat" > /etc/ curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/peer" > /etc/ppp/peers/sim800c curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/script" > /etc/init.d/sim800c curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/service" > /etc/systemd/system/sim800.service +curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/healthcheck-service" > /etc/systemd/system/sim800-healthcheck.service +curl -sSL "https://git.openergy.ru/LUCKFOX/SIM800C/raw/branch/main/healthcheck-timer" > /etc/systemd/system/sim800-healthcheck.timer chmod +x /etc/init.d/sim800c systemctl enable sim800 systemctl start sim800 +systemctl enable sim800-healthcheck +systemctl start sim800-healthcheck diff --git a/script b/script index ca95b94..59c18e5 100644 --- a/script +++ b/script @@ -4,25 +4,41 @@ case "$1" in start) - echo "AT+CFUN=1,1" > /dev/ttyS3 - sleep 3 - echo "AT+IPR=115200" > /dev/ttyS3 + # echo "AT+CFUN=1,1" > /dev/ttyS3 + # sleep 3 + # echo "AT+IPR=115200" > /dev/ttyS3 + # sleep 1 pon sim800c ;; + stop) poff sim800c # sleep 3 # echo "+++" > /dev/ttyS3 # sleep 3 - echo "AT+CFUN=1,1" > /dev/ttyS3 - sleep 3 + # echo "AT+CFUN=1,1" > /dev/ttyS3 + # sleep 3 ;; + restart|reload) $0 stop + sleep 1 $0 start ;; + +healthcheck) + if ! ping -I ppp0 -c 5 -W 5 1.1.1.1 > /dev/null; then + echo "Healthcheck failed" + systemctl restart sim800 + exit 1 + else + echo "Healthcheck passed" + exit 0 + fi + ;; + *) - echo "Usage: $0 {start|stop|restart}" + echo "Usage: $0 {start|stop|restart|healthcheck}" exit 1 esac diff --git a/service b/service index 0d0d64f..98ed7ad 100644 --- a/service +++ b/service @@ -6,11 +6,11 @@ After=rc-local.service [Service] Type=forking -PIDFile=/run/ppp0.pid +# PIDFile=/run/ppp0.pid ExecStart=/etc/init.d/sim800c start ExecStop=/etc/init.d/sim800c stop -Restart=on-failure -RestartSec=5s +# Restart=on-failure +# RestartSec=5s [Install] WantedBy=multi-user.target