diff --git a/battybirdnet-pi/config.json b/battybirdnet-pi/config.json index 14dff8646..d9f79d276 100644 --- a/battybirdnet-pi/config.json +++ b/battybirdnet-pi/config.json @@ -119,6 +119,6 @@ "udev": true, "url": "https://github.com/alexbelgium/hassio-addons/tree/master/battybirdnet-pi", "usb": true, - "version": "0.4", + "version": "0.5", "video": true } diff --git a/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh b/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh index bf8f8a086..511299480 100755 --- a/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh +++ b/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh @@ -12,10 +12,10 @@ done chown caddy:caddy /run/php/php*-fpm.sock sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /helpers/caddy_ingress.sh sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /etc/caddy/Caddyfile -sed -i "s|/run/php/php-fpm.sock|$sockfile|g" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh +sed -i "s|/run/php/php-fpm.sock|$sockfile|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh # Update caddyfile with password -/."$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh &>/dev/null || true +/."$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh &>/dev/null || true echo "Starting service: caddy" /usr/bin/caddy run --config /etc/caddy/Caddyfile diff --git a/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh b/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh index 3c709506a..3d90d004a 100755 --- a/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh +++ b/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh @@ -28,7 +28,7 @@ chmod -R 755 "$ingest_dir" function apprisealert() { # Set failed check so it only runs once - touch "$HOME"/BattyBirdNET-Analyzer/failed_servicescheck + touch "$HOME"/BirdNET-Pi/failed_servicescheck NOTIFICATION="" STOPPEDSERVICE="
Stopped services: " services=(birdnet_analysis @@ -49,10 +49,10 @@ function apprisealert() { 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 BattyBirdNET-Analyzer" + NOTIFICATION+="
Access your BirdNET-Pi" fi TITLE="BirdNET-Analyzer stopped" - "$HOME"/BattyBirdNET-Analyzer/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BattyBirdNET-Analyzer/apprise.txt" + "$HOME"/BirdNET-Pi/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BirdNET-Pi/apprise.txt" } while true; do @@ -65,7 +65,7 @@ while true; do 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"/BattyBirdNET-Analyzer/scripts/restart_services.sh + /."$HOME"/BirdNET-Pi/scripts/restart_services.sh fi counter=10 analyzing_now=$(cat "$ingest_dir"/analyzing_now.txt) @@ -83,7 +83,7 @@ while true; do bashio::log.red "$(date) WARNING too many files in queue, pausing $srv" sudo systemctl stop "$srv" sudo systemctl restart birdnet_analysis - if [ -s "$HOME/BattyBirdNET-Analyzer/apprise.txt" ]; then apprisealert; fi + if [ -s "$HOME/BirdNET-Pi/apprise.txt" ]; then apprisealert; fi elif [[ "$state" != "active" ]]; then bashio::log.yellow "$(date) INFO started $srv service" sudo systemctl start $srv diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh index 85adf8703..d243c6a4f 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh @@ -58,11 +58,11 @@ chown -R pi:pi /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp chmod -R 755 /config /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp # Save default birdnet.conf to perform sanity check -cp "$HOME"/BattyBirdNET-Analyzer/birdnet.conf "$HOME"/BattyBirdNET-Analyzer/birdnet.bak +cp "$HOME"/BirdNET-Pi/birdnet.conf "$HOME"/BirdNET-Pi/birdnet.bak # Symlink files echo "... creating symlink" -for files in "$HOME/BattyBirdNET-Analyzer/birdnet.conf" "$HOME/BattyBirdNET-Analyzer/scripts/whitelist_species_list.txt" "$HOME/BattyBirdNET-Analyzer/blacklisted_images.txt" "$HOME/BattyBirdNET-Analyzer/scripts/birds.db" "$HOME/BattyBirdNET-Analyzer/BirdDB.txt" "$HOME/BattyBirdNET-Analyzer/scripts/disk_check_exclude.txt" "$HOME/BattyBirdNET-Analyzer/apprise.txt" "$HOME/BattyBirdNET-Analyzer/exclude_species_list.txt" "$HOME/BattyBirdNET-Analyzer/include_species_list.txt" "$HOME/BattyBirdNET-Analyzer/IdentifiedSoFar.txt" "$HOME/BattyBirdNET-Analyzer/scripts/confirmed_species_list.txt"; do +for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/scripts/whitelist_species_list.txt" "$HOME/BirdNET-Pi/blacklisted_images.txt" "$HOME/BirdNET-Pi/scripts/birds.db" "$HOME/BirdNET-Pi/BirdDB.txt" "$HOME/BirdNET-Pi/scripts/disk_check_exclude.txt" "$HOME/BirdNET-Pi/apprise.txt" "$HOME/BirdNET-Pi/exclude_species_list.txt" "$HOME/BirdNET-Pi/include_species_list.txt" "$HOME/BirdNET-Pi/IdentifiedSoFar.txt" "$HOME/BirdNET-Pi/scripts/confirmed_species_list.txt"; do filename="${files##*/}" if [ ! -f /config/"$filename" ]; then if [ -f "$files" ]; then @@ -72,8 +72,8 @@ for files in "$HOME/BattyBirdNET-Analyzer/birdnet.conf" "$HOME/BattyBirdNET-Anal fi fi if [ -e "$files" ]; then rm "$files"; fi - sudo -u pi ln -fs /config/"$filename" "$HOME/BattyBirdNET-Analyzer/$filename" || bashio::log.fatal "Symlink creation failed for $filename" - sudo -u pi ln -fs /config/"$filename" "$HOME/BattyBirdNET-Analyzer/scripts/$filename" || bashio::log.fatal "Symlink creation failed for $filename" + sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/$filename" || bashio::log.fatal "Symlink creation failed for $filename" + sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/scripts/$filename" || bashio::log.fatal "Symlink creation failed for $filename" sudo -u pi ln -fs /config/"$filename" /etc/birdnet/"$filename" || bashio::log.fatal "Symlink creation failed for $filename" done diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh index bdc4535c1..47ffa5b77 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh @@ -10,8 +10,8 @@ echo " " bashio::log.info "Checking your birndet.conf file integrity" # Set variables -configcurrent="$HOME"/BattyBirdNET-Analyzer/birdnet.conf -configtemplate="$HOME"/BattyBirdNET-Analyzer/birdnet.bak +configcurrent="$HOME"/BirdNET-Pi/birdnet.conf +configtemplate="$HOME"/BirdNET-Pi/birdnet.bak # Extract variable names from config template and read each one grep -o '^[^#=]*=' "$configtemplate" | sed 's/=//' | while read -r var; do diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh index 493930dcd..ed1585c99 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh @@ -14,13 +14,13 @@ common_steps () { sed -i "s|%%mqtt_pass%%|$MQTT_PASS|g" /helpers/birdnet_to_mqtt.py # Copy script to the appropriate directory - cp /helpers/birdnet_to_mqtt.py "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py - chown pi:pi "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py - chmod +x "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py + cp /helpers/birdnet_to_mqtt.py "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py + chown pi:pi "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py + chmod +x "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py # Add hooks to the main analysis script - sed -i "/load_global_model, run_analysis/a from utils.birdnet_to_mqtt import automatic_mqtt_publish" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i '/write_to_db(/a\ automatic_mqtt_publish(file, detection, os.path.basename(detection.file_name_extr))' "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py + sed -i "/load_global_model, run_analysis/a from utils.birdnet_to_mqtt import automatic_mqtt_publish" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i '/write_to_db(/a\ automatic_mqtt_publish(file, detection, os.path.basename(detection.file_name_extr))' "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py else bashio::log.fatal "MQTT connection failed, it will not be configured. Error message :" mosquitto_pub -h "$MQTT_HOST" -p "$MQTT_PORT" -t "$TOPIC" -m "test" -u "$MQTT_USER" -P "$MQTT_PASS" -q 1 -d --will-topic "$TOPIC" --will-payload "Disconnected" --will-qos 1 --will-retain @@ -30,7 +30,7 @@ common_steps () { # Check if MQTT service is available and not disabled if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED'; then bashio::log.green "---" - bashio::log.blue "MQTT addon is active on your system! BattyBirdNET-Analyzer is now automatically configured to send its output to MQTT" + bashio::log.blue "MQTT addon is active on your system! BirdNET-Pi is now automatically configured to send its output to MQTT" bashio::log.blue "MQTT user : $(bashio::services "mqtt" "username")" bashio::log.blue "MQTT password : $(bashio::services "mqtt" "password")" bashio::log.blue "MQTT broker : tcp://$(bashio::services "mqtt" "host"):$(bashio::services "mqtt" "port")" @@ -52,7 +52,7 @@ if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED'; t elif bashio::config.has_value "MQTT_HOST_manual" && bashio::config.has_value "MQTT_PORT_manual"; then bashio::log.green "---" bashio::log.blue "MQTT is manually configured in the addon options" - bashio::log.blue "BattyBirdNET-Analyzer is now automatically configured to send its output to MQTT" + bashio::log.blue "BirdNET-Pi is now automatically configured to send its output to MQTT" bashio::log.green "---" bashio::log.blue "Data will be posted to the topic : 'birdnet'" bashio::log.blue "Json data : {'Date', 'Time', 'ScientificName', 'CommonName', 'Confidence', 'SpeciesCode', 'ClipName', 'url'}" diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh index 5fb600569..b4fbae83a 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh @@ -11,53 +11,53 @@ bashio::log.info "Adding optional features" # Denoiser #if bashio::config.true "DENOISER_ANALYSIS_ENABLED"; then -# sed -i "s|ar 48000|ar 48000 -af \"arnndn=m=sample.rnnn\"|g" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_recording.sh -# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_recording.sh +# sed -i "s|ar 48000|ar 48000 -af \"arnndn=m=sample.rnnn\"|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh +# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh #fi # Enable the Processed folder ############################# -if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py; then +if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py; then echo "... Enabling the Processed folder : the last 15 wav files will be stored there" # Adapt config.php - sed -i "/GET\[\"info_site\"\]/a\ \$processed_size = \$_GET\[\"processed_size\"\];" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\$contents = file_get_contents/a\ \$contents = preg_replace\(\"/PROCESSED_SIZE=\.\*/\", \"PROCESSED_SIZE=\$processed_size\", \$contents\);" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i

Processed folder management

" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i " "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i \"/>" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i Processed is the directory where the formerly 'Analyzed' files are moved after extractions, mostly for troubleshooting purposes.
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i This value defines the maximum amount of files that are kept before replacement with new files.
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php - sed -i "/\"success\"/i\
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/GET\[\"info_site\"\]/a\ \$processed_size = \$_GET\[\"processed_size\"\];" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\$contents = file_get_contents/a\ \$contents = preg_replace\(\"/PROCESSED_SIZE=\.\*/\", \"PROCESSED_SIZE=\$processed_size\", \$contents\);" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i
" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i

Processed folder management

" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i " "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i \"/>" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i
" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i Processed is the directory where the formerly 'Analyzed' files are moved after extractions, mostly for troubleshooting purposes.
" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i This value defines the maximum amount of files that are kept before replacement with new files.
" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i
" "$HOME"/BirdNET-Pi/scripts/config.php + sed -i "/\"success\"/i\
" "$HOME"/BirdNET-Pi/scripts/config.php # Adapt birdnet_analysis.py - move_to_processed - sed -i "/log.info('handle_reporting_queue done')/a\ os.remove(files.pop(0))" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ while len(files) > processed_size:" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ files.sort(key=os.path.getmtime)" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ files = glob.glob(os.path.join(processed_dir, '*'))" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ os.rename(file_name, os.path.join(processed_dir, os.path.basename(file_name)))" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ processed_dir = os.path.join(get_settings()['RECS_DIR'], 'Processed')" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\def move_to_processed(file_name, processed_size):" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ os.remove(files.pop(0))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ while len(files) > processed_size:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ files.sort(key=os.path.getmtime)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ files = glob.glob(os.path.join(processed_dir, '*'))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ os.rename(file_name, os.path.join(processed_dir, os.path.basename(file_name)))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ processed_dir = os.path.join(get_settings()['RECS_DIR'], 'Processed')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\def move_to_processed(file_name, processed_size):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py # Adapt birdnet_analysis.py - get_processed_size - sed -i "/log.info('handle_reporting_queue done')/a\ return 0" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ except (ValueError, TypeError):" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ return processed_size if isinstance(processed_size, int) else 0" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ processed_size = get_settings().getint('PROCESSED_SIZE')" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ try:" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\def get_processed_size():" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ return 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ except (ValueError, TypeError):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ return processed_size if isinstance(processed_size, int) else 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ processed_size = get_settings().getint('PROCESSED_SIZE')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ try:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\def get_processed_size():" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py # Modify calls - sed -i "/from subprocess import CalledProcessError/a\import glob" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/from subprocess import CalledProcessError/a\import time" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py + sed -i "/from subprocess import CalledProcessError/a\import glob" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/from subprocess import CalledProcessError/a\import time" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py # Modify main code - sed -i "/os.remove(file.file_name)/i\ processed_size = get_processed_size()" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/os.remove(file.file_name)/i\ if processed_size > 0:" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/os.remove(file.file_name)/i\ move_to_processed(file.file_name, processed_size)" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/os.remove(file.file_name)/i\ else:" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py - sed -i "/os.remove(file.file_name)/c\ os.remove(file.file_name)" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py + sed -i "/os.remove(file.file_name)/i\ processed_size = get_processed_size()" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/os.remove(file.file_name)/i\ if processed_size > 0:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/os.remove(file.file_name)/i\ move_to_processed(file.file_name, processed_size)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/os.remove(file.file_name)/i\ else:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py + sed -i "/os.remove(file.file_name)/c\ os.remove(file.file_name)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py fi || true echo " " diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh index 7c8d7d868..0b8372cfc 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh @@ -11,37 +11,37 @@ bashio::log.info "Adapting webui" # Remove services tab echo "... removing System Controls from webui as should be used from HA" -sed -i '/>System Controls/d' "$HOME"/BattyBirdNET-Analyzer/homepage/views.php +sed -i '/>System Controls/d' "$HOME"/BirdNET-Pi/homepage/views.php # Remove services tab echo "... removing Ram drive from webui as it is handled from HA" -sed -i '/Ram drive/{n;s/center"/center" style="display: none;"/;}' "$HOME"/BattyBirdNET-Analyzer/scripts/service_controls.php -sed -i '/Ram drive/d' "$HOME"/BattyBirdNET-Analyzer/scripts/service_controls.php +sed -i '/Ram drive/{n;s/center"/center" style="display: none;"/;}' "$HOME"/BirdNET-Pi/scripts/service_controls.php +sed -i '/Ram drive/d' "$HOME"/BirdNET-Pi/scripts/service_controls.php # Correct services to start as user pi echo "... correct services to start as pi" -for file in $(find "$HOME"/BattyBirdNET-Analyzer/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do +for file in $(find "$HOME"/BirdNET-Pi/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do if [[ "$file" != "birdnet_log.service" ]]; then - sed -i "s|ExecStart=|ExecStart=/usr/bin/sudo -u pi |g" "$HOME/BattyBirdNET-Analyzer/templates/$file" + sed -i "s|ExecStart=|ExecStart=/usr/bin/sudo -u pi |g" "$HOME/BirdNET-Pi/templates/$file" fi done # Send services log to container logs echo "... send services log to container logs" -for file in $(find "$HOME"/BattyBirdNET-Analyzer/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do - sed -i "/Service/a StandardError=append:/proc/1/fd/1" "$HOME/BattyBirdNET-Analyzer/templates/$file" - sed -i "/Service/a StandardOutput=append:/proc/1/fd/1" "$HOME/BattyBirdNET-Analyzer/templates/$file" +for file in $(find "$HOME"/BirdNET-Pi/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do + sed -i "/Service/a StandardError=append:/proc/1/fd/1" "$HOME/BirdNET-Pi/templates/$file" + sed -i "/Service/a StandardOutput=append:/proc/1/fd/1" "$HOME/BirdNET-Pi/templates/$file" done # Avoid preselection in include and exclude lists echo "... avoid preselecting options in include and exclude lists" -sed -i "s|option selected|option disabled|g" "$HOME"/BattyBirdNET-Analyzer/scripts/include_list.php -sed -i "s|option selected|option disabled|g" "$HOME"/BattyBirdNET-Analyzer/scripts/exclude_list.php +sed -i "s|option selected|option disabled|g" "$HOME"/BirdNET-Pi/scripts/include_list.php +sed -i "s|option selected|option disabled|g" "$HOME"/BirdNET-Pi/scripts/exclude_list.php # Correct log services to show /proc/1/fd/1 echo "... show container logs in /logs" -sed -i "/User=pi/d" "$HOME/BattyBirdNET-Analyzer/templates/birdnet_log.service" -sed -i "s|birdnet_log.sh|cat /proc/1/fd/1|g" "$HOME/BattyBirdNET-Analyzer/templates/birdnet_log.service" +sed -i "/User=pi/d" "$HOME/BirdNET-Pi/templates/birdnet_log.service" +sed -i "s|birdnet_log.sh|cat /proc/1/fd/1|g" "$HOME/BirdNET-Pi/templates/birdnet_log.service" # Make sure config is correctly formatted. echo "... caddyfile modifications" @@ -49,14 +49,14 @@ echo "... caddyfile modifications" caddy fmt --overwrite /etc/caddy/Caddyfile #Change port to leave 80 free for certificate requests sed -i "s|http://|http://:8081|g" /etc/caddy/Caddyfile -sed -i "s|http://|http://:8081|g" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh +sed -i "s|http://|http://:8081|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh #Remove default file that blocks 80 if [ -f /etc/caddy/Caddyfile.original ]; then rm /etc/caddy/Caddyfile.original; fi # Improve webui paths to facilitate ingress echo "... correcting webui paths" -sed -i "s|/stats|/stats/|g" "$HOME"/BattyBirdNET-Analyzer/homepage/views.php -sed -i "s|/log|/log/|g" "$HOME"/BattyBirdNET-Analyzer/homepage/views.php +sed -i "s|/stats|/stats/|g" "$HOME"/BirdNET-Pi/homepage/views.php +sed -i "s|/log|/log/|g" "$HOME"/BirdNET-Pi/homepage/views.php # If port 80 is enabled, make sure it is still 80 if [ -n "$(bashio::addon.port 80)" ] && [ "$(bashio::addon.port 80)" != 80 ]; then diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/91-nginx_ingress.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/91-nginx_ingress.sh index e2a6dc909..d2749a17b 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/91-nginx_ingress.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/91-nginx_ingress.sh @@ -27,11 +27,11 @@ sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf echo "... ensuring restricted area access" echo "${ingress_entry}" > /ingress_url -sed -i "/function is_authenticated/a if (strpos(\$_SERVER['HTTP_REFERER'], '/api/hassio_ingress') !== false && strpos(\$_SERVER['HTTP_REFERER'], trim(file_get_contents('/ingress_url'))) !== false) { \$ret = true; return \$ret; }" "$HOME"/BattyBirdNET-Analyzer/scripts/common.php +sed -i "/function is_authenticated/a if (strpos(\$_SERVER['HTTP_REFERER'], '/api/hassio_ingress') !== false && strpos(\$_SERVER['HTTP_REFERER'], trim(file_get_contents('/ingress_url'))) !== false) { \$ret = true; return \$ret; }" "$HOME"/BirdNET-Pi/scripts/common.php echo "... adapt Caddyfile for ingress" chmod +x /helpers/caddy_ingress.sh /./helpers/caddy_ingress.sh -sed -i "/sudo caddy fmt --overwrite/i /./helpers/caddy_ingress.sh" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh +sed -i "/sudo caddy fmt --overwrite/i /./helpers/caddy_ingress.sh" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh echo " " diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/92-ssl.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/92-ssl.sh index e4181a323..8b6b05c24 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/92-ssl.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/92-ssl.sh @@ -13,8 +13,8 @@ if bashio::config.true 'ssl'; then keyfile=$(bashio::config 'keyfile') sed -i "2a\ tls /ssl/${certfile} /ssl/${keyfile}" /etc/caddy/Caddyfile sed -i "s|http://:8081|https://:8081|g" /etc/caddy/Caddyfile - sed -i "s|http://:8081|https://:8081|g" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh - sed -i "/https:/a tls /ssl/${certfile} /ssl/${keyfile}" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh + sed -i "s|http://:8081|https://:8081|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh + sed -i "/https:/a tls /ssl/${certfile} /ssl/${keyfile}" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh fi echo " " diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/99-run.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/99-run.sh index 1071b5ae5..e3fc13402 100755 --- a/battybirdnet-pi/rootfs/etc/cont-init.d/99-run.sh +++ b/battybirdnet-pi/rootfs/etc/cont-init.d/99-run.sh @@ -35,10 +35,10 @@ chmod a+x /usr/bin/timedatectl # Correct language labels export "$(grep "^DATABASE_LANG" /config/birdnet.conf)" # Saving default of en -cp "$HOME"/BattyBirdNET-Analyzer/model/labels.txt "$HOME"/BattyBirdNET-Analyzer/model/labels.bak +cp "$HOME"/BirdNET-Pi/model/labels.txt "$HOME"/BirdNET-Pi/model/labels.bak # Adapt to new language echo "... adapting labels according to birdnet.conf file to $DATABASE_LANG" -/."$HOME"/BattyBirdNET-Analyzer/scripts/install_language_label_nm.sh -l "$DATABASE_LANG" +/."$HOME"/BirdNET-Pi/scripts/install_language_label_nm.sh -l "$DATABASE_LANG" echo "... starting cron" systemctl start cron @@ -53,9 +53,9 @@ service dbus start # Starting services echo "" -bashio::log.info "Starting BattyBirdNET-Analyzer services" -chmod +x "$HOME"/BattyBirdNET-Analyzer/scripts/restart_services.sh -"$HOME"/BattyBirdNET-Analyzer/scripts/restart_services.sh +bashio::log.info "Starting BirdNET-Pi services" +chmod +x "$HOME"/BirdNET-Pi/scripts/restart_services.sh +"$HOME"/BirdNET-Pi/scripts/restart_services.sh if bashio::config.true LIVESTREAM_BOOT_ENABLED; then echo "... starting livestream" @@ -67,6 +67,6 @@ fi # Correct the phpsysinfo for the correct gotty service gottyservice="$(pgrep -l "gotty" | awk '{print $NF}' | head -n 1)" echo "... using $gottyservice in phpsysinfo" -sed -i "s/,gotty,/,${gottyservice:-gotty},/g" "$HOME"/BattyBirdNET-Analyzer/templates/phpsysinfo.ini +sed -i "s/,gotty,/,${gottyservice:-gotty},/g" "$HOME"/BirdNET-Pi/templates/phpsysinfo.ini echo " " diff --git a/battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.py b/battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.py index c184ce2ba..b33e66d72 100644 --- a/battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.py +++ b/battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.py @@ -11,7 +11,7 @@ import requests import sys import os -sys.path.append('/home/pi/BattyBirdNET-Analyzer/scripts/utils') +sys.path.append('/home/pi/BirdNET-Pi/scripts/utils') from helpers import get_settings # Setup basic configuration for logging @@ -39,7 +39,7 @@ def on_connect(client, userdata, flags, rc ): #, properties=None): log.error(f"Failed to connect, return code {rc}\n") def get_bird_code(scientific_name): - with open('/home/pi/BattyBirdNET-Analyzer/scripts/ebird.php', 'r') as file: + with open('/home/pi/BirdNET-Pi/scripts/ebird.php', 'r') as file: data = file.read() array_str = re.search(r'\$ebirds = \[(.*?)\];', data, re.DOTALL).group(1) diff --git a/battybirdnet-pi/rootfs/helpers/spectral_analysis.sh b/battybirdnet-pi/rootfs/helpers/spectral_analysis.sh index 9d4604a1d..fb6378af1 100755 --- a/battybirdnet-pi/rootfs/helpers/spectral_analysis.sh +++ b/battybirdnet-pi/rootfs/helpers/spectral_analysis.sh @@ -59,4 +59,4 @@ else fi # Create the spectral analysis -"$PYTHON_VIRTUAL_ENV" "$HOME"/BattyBirdNET-Analyzer/scripts/spectral_analysis.py +"$PYTHON_VIRTUAL_ENV" "$HOME"/BirdNET-Pi/scripts/spectral_analysis.py