From 605066ae768161aa0cf3c39bcf849dbd21253ece Mon Sep 17 00:00:00 2001 From: Jake Herbst Date: Wed, 25 May 2022 21:16:40 -0400 Subject: [PATCH 1/3] Adding socket option to server socket to bind to port in use to make restarts faster and more consistent --- scripts/server.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/server.py b/scripts/server.py index 8c681b5..c73b0fa 100755 --- a/scripts/server.py +++ b/scripts/server.py @@ -30,6 +30,8 @@ FORMAT = 'utf-8' DISCONNECT_MESSAGE = "!DISCONNECT" server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + try: server.bind(ADDR) except BaseException: From f41363d11e5c39db7c40dbddca433cbf5e69b4f5 Mon Sep 17 00:00:00 2001 From: Jake Herbst Date: Wed, 25 May 2022 21:17:35 -0400 Subject: [PATCH 2/3] Updating restart_services.sh to restart faster now with socket re-use enabled for server --- scripts/restart_services.sh | 49 ++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/scripts/restart_services.sh b/scripts/restart_services.sh index ad4e9f3..0516c70 100755 --- a/scripts/restart_services.sh +++ b/scripts/restart_services.sh @@ -4,23 +4,48 @@ source /etc/birdnet/birdnet.conf set -x my_dir=$HOME/BirdNET-Pi/scripts + sudo systemctl stop birdnet_server.service -sudo pkill server.py sudo systemctl stop birdnet_recording.service + services=(web_terminal.service -spectrogram_viewer.service -livestream.service -icecast2.service -extraction.service -chart_viewer.service -birdnet_recording.service -birdnet_log.service) + spectrogram_viewer.service + livestream.service + icecast2.service + extraction.service + chart_viewer.service + birdnet_recording.service + birdnet_log.service) for i in "${services[@]}";do -sudo systemctl restart "${i}" + sudo systemctl restart "${i}" done -until grep 5050 <(netstat -tulpn 2>&1);do -sudo systemctl restart birdnet_server.service -sleep 45 + +sudo systemctl start birdnet_server.service +sleep 5 + +for i in {1..5}; do + # We want to loop here (5*5seconds) until the server is running and listening on its port + systemctl is-active --quiet birdnet_server.service \ + && grep 5050 <(netstat -tulpn 2>&1) \ + && logger "[$0] birdnet_server.service is running" \ + && break + + sleep 5 done + +# Let's check a final time to ensure the server is running +systemctl is-active --quiet birdnet_server.service && grep 5050 <(netstat -tulpn 2>&1) +status=$? + +if (( status != 0 )); then + logger "[$0] Unable to start birdnet_server.service... Looping until it start properly" + + until grep 5050 <(netstat -tulpn 2>&1);do + sudo systemctl restart birdnet_server.service + sleep 45 + done +fi + +# Finally start the birdnet_analysis.service sudo systemctl restart birdnet_analysis.service From 82cfdf707676186c24e78f47bb436a81a8922201 Mon Sep 17 00:00:00 2001 From: Jake Herbst Date: Thu, 26 May 2022 08:33:25 -0400 Subject: [PATCH 3/3] Adding blanket systemctl daemon-reload --- scripts/update_birdnet_snippets.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/update_birdnet_snippets.sh b/scripts/update_birdnet_snippets.sh index 612ee4d..7c13581 100755 --- a/scripts/update_birdnet_snippets.sh +++ b/scripts/update_birdnet_snippets.sh @@ -71,4 +71,6 @@ then unzip $HOME/BirdNET-Pi/model/labels_l18n.zip labels_en.txt \ -d $HOME/BirdNET-Pi/model mv $HOME/BirdNET-Pi/model/labels_en.txt $HOME/BirdNET-Pi/model/labels.txt -fi \ No newline at end of file +fi + +sudo systemctl daemon-reload