Merge pull request #73 from mcguirepr89/bullseye

Bullseye
This commit is contained in:
Patrick McGuire
2021-11-10 15:41:02 -05:00
committed by GitHub
14 changed files with 252 additions and 287 deletions
+74 -86
View File
@@ -51,7 +51,7 @@ stage_2() {
fi fi
source ${my_dir}/Birders_Guide_Installer_Configuration.txt source ${my_dir}/Birders_Guide_Installer_Configuration.txt
if [ -z ${LATITUDE} ] || [ -z ${LONGITUDE} ] || [ -z ${CADDY_PWD} ] || [ -z ${ICE_PWD} ] || [ -z ${DB_PWD} ] || [ -z ${DB_ROOT_PWD} ];then if [ -z ${LATITUDE} ] || [ -z ${LONGITUDE} ] || [ -z ${CADDY_PWD} ] || [ -z ${ICE_PWD} ] || [ -z ${DB_PWD} ];then
echo echo
echo "Follow the instructions to fill out the LATITUDE and LONGITUDE variables echo "Follow the instructions to fill out the LATITUDE and LONGITUDE variables
and set the passwords for the live audio stream. Save the file after editing and set the passwords for the live audio stream. Save the file after editing
@@ -87,93 +87,75 @@ The installation has finished. Press Enter to close this window."
install_birdnet_config() { install_birdnet_config() {
cat << EOF > ${my_dir}/birdnet.conf cat << EOF > ${my_dir}/birdnet.conf
################################################################################ ################################################################################
# Configuration settings for the BirdNET-Pi # # Configuration settings for BirdNET-Pi #
################################################################################ ################################################################################
#___________The four variables below are the only that are required.___________# ############ CHANGE THE LATITUDE AND LONGITUDE TO STATIC VALUES ################
## BIRDNET_USER should be the non-root user systemd should use to execute each
## service.
BIRDNET_USER=pi ## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at
## maps.google.com.
## Example: these coordinates would indicate the Eiffel Tower in Paris, France.
## LATITUDE=48.858
## LONGITUDE=2.294
## These are input as shell substitutions so that this will work out of the box.
## It guesses your latitude and longitude based off of your network information.
## THESE SHOULD BE CHANGED TO STATIC NUMBERS!!!!
LATITUDE=${LATITUDE}
LONGITUDE=${LONGITUDE}
## RECS_DIR is the location birdnet_analysis.service will look for the data-set ## RECS_DIR is the location birdnet_analysis.service will look for the data-set
## it needs to analyze. Be sure this directory is readable and writable for ## it needs to analyze. Be sure this directory is readable and writable for
## the BIRDNET_USER. If you are going to be accessing a remote data-set, you ## the BIRDNET_USER. If you are going to be accessing a remote data-set, you
## still need to set this, as this will be where the remote directory gets ## still need to set this, as this will be where the remote directory gets
## mounted locally. ## mounted locally.
RECS_DIR=${HOME}/BirdSongs RECS_DIR=/home/pi/BirdSongs
## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at #----------------------- Web Interface User Password ------------------------#
## maps.google.com. Only go to the thousanths place for these variables #____________________The variable below sets the 'birdnet'_____________________#
## Example: these coordinates would indicate the Eiffel Tower in Paris, France. #___________________user password for the live audio stream,___________________#
## LATITUDE=48.858 #_________________web tools, system info, and processed files__________________#
## LONGITUDE=2.294
LATITUDE=${LATITUDE} ## CADDY_PWD is the plaintext password (that will be hashed) and used to access
LONGITUDE=${LONGITUDE} ## certain parts of the web interface
################################################################################ CADDY_PWD=changeme
#------------------------------ Extraction Service ---------------------------#
# Keep this EMPTY if you do not want this device to perform the extractions # #------------------------- MariaDB User Passwords ---------------------------#
#_____________The variable below sets the password for the_____________________#
#_______________________'birder' user on the MariaDB___________________________#
## DO_EXTRACTIONS is simply a setting for enabling the extraction.service. ## DB_PWD is for the 'birder' user
## Set this to Y or y to enable extractions. DB_PWD=changeme
DO_EXTRACTIONS=y #------------------------- Live Audio Stream --------------------------------#
#_____________The variable below configures/enables the live___________________#
#_____________________________audio stream.____________________________________#
################################################################################
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
# Keep this EMPTY if you do not want this device to perform the recording. # ## ICE_PWD is the password that icecast2 will use to authenticate ffmpeg as a
## trusted source for the stream. You will never need to enter this manually
## anywhere other than here.
## DO_RECORDING is simply a setting for enabling the 24/7 ICE_PWD=changeme
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=y
################################################################################
#----------------------- Web-hosting/Caddy File-server -----------------------# #----------------------- Web-hosting/Caddy File-server -----------------------#
#________The four variables below can be set to enable internet access_________# #________The four variables below can be set to enable internet access_________#
#____________to your data,(e.g., extractions, raw data, live___________________# #____________to your data,(e.g., extractions, raw data, live___________________#
#______________audio stream, BirdNET.selection.txt files)______________________# #______________audio stream, BirdNET.selection.txt files)______________________#
# Leave these EMPTY if you do not want to enable web access #
## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream ## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream
## will be web-hosted. If you do not own a domain, or would just prefer to keep ## will be web-hosted. If you do not own a domain, or would just prefer to keep
## the BirdNET-Pi on your local network, keep this EMPTY. ## the BirdNET-Pi on your local network, keep this EMPTY.
BIRDNETPI_URL=${BIRDNETPI_URL} BIRDNETPI_URL=${BIRDNETPI_URL}
EXTRACTIONLOG_URL=${EXTRACTIONLOG_URL} EXTRACTIONLOG_URL=${EXTRACTIONLOG_URL}
BIRDNETLOG_URL=${BIRDNETLOG_URL} BIRDNETLOG_URL=${BIRDNETLOG_URL}
## CADDY_PWD is the plaintext password (that will be hashed) and used to access
## the "Processed" directory and live audio stream. This MUST be set if you
## choose to enable this feature.
CADDY_PWD=${CADDY_PWD}
################################################################################
#------------------------- Live Audio Stream --------------------------------#
#_____________The variable below configures/enables the live___________________#
#_____________________________audio stream.____________________________________#
# Keep this EMPTY if you do not wish to enable the live stream #
# or if this device is not doing the recording #
## ICE_PWD is the password that icecast2 will use to authenticate ffmpeg as a
## trusted source for the stream. You will never need to enter this manually
## anywhere other than here.
ICE_PWD=${ICE_PWD}
################################################################################
#------------------- Mobile Notifications via Pushed.co ---------------------# #------------------- Mobile Notifications via Pushed.co ---------------------#
#____________The two variables below enable mobile notifications_______________# #____________The two variables below enable mobile notifications_______________#
#_____________See https://pushed.co/quick-start-guide to get___________________# #_____________See https://pushed.co/quick-start-guide to get___________________#
@@ -187,6 +169,9 @@ PUSHED_APP_KEY=${PUSHED_APP_KEY}
PUSHED_APP_SECRET=${PUSHED_APP_SECRET} PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
################################################################################ ################################################################################
#-------------------------------- Defaults ----------------------------------#
################################################################################
#------------------------------- NoMachine ----------------------------------# #------------------------------- NoMachine ----------------------------------#
#_____________The variable below can be set include NoMachine__________________# #_____________The variable below can be set include NoMachine__________________#
#_________________remote desktop software to be installed._____________________# #_________________remote desktop software to be installed._____________________#
@@ -201,14 +186,27 @@ PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
INSTALL_NOMACHINE=y INSTALL_NOMACHINE=y
################################################################################ #
#-------------------------------- Defaults ----------------------------------# #------------------------------ Extraction Service ---------------------------#
#______The seven variables below are default settings that you (probably)______#
#__________________don't need to change at all, but can._______________________#
## REC_CARD is the sound card you would want the birdnet_recording.service to ## DO_EXTRACTIONS is simply a setting for enabling the extraction.service.
## use. This setting is irrelevant if you are not planning on doing data ## Set this to Y or y to enable extractions.
## collection via recording on this machine. The command substitution below
DO_EXTRACTIONS=y
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
## DO_RECORDING is simply a setting for enabling the 24/7
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=y
## REC_CARD is the sound card you would want the birdnet_recording.service to
## use. This setting is irrelevant if you are not planning on doing data
## collection via recording on this machine. The command substitution below
## looks for a USB microphone's dsnoop alsa device. The dsnoop device lets ## looks for a USB microphone's dsnoop alsa device. The dsnoop device lets
## birdnet_recording.service and livestream.service share the raw audio stream ## birdnet_recording.service and livestream.service share the raw audio stream
## from the microphone. If you would like to use a different microphone than ## from the microphone. If you would like to use a different microphone than
@@ -218,8 +216,8 @@ INSTALL_NOMACHINE=y
REC_CARD=default REC_CARD=default
## PROCESSED is the directory where the formerly 'Analyzed' files are moved ## PROCESSED is the directory where the formerly 'Analyzed' files are moved
## after extractions have been made from them. This includes both WAVE and ## after extractions have been made from them. This includes both WAVE and
## BirdNET.selection.txt files. ## BirdNET.selection.txt files.
PROCESSED=${RECS_DIR}/Processed PROCESSED=${RECS_DIR}/Processed
@@ -231,7 +229,7 @@ EXTRACTED=${RECS_DIR}/Extracted
## IDFILE is the file that keeps a complete list of every spececies that ## IDFILE is the file that keeps a complete list of every spececies that
## BirdNET has identified from your data-set. It is persistent across ## BirdNET has identified from your data-set. It is persistent across
## data-sets, so would need to be whiped clean through deleting or renaming ## data-sets, so would need to be whiped clean through deleting or renaming
## it. A backup is automatically made from this variable each time it is ## it. A backup is automatically made from this variable each time it is
## updated (structure: ${IDFILE}.bak), and would also need to be removed ## updated (structure: ${IDFILE}.bak), and would also need to be removed
## or renamed to start a new file between data-sets. Alternately, you can ## or renamed to start a new file between data-sets. Alternately, you can
## change this variable between data-sets to preserve records of disparate ## change this variable between data-sets to preserve records of disparate
@@ -244,7 +242,7 @@ IDFILE=${HOME}/BirdNET-Pi/IdentifiedSoFar.txt
OVERLAP=0.0 OVERLAP=0.0
## CONFIDENCE is the minimum confidence level from 0.0-1.0 BirdNET's analysis ## CONFIDENCE is the minimum confidence level from 0.0-1.0 BirdNET's analysis
## should reach before creating an entry in the BirdNET.selection.txt file. ## should reach before creating an entry in the BirdNET.selection.txt file.
## Don't set this to 1.0 or you won't have any results. ## Don't set this to 1.0 or you won't have any results.
@@ -254,42 +252,32 @@ CONFIDENCE=0.7
SENSITIVITY=1.25 SENSITIVITY=1.25
################################################################################
#------------------------------ Auto-Generated ------------------------------#
#_____________________The variables below are auto-generated___________________#
#______________________________during installation_____________________________#
## CHANNELS holds the variabel that corresponds to the number of channels the ## CHANNELS holds the variabel that corresponds to the number of channels the
## sound card supports. ## sound card supports.
CHANNELS=2 CHANNELS=2
# Don't touch the variables below
## SYSTEMD_MOUNT is created from the RECS_DIR variable to comply with systemd
## mount naming requirements.
SYSTEMD_MOUNT=$(echo ${RECS_DIR#/} | tr / -).mount
## VENV is the virtual environment where the the BirdNET python build is found, ## VENV is the virtual environment where the the BirdNET python build is found,
## i.e, VENV is the virtual environment miniforge built for BirdNET. ## i.e, VENV is the virtual environment miniforge built for BirdNET.
VENV=${my_dir}/birdnet VENV=/home/pi/BirdNET-Pi/birdnet
################################################################################
#---------------------------------- Testing -----------------------------------#
#_____________These variables are for testing. Please do not touch_____________#
#_______________them if you are not testing these features.____________________#
## RECORDING_LENGTH sets the length of the recording that BirdNET-Lite will analyze.
RECORDING_LENGTH= RECORDING_LENGTH=
## EXTRACTION_LENGTH sets the length of the audio extractions that will be made
## from each BirdNET-Lite detection.
EXTRACTION_LENGTH= EXTRACTION_LENGTH=
## BIRDNET_USER should be the non-root user systemd should use to execute each
## service.
BIRDNET_USER=pi
## These are just for debugging
LAST_RUN= LAST_RUN=
THIS_RUN= THIS_RUN=
DB_PWD=${DB_PWD}
DB_ROOT_PWD=${DB_ROOT_PWD}
EOF EOF
[ -d /etc/birdnet ] || sudo mkdir /etc/birdnet [ -d /etc/birdnet ] || sudo mkdir /etc/birdnet
sudo ln -sf ${my_dir}/birdnet.conf /etc/birdnet/birdnet.conf sudo ln -sf ${my_dir}/birdnet.conf /etc/birdnet/birdnet.conf
+2 -5
View File
@@ -31,13 +31,10 @@ LONGITUDE=
CADDY_PWD= CADDY_PWD=
ICE_PWD= ICE_PWD=
# 1. DB_PWD is the password that the system will use to access the database. Set this to # DB_PWD is the password that the system will use to access the database. Set this to
# anything you want. # anything you want.
# 2. DB_ROOT_PWD is the password that the system will use to secure the database's root
# account. Set this to anything you want.
DB_PWD= DB_PWD=
DB_ROOT_PWD=
# This section can be left alone. If you setup a Pushed.co # This section can be left alone. If you setup a Pushed.co
# mobile application, you can enter the App secret and secret # mobile application, you can enter the App secret and secret
+2 -4
View File
@@ -36,13 +36,11 @@ RECS_DIR=/home/pi/BirdSongs
CADDY_PWD=changeme CADDY_PWD=changeme
#------------------------- MariaDB User Passwords ---------------------------# #------------------------- MariaDB User Passwords ---------------------------#
#_____________The variables below set the 'birder' and 'root'__________________# #_____________The variable below sets the password for the_____________________#
#_______________________user passwords for the MariaDB_________________________# #_______________________'birder' user on the MariaDB___________________________#
## DB_PWD is for the 'birder' user ## DB_PWD is for the 'birder' user
DB_PWD=changeme DB_PWD=changeme
## DB_ROOT_PWD is for the 'root' user
DB_ROOT_PWD=changeme
#------------------------- Live Audio Stream --------------------------------# #------------------------- Live Audio Stream --------------------------------#
#_____________The variable below configures/enables the live___________________# #_____________The variable below configures/enables the live___________________#
+4 -76
View File
@@ -485,17 +485,6 @@ do_reget_birdnetpi_urls() {
fi fi
} }
do_reget_db_root_pwd() {
db_root_pwd=$(whiptail --inputbox "Please set the password the 'root' user will use to access the database." \
19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/rewrite_config.sh
if [ $? -eq 0 ];then
return 0
ASK_TO_REBOOT=2
else
return 1
fi
}
do_reget_db_pwd() { do_reget_db_pwd() {
db_pwd=$(whiptail --inputbox "Please set the password the 'birder' user will use to access the database." \ db_pwd=$(whiptail --inputbox "Please set the password the 'birder' user will use to access the database." \
19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/rewrite_config.sh 19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/rewrite_config.sh
@@ -614,17 +603,6 @@ do_get_birdnetpi_url() {
fi fi
} }
do_get_db_root_pwd() {
db_root_pwd=$(whiptail --inputbox "Please set the password the 'root' user will use to access the database." \
19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/write_config.sh
if [ $? -eq 0 ];then
return 0
ASK_TO_REBOOT=2
else
return 1
fi
}
do_get_db_pwd() { do_get_db_pwd() {
db_pwd=$(whiptail --inputbox "Please set the password the 'birder' user will use to access the database." \ db_pwd=$(whiptail --inputbox "Please set the password the 'birder' user will use to access the database." \
19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/write_config.sh 19 70 3>&1 1>&2 2>&3) ${birdnetpi_dir}/scripts/write_config.sh
@@ -759,56 +737,6 @@ do_advanced_reconfig_menu() {
done done
} }
do_reget_db_pwds() {
MENU=8
while [ $MENU -eq 8 ];do
if is_pi ; then
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --menu "Reset Datbase Passwords" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
"'birder' " "Set the database password for the 'birder' user" \
"'root' " "Set the database password for the 'root' user" \
3>&1 1>&2 2>&3)
else
exit
fi
RET=$?
if [ $RET -eq 1 ]; then
return 0
MENU=0
elif [ $RET -eq 0 ]; then
case "$FUN" in
*bird*) do_reget_db_pwd;;
*root*) do_reget_db_root_pwd;;
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
fi
done
}
do_get_db_pwds() {
MENU=7
while [ $MENU -eq 7 ];do
if is_pi ; then
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --menu "Set Datbase Passwords" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
"'birder' " "Set the database password for the 'birder' user" \
"'root' " "Set the database password for the 'root' user" \
3>&1 1>&2 2>&3)
else
exit
fi
RET=$?
if [ $RET -eq 1 ]; then
return 0
MENU=0
elif [ $RET -eq 0 ]; then
case "$FUN" in
*bird*) do_get_db_pwd;;
*root*) do_get_db_root_pwd;;
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
fi
done
}
do_interface_menu() { do_interface_menu() {
MENU=6 MENU=6
while [ $MENU -eq 6 ];do while [ $MENU -eq 6 ];do
@@ -911,7 +839,7 @@ do_reconfig_birdnet_menu() {
"Latitude " "Set the latitude your system should use" \ "Latitude " "Set the latitude your system should use" \
"Longitude" "Set the longitude your system should use" \ "Longitude" "Set the longitude your system should use" \
"Caddy Password" "Set the web interface password" \ "Caddy Password" "Set the web interface password" \
"Database Passwords" "Set the passwords the MariaDB will use" \ "Database Password" "Set the password BirdNET-Pi will use to access the DB" \
"Advanced Settings" "Sensitivity, Overlap, Confidence, URLs" \ "Advanced Settings" "Sensitivity, Overlap, Confidence, URLs" \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
else else
@@ -926,7 +854,7 @@ do_reconfig_birdnet_menu() {
Lat*) do_reget_lat;; Lat*) do_reget_lat;;
Lon*) do_reget_lon;; Lon*) do_reget_lon;;
Cad*) do_reget_caddy_pwd;; Cad*) do_reget_caddy_pwd;;
Data*) do_reget_db_pwds;; Data*) do_reget_db_pwd;;
Advanced*) do_advanced_reconfig_menu;; Advanced*) do_advanced_reconfig_menu;;
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;; *) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1 esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
@@ -943,7 +871,7 @@ do_config_birdnet_menu() {
"Longitude" "Set the longitude your system should use" \ "Longitude" "Set the longitude your system should use" \
"Caddy Password" "Set the web interface password" \ "Caddy Password" "Set the web interface password" \
"IceCast2 Password" "Set the IceCast2 password" \ "IceCast2 Password" "Set the IceCast2 password" \
"Database Passwords" "Set the passwords the MariaDB will use" \ "Database Password" "Set the password BirdNET-Pi will use to access the DB" \
"Set Custom URLS" "Designate custom URLs for the web services if you've set that up" \ "Set Custom URLS" "Designate custom URLs for the web services if you've set that up" \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
else else
@@ -959,7 +887,7 @@ do_config_birdnet_menu() {
Lon*) do_get_lon;; Lon*) do_get_lon;;
Cad*) do_get_caddy_pwd;; Cad*) do_get_caddy_pwd;;
Ice*) do_get_ice_pwd;; Ice*) do_get_ice_pwd;;
Data*) do_get_db_pwds;; Data*) do_get_db_pwd;;
Set*) do_get_birdnetpi_url; do_get_birdnetlog_url; do_get_extractionlog_url;; Set*) do_get_birdnetpi_url; do_get_birdnetlog_url; do_get_extractionlog_url;;
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;; *) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1 esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
@@ -10,8 +10,8 @@ source /etc/birdnet/birdnet.conf
mysql_secure_installation << EOF mysql_secure_installation << EOF
y y
${DB_ROOT_PWD} n
${DB_ROOT_PWD} y
y y
y y
y y
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env bash
# This script performs the mysql_secure_installation
# Creates the birds database
# Creates the detections table
# Creates the birder user and grants them appropriate
# permissions
# If using this script to re-initialize (DROP then CREATE)
# the DB, be sure to run this as root or with sudo
source /etc/birdnet/birdnet.conf
DB_ROOT_PWD=staggerwontonpurporting
mysql_secure_installation << EOF
y
${DB_ROOT_PWD}
${DB_ROOT_PWD}
y
y
y
EOF
mysql << EOF
DROP DATABASE IF EXISTS birds;
CREATE DATABASE IF NOT EXISTS birds;
USE birds;
CREATE TABLE IF NOT EXISTS detections (
Date DATE,
Time TIME,
Sci_Name VARCHAR(100) NOT NULL,
Com_Name VARCHAR(100) NOT NULL,
Confidence FLOAT,
Lat FLOAT,
Lon FLOAT,
Cutoff FLOAT,
Week INT,
Sens FLOAT,
Overlap FLOAT);
GRANT ALL ON birds.* TO 'birder'@'localhost' IDENTIFIED BY '${DB_PWD}' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
EOF
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/analyze.py
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/scripts/viewdb.php
+86 -102
View File
@@ -103,8 +103,6 @@ get_DB_PWDS() {
if [ ! -z ${DB_PWD} ];then if [ ! -z ${DB_PWD} ];then
read -p "Please set a password for your database: " DB_PWD read -p "Please set a password for your database: " DB_PWD
echo echo
read -p "Please set a root password for the database: " DB_ROOT_PWD
echo
fi fi
} }
@@ -174,87 +172,53 @@ configure() {
install_birdnet_conf() { install_birdnet_conf() {
cat << EOF > $(dirname ${my_dir})/birdnet.conf cat << EOF > $(dirname ${my_dir})/birdnet.conf
################################################################################ ################################################################################
# Configuration settings for BirdNET as a service # # Configuration settings for BirdNET-Pi #
################################################################################ ################################################################################
INSTALL_DATE="$(date "+%D")"
#___________The four variables below are the only that are required.___________#
## BIRDNET_USER should be the non-root user systemd should use to execute each ############ CHANGE THE LATITUDE AND LONGITUDE TO STATIC VALUES ################
## service.
BIRDNET_USER=${USER}
## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at
## maps.google.com.
## Example: these coordinates would indicate the Eiffel Tower in Paris, France.
## LATITUDE=48.858
## LONGITUDE=2.294
## These are input as shell substitutions so that this will work out of the box.
## It guesses your latitude and longitude based off of your network information.
## THESE SHOULD BE CHANGED TO STATIC NUMBERS!!!!
LATITUDE=${LATITUDE}
LONGITUDE=${LONGITUDE}
## RECS_DIR is the location birdnet_analysis.service will look for the data-set ## RECS_DIR is the location birdnet_analysis.service will look for the data-set
## it needs to analyze. Be sure this directory is readable and writable for ## it needs to analyze. Be sure this directory is readable and writable for
## the BIRDNET_USER. If you are going to be accessing a remote data-set, you ## the BIRDNET_USER. If you are going to be accessing a remote data-set, you
## still need to set this, as this will be where the remote directory gets ## still need to set this, as this will be where the remote directory gets
## mounted locally. See REMOTE_RECS_DIR below for mounting remote data-sets. ## mounted locally.
RECS_DIR=${RECS_DIR} RECS_DIR=${RECS_DIR}
## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at #----------------------- Web Interface User Password ------------------------#
## maps.google.com. Only go to the thousanths place for these variables #____________________The variable below sets the 'birdnet'_____________________#
## Example: these coordinates would indicate the Eiffel Tower in Paris, France. #___________________user password for the live audio stream,___________________#
## LATITUDE=48.858 #_________________web tools, system info, and processed files__________________#
## LONGITUDE=2.294
LATITUDE=${LATITUDE}
LONGITUDE=${LONGITUDE}
################################################################################
#------------------------------ Extraction Service ---------------------------#
# Keep this EMPTY if you do not want this device to perform the extractions #
## DO_EXTRACTIONS is simply a setting for enabling the extraction.service.
## Set this to Y or y to enable extractions.
DO_EXTRACTIONS=${DO_EXTRACTIONS}
################################################################################
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
# Keep this EMPTY if you do not want this device to perform the recording. #
## DO_RECORDING is simply a setting for enabling the 24/7
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=${DO_RECORDING}
################################################################################
#----------------------- Web-hosting/Caddy File-server -----------------------#
#________The four variables below can be set to enable internet access_________#
#____________to your data,(e.g., extractions, raw data, live___________________#
#______________audio stream, BirdNET.selection.txt files)______________________#
# Leave these EMPTY if you do not want to enable web access #
## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream
## will be web-hosted. If you do not own a domain, or would just prefer to keep
## BirdNET-Pi on your local network, you can set this to http://localhost.
## Setting this (even to http://localhost) will also allow you to enable the
## GoTTY web logging features below.
BIRDNETPI_URL=${BIRDNETPI_URL}
EXTRACTIONLOG_URL=${EXTRACTIONLOG_URL}
BIRDNETLOG_URL=${BIRDNETLOG_URL}
## CADDY_PWD is the plaintext password (that will be hashed) and used to access ## CADDY_PWD is the plaintext password (that will be hashed) and used to access
## the "Processed" directory and live audio stream. This MUST be set if you ## certain parts of the web interface
## choose to enable this feature.
CADDY_PWD=${CADDY_PWD} CADDY_PWD=${CADDY_PWD}
################################################################################ #------------------------- MariaDB User Passwords ---------------------------#
#_____________The variable below sets the password for the_____________________#
#_______________________'birder' user on the MariaDB___________________________#
## DB_PWD is for the 'birder' user
DB_PWD=${DB_PWD}
#------------------------- Live Audio Stream --------------------------------# #------------------------- Live Audio Stream --------------------------------#
#_____________The variable below configures/enables the live___________________# #_____________The variable below configures/enables the live___________________#
#_____________________________audio stream.____________________________________# #_____________________________audio stream.____________________________________#
# Keep this EMPTY if you do not wish to enable the live stream #
# or if this device is not doing the recording #
## ICE_PWD is the password that icecast2 will use to authenticate ffmpeg as a ## ICE_PWD is the password that icecast2 will use to authenticate ffmpeg as a
## trusted source for the stream. You will never need to enter this manually ## trusted source for the stream. You will never need to enter this manually
@@ -262,7 +226,21 @@ CADDY_PWD=${CADDY_PWD}
ICE_PWD=${ICE_PWD} ICE_PWD=${ICE_PWD}
################################################################################ #----------------------- Web-hosting/Caddy File-server -----------------------#
#________The four variables below can be set to enable internet access_________#
#____________to your data,(e.g., extractions, raw data, live___________________#
#______________audio stream, BirdNET.selection.txt files)______________________#
## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream
## will be web-hosted. If you do not own a domain, or would just prefer to keep
## the BirdNET-Pi on your local network, keep this EMPTY.
BIRDNETPI_URL=${BIRDNETPI_URL}
EXTRACTIONLOG_URL${EXTRACTIONLOG_URL}
BIRDNETLOG_URL=${BIRDNETLOG_URL}
#------------------- Mobile Notifications via Pushed.co ---------------------# #------------------- Mobile Notifications via Pushed.co ---------------------#
#____________The two variables below enable mobile notifications_______________# #____________The two variables below enable mobile notifications_______________#
#_____________See https://pushed.co/quick-start-guide to get___________________# #_____________See https://pushed.co/quick-start-guide to get___________________#
@@ -276,6 +254,9 @@ PUSHED_APP_KEY=${PUSHED_APP_KEY}
PUSHED_APP_SECRET=${PUSHED_APP_SECRET} PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
################################################################################ ################################################################################
#-------------------------------- Defaults ----------------------------------#
################################################################################
#------------------------------- NoMachine ----------------------------------# #------------------------------- NoMachine ----------------------------------#
#_____________The variable below can be set include NoMachine__________________# #_____________The variable below can be set include NoMachine__________________#
#_________________remote desktop software to be installed._____________________# #_________________remote desktop software to be installed._____________________#
@@ -286,14 +267,27 @@ PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
## NoMachine alongside the BirdNET-Pi for remote desktop access. This in- ## NoMachine alongside the BirdNET-Pi for remote desktop access. This in-
## staller assumes personal use. Please reference the LICENSE file included ## staller assumes personal use. Please reference the LICENSE file included
## in this repository for more information. ## in this repository for more information.
## Set this to Y or y to install NoMachine alongside the BirdNET-Pi ## Set this to Y or y to install NoMachine alongside the BirdNET-Lite
INSTALL_NOMACHINE=${INSTALL_NOMACHINE} INSTALL_NOMACHINE=${INSTALL_NOMACHINE}
################################################################################ #
#-------------------------------- Defaults ----------------------------------# #------------------------------ Extraction Service ---------------------------#
#________The seven variables below are default settings that you (probably)____#
#__________________don't need to change at all, but can._______________________# ## DO_EXTRACTIONS is simply a setting for enabling the extraction.service.
## Set this to Y or y to enable extractions.
DO_EXTRACTIONS=${DO_EXTRACTIONS}
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
## DO_RECORDING is simply a setting for enabling the 24/7
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=${DO_RECORDING}
## REC_CARD is the sound card you would want the birdnet_recording.service to ## REC_CARD is the sound card you would want the birdnet_recording.service to
## use. This setting is irrelevant if you are not planning on doing data ## use. This setting is irrelevant if you are not planning on doing data
@@ -311,11 +305,11 @@ REC_CARD=${REC_CARD}
## after extractions have been made from them. This includes both WAVE and ## after extractions have been made from them. This includes both WAVE and
## BirdNET.selection.txt files. ## BirdNET.selection.txt files.
PROCESSED=${RECS_DIR}/Processed PROCESSED=${PROCESSED}
## EXTRACTED is the directory where the extracted audio selections are moved. ## EXTRACTED is the directory where the extracted audio selections are moved.
EXTRACTED=${RECS_DIR}/Extracted EXTRACTED=${EXTRACTED}
## IDFILE is the file that keeps a complete list of every spececies that ## IDFILE is the file that keeps a complete list of every spececies that
## BirdNET has identified from your data-set. It is persistent across ## BirdNET has identified from your data-set. It is persistent across
@@ -326,71 +320,61 @@ EXTRACTED=${RECS_DIR}/Extracted
## change this variable between data-sets to preserve records of disparate ## change this variable between data-sets to preserve records of disparate
## data-sets according to name. ## data-sets according to name.
IDFILE=${HOME}/BirdNET-Pi/IdentifiedSoFar.txt IDFILE=${IDFILE}
## OVERLAP is the value in seconds which BirdNET should use when analyzing ## OVERLAP is the value in seconds which BirdNET should use when analyzing
## the data. The values must be between 0.0-2.9. ## the data. The values must be between 0.0-2.9.
OVERLAP=0.0 OVERLAP=${OVERLAP}
## CONFIDENCE is the minimum confidence level from 0.0-1.0 BirdNET's analysis ## CONFIDENCE is the minimum confidence level from 0.0-1.0 BirdNET's analysis
## should reach before creating an entry in the BirdNET.selection.txt file. ## should reach before creating an entry in the BirdNET.selection.txt file.
## Don't set this to 1.0 or you won't have any results. ## Don't set this to 1.0 or you won't have any results.
CONFIDENCE=0.7 CONFIDENCE=${CONFIDENCE}
## SENSITIVITY is the detection sensitivity from 0.5-1.5. ## SENSITIVITY is the detection sensitivity from 0.5-1.5.
SENSITIVITY=1.25 SENSITIVITY=${SENSITIVITY}
################################################################################
#------------------------------ Auto-Generated ------------------------------#
#_____________________The variables below are auto-generated___________________#
#______________________________during installation_____________________________#
## CHANNELS holds the variabel that corresponds to the number of channels the ## CHANNELS holds the variabel that corresponds to the number of channels the
## sound card supports. ## sound card supports.
CHANNELS=${CHANNELS} CHANNELS=${CHANNELS}
# Don't touch the variables below
## SYSTEMD_MOUNT is created from the RECS_DIR variable to comply with systemd
## mount naming requirements.
SYSTEMD_MOUNT=$(echo ${RECS_DIR#/} | tr / -).mount
## VENV is the virtual environment where the the BirdNET python build is found, ## VENV is the virtual environment where the the BirdNET python build is found,
## i.e, VENV is the virtual environment miniforge built for BirdNET. ## i.e, VENV is the virtual environment miniforge built for BirdNET.
VENV=$(dirname ${my_dir})/birdnet VENV=/home/pi/BirdNET-Pi/birdnet
################################################################################ ## RECORDING_LENGTH sets the length of the recording that BirdNET-Lite will analyze.
#---------------------------------- Testing -----------------------------------# RECORDING_LENGTH=${RECORDING_LENGTH}
#_____________These variables are for testing. Please don't touch______________#
#_______________them if you are not testing these features.____________________#
## EXTRACTION_LENGTH sets the length of the audio extractions that will be made
## from each BirdNET-Lite detection.
EXTRACTION_LENGTH=${EXTRACTION_LENGTH}
RECORDING_LENGTH= ## BIRDNET_USER should be the non-root user systemd should use to execute each
## service.
EXTRACTION_LENGTH= BIRDNET_USER=pi
DB_PWD=${DB_PWD} ## These are just for debugging
DB_ROOT_PWD=${DB_ROOT_PWD} LAST_RUN=${LAST_RUN}
THIS_RUN=${THIS_RUN}
LAST_RUN=$(dirname ${my_dir})/lastrun.txt
THIS_RUN=$(dirname ${my_dir})/thisrun.txt
EOF EOF
[ -d /etc/birdnet ] || sudo mkdir /etc/birdnet
sudo ln -sf $(dirname ${my_dir})/birdnet.conf /etc/birdnet/birdnet.conf
} }
# Checks for a birdnet.conf file in the BirdNET-Pi directory for a # Checks for a birdnet.conf file in the BirdNET-Pi directory for a
# non-interactive installation. Otherwise,the installation is interactive. # non-interactive installation. Otherwise,the installation is interactive.
if [ -f ${BIRDNET_CONF} ];then if [ -f ${BIRDNET_CONF} ];then
source ${BIRDNET_CONF} source ${BIRDNET_CONF}
install_birdnet_conf #install_birdnet_conf
[ -d /etc/birdnet ] || sudo mkdir /etc/birdnet
sudo ln -sf $(dirname ${my_dir})/birdnet.conf /etc/birdnet/birdnet.conf
else else
configure configure
install_birdnet_conf install_birdnet_conf
[ -d /etc/birdnet ] || sudo mkdir /etc/birdnet
sudo ln -sf $(dirname ${my_dir})/birdnet.conf /etc/birdnet/birdnet.conf
fi fi
+6 -1
View File
@@ -34,7 +34,12 @@ install_mariadb() {
echo "MariaDB Installed" echo "MariaDB Installed"
fi fi
echo "Initializing the database" echo "Initializing the database"
${my_dir}/createdb.sh source /etc/os-release
if [[ "${VERSION_CODENAME}" == "buster" ]];then
${my_dir}/createdb_buster.sh
elif [[ "${VERSION_CODENAME}" == "bullseye" ]];then
${my_dir}/createdb_bullseye.sh
fi
} }
install_birdnet_analysis() { install_birdnet_analysis() {
-5
View File
@@ -24,11 +24,6 @@ sed -i s/'^DB_PWD=.*'/"DB_PWD=${db_pwd}"/g ${birdnet_conf}
${birdnetpi_dir}/scripts/update_db_pwd.sh ${birdnetpi_dir}/scripts/update_db_pwd.sh
fi fi
if ! [ -z ${db_root_pwd} ];then
exit 1 #for now
sed -i s/'^DB_ROOT_PWD=.*'/"DB_ROOT_PWD=${db_root_pwd}"/g ${birdnet_conf}
fi
if ! [ -z ${birdnetpi_url} ];then if ! [ -z ${birdnetpi_url} ];then
sed -i s/'^BIRDNETPI_URL=.*'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birdnet_conf} sed -i s/'^BIRDNETPI_URL=.*'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birdnet_conf}
sed -i s/'^EXTRACTIONLOG_URL=.*'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birdnet_conf} sed -i s/'^EXTRACTIONLOG_URL=.*'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birdnet_conf}
+1 -4
View File
@@ -3,10 +3,7 @@
source /etc/birdnet/birdnet.conf source /etc/birdnet/birdnet.conf
sudo mysql -e " sudo mysql -e "
UPDATE mysql.user SET PASSWORD FOR 'birder'@'localhost' = PASSWORD('${DB_PWD}');
SET Password=PASSWORD('${DB_PWD}')
WHERE USER='birder'
AND Host='localhost';
FLUSH PRIVILEGES"; FLUSH PRIVILEGES";
git -C /home/pi/BirdNET-Pi checkout -f analyze.py git -C /home/pi/BirdNET-Pi checkout -f analyze.py
git -C /home/pi/BirdNET-Pi checkout -f scripts/viewdb.php git -C /home/pi/BirdNET-Pi checkout -f scripts/viewdb.php
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# Update database password
source /etc/birdnet/birdnet.conf
sudo mysql -e "
SET PASSWORD FOR 'birder'@'localhost' = PASSWORD('${DB_PWD}');
FLUSH PRIVILEGES";
git -C /home/pi/BirdNET-Pi checkout -f analyze.py
git -C /home/pi/BirdNET-Pi checkout -f scripts/viewdb.php
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/analyze.py
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/scripts/viewdb.php
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
# Update database password
source /etc/birdnet/birdnet.conf
sudo mysql -e "
UPDATE mysql.user
SET Password=PASSWORD('${DB_PWD}')
WHERE USER='birder'
AND Host='localhost';
FLUSH PRIVILEGES";
git -C /home/pi/BirdNET-Pi checkout -f analyze.py
git -C /home/pi/BirdNET-Pi checkout -f scripts/viewdb.php
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/analyze.py
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/scripts/viewdb.php
+6 -1
View File
@@ -33,7 +33,12 @@ install_mariadb() {
apt -qqy install mariadb-server apt -qqy install mariadb-server
echo "MariaDB Installed" echo "MariaDB Installed"
fi fi
${my_dir}/update_db_pwd.sh source /etc/os-release
if [[ "${VERSION_CODENAME}" == "buster" ]];then
${my_dir}/update_db_pwd_buster.sh
elif [[ "${VERSION_CODENAME}" == "bullseye" ]];then
${my_dir}/update_db_pwd_bullseye.sh
fi
} }
install_birdnet_analysis() { install_birdnet_analysis() {
-1
View File
@@ -7,7 +7,6 @@ sed -i s/'^LONGITUDE=$'/"LONGITUDE=${new_lon}"/g ${birders_conf}
sed -i s/'^CADDY_PWD=$'/"CADDY_PWD=${caddy_pwd}"/g ${birders_conf} sed -i s/'^CADDY_PWD=$'/"CADDY_PWD=${caddy_pwd}"/g ${birders_conf}
sed -i s/'^ICE_PWD=$'/"ICE_PWD=${ice_pwd}"/g ${birders_conf} sed -i s/'^ICE_PWD=$'/"ICE_PWD=${ice_pwd}"/g ${birders_conf}
sed -i s/'^DB_PWD=$'/"DB_PWD=${db_pwd}"/g ${birders_conf} sed -i s/'^DB_PWD=$'/"DB_PWD=${db_pwd}"/g ${birders_conf}
sed -i s/'^DB_ROOT_PWD=$'/"DB_ROOT_PWD=${db_root_pwd}"/g ${birders_conf}
sed -i s/'^BIRDNETPI_URL=$'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birders_conf} sed -i s/'^BIRDNETPI_URL=$'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birders_conf}
sed -i s/'^EXTRACTIONLOG_URL=$'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birders_conf} sed -i s/'^EXTRACTIONLOG_URL=$'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birders_conf}
sed -i s/'^BIRDNETLOG_URL=$'/"BIRDNETLOG_URL=${birdnetlog_url/\/\//\\\/\\\/}"/g ${birders_conf} sed -i s/'^BIRDNETLOG_URL=$'/"BIRDNETLOG_URL=${birdnetlog_url/\/\//\\\/\\\/}"/g ${birders_conf}