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