From 4e1ad58d6a204b8a596e9657dd3bce9069531967 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 25 Jun 2024 08:29:57 +0200 Subject: [PATCH] add apprise alert --- .../rootfs/custom-services.d/30-monitoring.sh | 51 +++++++++++++++---- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/birdnet-pi/rootfs/custom-services.d/30-monitoring.sh b/birdnet-pi/rootfs/custom-services.d/30-monitoring.sh index b43e5b4a3..d1bf6307e 100755 --- a/birdnet-pi/rootfs/custom-services.d/30-monitoring.sh +++ b/birdnet-pi/rootfs/custom-services.d/30-monitoring.sh @@ -24,20 +24,50 @@ mkdir -p "$ingest_dir" chown -R pi:pi "$ingest_dir" chmod -R 755 "$ingest_dir" +function apprisemessage() { + # Set failed check so it only runs once + touch "$HOME"/BirdNET-Pi/failed_servicescheck + NOTIFICATION="" + STOPPEDSERVICE="
Stopped services: " + services=(birdnet_analysis + chart_viewer + spectrogram_viewer + icecast2 + birdnet_recording + birdnet_log + birdnet_stats) + for i in "${services[@]}"; do + if [[ "$(sudo systemctl is-active "${i}".service)" == "inactive" ]]; then + STOPPEDSERVICE+="${i}; " + fi + done + NOTIFICATION+="$STOPPEDSERVICE" + NOTIFICATION+="
Additional informations: " + NOTIFICATION+="
Since: ${LASTCHECK:-unknown}" + NOTIFICATION+="
System: ${SITE_NAME:-$(hostname)}" + NOTIFICATION+="
Available disk space: $(df -h "$(readlink -f "$HOME/BirdSongs")" | awk 'NR==2 {print $4}')" + if [ -n "$BIRDNETPI_URL" ]; then + NOTIFICATION+="
Access your BirdNET-Pi" + fi + TITLE="BirdNET-Analyzer stopped" + $HOME/BirdNET-Pi/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BirdNET-Pi/apprise.txt" + fi +} + while true; do sleep 61 # Restart analysis if clogged ############################ - if (( counter <= 0 )); then - latest="$(cat "$ingest_dir"/analyzing_now.txt)" - if [[ "$latest" == "$analyzing_now" ]]; then - echo "$(date) WARNING no change in analyzing_now for 10 iterations, restarting services" - /."$HOME"/BirdNET-Pi/scripts/restart_services.sh - fi - counter=10 - analyzing_now=$(cat "$ingest_dir"/analyzing_now.txt) + if ((counter <= 0)); then + latest="$(cat "$ingest_dir"/analyzing_now.txt)" + if [[ "$latest" == "$analyzing_now" ]]; then + echo "$(date) WARNING no change in analyzing_now for 10 iterations, restarting services" + /."$HOME"/BirdNET-Pi/scripts/restart_services.sh + fi + counter=10 + analyzing_now=$(cat "$ingest_dir"/analyzing_now.txt) fi # Pause recorder to catch-up @@ -48,10 +78,11 @@ while true; do bashio::log.green "$(date) INFO ${wavs} wav files waiting in $ingest_dir, $srv state is $state" - if (( wavs > 100 )) && [[ "$state" == "active" ]]; then + if ((wavs > 100)) && [[ "$state" == "active" ]]; then sudo systemctl stop "$srv" bashio::log.red "$(date) WARNING stopped $srv service" - elif (( wavs <= 100 )) && [[ "$state" != "active" ]]; then + if [ -s "$HOME/BirdNET-Pi/apprise.txt" ]; then apprisealert(); fi + elif ((wavs <= 100)) && [[ "$state" != "active" ]]; then sudo systemctl start $srv bashio::log.yellow "$(date) INFO started $srv service" fi