Merge pull request #16 from Christoph-Lauer/patch-3

Changing project name to "Birding-Pi"
This commit is contained in:
mcguirepr89
2021-10-08 13:32:26 -04:00
committed by GitHub
30 changed files with 153 additions and 179 deletions
+15 -15
View File
@@ -1,11 +1,11 @@
#!/usr/bin/env bash
set -e
my_dir=${HOME}/BirdNET-Lite
my_dir=${HOME}/Birding-Pi
trap '${my_dir}/scripts/dump_logs.sh && exit' EXIT SIGHUP SIGINT
if [ "$(uname -m)" != "aarch64" ];then
echo "BirdNET-Lite requires a 64-bit OS.
echo "Birding-Pi requires a 64-bit OS.
It looks like your operating system is using $(uname -m),
but would need to be aarch64.
Please take a look at https://birdnetwiki.pmcgui.xyz for more
@@ -44,11 +44,11 @@ EOF
echo
echo "Installing stage 2 installation script now."
cd ~
curl -s -O "https://raw.githubusercontent.com/mcguirepr89/BirdNET-Lite/rpi4/Birders_Guide_Installer.sh"
curl -s -O "https://raw.githubusercontent.com/mcguirepr89/Birding-Pi/rpi4/Birders_Guide_Installer.sh"
chmod +x Birders_Guide_Installer.sh
cat << EOF | sudo tee /etc/systemd/user/birdnet-system-installer.service &> /dev/null
[Unit]
Description=A BirdNET-Lite Installation Script Service
Description=A Birding-Pi Installation Script Service
After=graphical.target network-online.target
[Service]
@@ -106,8 +106,8 @@ stage_2() {
echo
if [ ! -d ${my_dir} ];then
cd ~ || exit 1
echo "Cloning the BirdNET-Lite repository in your home directory"
git clone https://github.com/mcguirepr89/BirdNET-Lite.git ~/BirdNET-Lite
echo "Cloning the Birding-Pi repository in your home directory"
git clone https://github.com/mcguirepr89/Birding-Pi.git ~/Birding-Pi
fi
if [ -f ${my_dir}/Birders_Guide_Installer_Configuration.txt ];then
@@ -137,9 +137,9 @@ and then close the Mouse Pad editing window to continue."
echo "It looks like you haven't filled out the Birders_Guide_Installer_Configuration.txt file
completely.
Open that file to edit it. (Go to the folder icon in the top left and look for the \"BirdNET-Lite\"
Open that file to edit it. (Go to the folder icon in the top left and look for the \"Birding-Pi\"
folder and double-click the file called \"Birders_Guide_Installer_Configuration.txt\"
Enter the latitude and longitude of where the BirdNET-Lite will be.
Enter the latitude and longitude of where the Birding-Pi will be.
You can find this information at https://maps.google.com
Find your location on the map and right click to find your coordinates.
@@ -150,9 +150,9 @@ Good luck!"
read
exit 1
fi
echo "Installing the BirdNET-Lite configuration file."
echo "Installing the Birding-Pi configuration file."
[ -f ${my_dir}/soundcard_params.txt ] || touch ${my_dir}/soundcard_params.txt
SOUND_PARAMS="${HOME}/BirdNET-Lite/soundcard_params.txt"
SOUND_PARAMS="${HOME}/Birding-Pi/soundcard_params.txt"
SOUND_CARD="$(sudo -u pi aplay -L \
| grep -e '^hw' \
| cut -d, -f1 \
@@ -177,7 +177,7 @@ The installation has finished. Press Enter to close this window."
install_birdnet_config() {
cat << EOF > ${my_dir}/birdnet.conf
################################################################################
# Configuration settings for BirdNET as a service #
# Configuration settings for the Birding-Pi #
################################################################################
#___________The four variables below are the only that are required.___________#
@@ -282,7 +282,7 @@ REMOTE_RECS_DIR=
## EXTRACTIONS_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-Lite on your local network, you can set this to http://localhost.
## the Birding-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.
@@ -329,7 +329,7 @@ PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
# Keep this EMPTY if you do not want to install NoMachine. #
## INSTALL_NOMACHINE is simply a setting that can be enabled to install
## NoMachine alongside the BirdNET-Lite for remote desktop access. This in-
## NoMachine alongside the Birding-Pi for remote desktop access. This in-
## staller assumes personal use. Please reference the LICENSE file included
## in this repository for more information.
## Set this to Y or y to install NoMachine alongside the BirdNET-Lite
@@ -372,7 +372,7 @@ EXTRACTED=${RECS_DIR}/Extracted
## change this variable between data-sets to preserve records of disparate
## data-sets according to name.
IDFILE=${HOME}/BirdNET-Lite/IdentifiedSoFar.txt
IDFILE=${HOME}/Birding-Pi/IdentifiedSoFar.txt
## OVERLAP is the value in seconds which BirdNET should use when analyzing
## the data. The values must be between 0.0-2.9.
@@ -433,7 +433,7 @@ The installer runs in two stages:
Stage 1 configures and enables the zRAM kernel module and allocates 4G
to its swapping size if needed. This will trigger a reboot.
Stage 1 also ensures the system is up to date.
Stage 2 guides you through configuring the essentials and installs the full BirdNET-Lite."
Stage 2 guides you through configuring the essentials and installs the full Birding-Pi system."
if [ ! -f ${HOME}/stage_1_complete ] ;then
+40 -84
View File
@@ -1,97 +1,53 @@
# BirdNET-Lite for arm64/aarch64 (Raspberry Pi 4) -- Still in testing
### Built on https://github.com/kahst/BirdNET -- checkout the Wiki at [BirdNETWiki.pmcgui.xyz](https://birdnetwiki.pmcgui.xyz)
# Birding Pi
![version](https://img.shields.io/badge/version-0.1-blue)
This project offers an installation script for BirdNET-Lite as a systemd service on arm64 (aarch64) Debian-based operating systems, namely RaspiOS. The installation script offers to walk the user through setting up the '*birdnet.conf*' main configuration file interactively, or can read from an existing '*birdnet.conf*'. A variety of configurations can be attained through this installation script.
A realtime acoustic bird classification system for the Reaspberry Pi 4B
BirdNET-Lite can be configured with the following optional services:
- A 24/7 recording script that can be easily configured to use any available sound card
- An extraction service that extracts the audio selections identified by BirdNET by date and species
- A Caddy instance that serves the extracted files and live audio stream (icecast2)
- A species list updating and notification script supporting mobile notifications via Pushed.co (sorry, Android users, Pushed.co doesn't seem to work for you)
- NoMachine remote desktop software (for personal use only)
## Inroduction
The Birding Pi project is based on the BirdNet-Lite project and is able to recognize bird sounds from the microphone and the sound card in realtime. The system installs all needed services on the Raspberry Pi.
An installation one-liner is available below for RaspiOS-ARM64 meeting the prequisites below. It installs all services listed above.
- Prerequisites:
- An updated RaspiOS for AArch64 that has locale, WiFi, time-zone, and pi user password set. A guide is available [here](https://birdnetwiki.pmcgui.xyz/wiki/Birder%27s_Guide_to_BirdNET-Lite#Install_the_base_operating_system_.28OS.29). 64GB SD card for best performance.
- A USB microphone (dsnoop capable to enable live audio stream).
- Running the installer from within the Raspberry Pi's desktop environment (i.e., not over SSH -- for SSH installations, see installation options 2 & 3)
## Requirements
* A Raspberry Pi 4B
* A SD Card with the 64-bit version of RaspiOS installed [(download the latest here)](https://downloads.raspberrypi.org/raspios_arm64/images/)
* A USB Microphone or Sound Card
## Installation
The system can be installed with:
```
curl -s https://raw.githubusercontent.com/mcguirepr89/BirdNET-Lite/rpi4/Birders_Guide_Installer.sh | bash
```
## What the installation does
1. Looks for a *'birdnet.conf'* file in the *BirdNET-Lite* main directory
1. If a *'birdnet.conf'* file exists and is filled out properly, the installation is nearly
non-interactive and builds the system based off of the services configured in the *'birdnet.conf'* file
1. If the installer cannot find a *'birdnet.conf'* file, the installation is interactive and will
walk the user through creating the '*birdnet.conf'* file interactively.
1. Installs the following system dependencies:
- ffmpeg
- libblas-dev
- liblapack-dev
- caddy (for web access to extractions)
- icecast2 (live audio stream)
- alsa-utils (for recording)
- sshfs (to mount remote sound file directories)
1. Installs BirdNET-Lite scripts in */usr/local/bin*
1. Installs all selected services based on '*birdnet.conf*'
1. Installs *miniforge* for the aarch64 architecture using the current release from https://github.com/conda-forge/miniforge
1. Builds BirdNET in miniforge's *'birdnet'* virtual environment
1. Enables (but does not start) the services
The script first enables and configures the zRAM kernel module for swapping, and reboots.
After the reboot, the configuration file is opened for editing. Here, you will input your latitude and longitude and will set two passwords to protect your Pi. When in installation has finished, the Birding Pi is ready to start collecting and analyzing data on the next boot.
## What you should know before any installation
1. The licensing information for the software that is used (see [LICENSE](https://raw.githubusercontent.com/mcguirepr89/BirdNET-Lite/BirdNET-Lite-for-raspi4/LICENSE)).
1. The **latitude** and **longitude** where the bird recordings take place. Google maps is an easy way to find these (right-clicking the location).
1. In order for the live audio stream to work at the same time as the birdnet_recording.service, the microphone needs to be dsnoop capable. If you are wondering whether your mic supports creating the dsnoop device, you can use `aplay -L | awk -F, '/dsn/ {print $1}' | grep -ve 'vc4' -e 'Head' -e 'PCH' | uniq` to check. (No output means your microphone does not support creating a dsnoop device and therefore cannot also provide an audio stream while recording. The birdnet_recording.service, however, should not be affected by this and the installation one-liner can still be used. The live stream link simply will not work.)
If you have trouble with the installation script, you can cancel and rerun the installer:
```
~/Birding-Pi/Birders_Guide_installer.sh
```
## What you should know for a manual installation
1. The **local directory** where the recordings should be found on your local computer. BirdNET-Lite supports setting up a systemd.mount for automounting remote directories. So for instance, if the actual recordings live on RemoteHost's `/home/user/recordings` directory, but you would like them to be found on your device at `/home/me/BirdNET-recordings`, then `/home/me/BirdNET-recordings` will be your answer to that question.
1. If mounting the recordings directory from a remote host, you need to know the **remote hostname, username, and password** to connect to it via SSH, as well as the **absolute path of the recordings on the remote host**.
1. If you are using a special microphone or have multiple sound cards and would like to specify which to use for recording, you can edit the `~/BirdNET-Lite/birdnet.conf` file before the installation and set the **REC_CARD** variable to the sound card of your choice. Copy your desired sound card line from the output of `aplay -L | awk -F, '/^dsn:/ { print $1 }'`(prefered), or `aplay -L | awk -F, '/^hw:/ { print $1 }'`(if prefered is not available).
1. If you would like to take advantage of Caddy's automatic handling of SSL certificates to be able to host a public website where your friends can hear your bird sounds, forward ports 80 and 443 to the host you want to serve the files. You may also want to purchase a domain name.
- *Note: If you're just keeping this on your local network, **be sure to set your extraction URL to something 'http://'** (on RaspiOS, I recommend 'http://raspberrypi.local') to disable Caddy's automatic HTTPS. Alternatively, you may edit the `/etc/caddy/Caddyfile` after installation and add the `tls internal` directive to the site block to have Caddy issue a self-signed certificate for an HTTPS connection.*
1. If you would like to take advantage of BirdNET-Lite's ability to send New Species mobile notifications, you can easily setup a Pushed.co notification app (see the #TODOs at the bottom for more info). After setting up your application, make note of your **App Key** and **App Secret** -- you will need these to enable mobile notifications for new species.
- *Note for Android users: it seems that the Pushed.co Mobile App does not work for Android devices, which is a huge bummer. If anyone knows of an Android alternative, or if anyone might be able to come up with a home-spun notification system, please let me know.*
## Access
The Birding Pi system can be accessed from any the web browser on the same network:
- http://birdingpi.local
## How to install
Install All Services
1. In the terminal run: `curl -s https://raw.githubusercontent.com/mcguirepr89/BirdNET-Lite/rpialpha/Birders_Guide_Installer.sh | bash`
#### Access Credentials:
- Username:`birdnet`
- Password: The "CADDY_PWD" password you set during installation
## Uninstallation
```
/usr/local/bin/uninstall.sh && cd ~ && rm -drf Birding-Pi
```
## Access your BirdNET-Lite
If you configured BirdNET-Lite with the Caddy webserver, you can access the extractions locally at
## ToDo, Notes, and Comming Soon
- http://birdnetsystem.local
### Internationalisation:
The bird names are in English by default, but other localized versions are available. Please download the labels_l18n.zip file and replace the `model/labels.txt` with the corresponding language.
You can also view the log output for the <code>birdnet_analysis.service</code> and <code>extraction.service</code> at
### Tips:
You can try to overclock your Pi by placing the following in your `/boot/config.txt` file:
- http://birdlog.local
- http://extractionlog.local
and the BirdNET-Lite Statistics Report at
- http://birdstats.local
If you opt to also install NoMachine alongside the BirdNET-Lite, you can also access BirdNET-Lite
remotely following the address information that can be found on the NoMachine's server information page.
## Examples
These are examples of my personal instance of the BirdNET-Lite on a Raspberry Pi 4B.
- https://birdsounds.pmcgui.xyz -- My BirdNET-Lite Extractions page
- https://birdlog.pmcgui.xyz -- My 'birdlog' birdnet_analysis.service log
- https://extraction.pmcgui.xyz -- My 'extractionlog' extraction.service log
- https://birdstats.pmcgui.xyz -- My 'birdstats' BirdNET-Lite Report
## How to reconfigure the system
At any time, you can completely reconfigure the system to select or remove features. To reconfigure the system, simply run the included "reconfigure_birdnet.sh" script (as the regular user) and follow the prompts to create a new birdnet.conf file and install new services: `~/BirdNET-Lite/scripts/reconfigure_birdnet.sh`
## How to uninstall BirdNET-Lite
To remove BirdNET-Lite, run the included '*uninstall.sh*' script as the regular user.
1. Issue `/usr/local/bin/uninstall.sh && cd ~ && rm -drf BirdNET-Lite`
## Troubleshooting
**General** -- At anytime, you can run the included `~/BirdNET-Lite/dump_logs.sh` script to create a compressed tar ball of system logs that may provide a helpful overview of the system services. In addition, you can upload it in a new issue along with a description of what you are experiencing. dump_logs.sh scrubs password information, but does retain LATITUDE and LONGITUDE information. If at all concerned with privacy, you're welcome to send them to me via email at mailto:mcguirepr89@gmail.com.
**Audio** -- If you have problems with the _bridnet_recording.service_ or _livestream.service_, try setting the REC_CARD setting in the _birdnet.conf_ file to `REC_CARD=default` and the CHANNELS variable to `CHANNELS=2`. This works for two very different microphones I have, so it may work for you. If it does, please let me know, as I may change the code as a result. Also, during installation, a file is created called `~/BirdNET-Lite/soundcard_params.txt` that may provide helpful information for customized settings.
**Installation** -- The installer _should_ always create a compressed set of system logs whether it succeeds or fails. Its location is `~/BirdNET-Lite/logs.tar.gz`. Take a look through there or feel free to create a new issue and upload it along with a description of what you are experiencing.
### TODO & Notes:
1. I ought to add the steps to setup a Pushed.co application for the mobile notifications feature. Here is a link for now https://pushed.co/quick-start-guide
```
over_voltage=6
arm_freq=1750
```
Be sure the Pi is adequately cooled and powered. Check http://birdingpi.local:9090 for CPU temperature and over-volatage warnings (anything other than "throttled:0x0" is bad).
+4 -4
View File
@@ -105,7 +105,7 @@ REMOTE_RECS_DIR=
## EXTRACTIONS_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-Lite on your local network, you can set this to http://localhost.
## Birding-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.
@@ -152,10 +152,10 @@ PUSHED_APP_SECRET=
# Keep this EMPTY if you do not want to install NoMachine. #
## INSTALL_NOMACHINE is simply a setting that can be enabled to install
## NoMachine alongside the BirdNET-Lite for remote desktop access. This in-
## NoMachine alongside the Birding-Pi for remote desktop access. This in-
## staller assumes personal use. Please reference the LICENSE file included
## in this repository for more information.
## Set this to Y or y to install NoMachine alongside the BirdNET-Lite
## Set this to Y or y to install NoMachine alongside the Birding-Pi
INSTALL_NOMACHINE=
@@ -195,7 +195,7 @@ EXTRACTED=${RECS_DIR}/Extracted
## change this variable between data-sets to preserve records of disparate
## data-sets according to name.
IDFILE=${HOME}/BirdNET-Lite/IdentifiedSoFar.txt
IDFILE=${HOME}/Birding-Pi/IdentifiedSoFar.txt
## OVERLAP is the value in seconds which BirdNET should use when analyzing
## the data. The values must be between 0.0-2.9.
+2 -2
View File
@@ -22,7 +22,7 @@ if ! diff ${LAST_RUN} ${THIS_RUN};then
done
fi
CUSTOM_LIST="/home/pi/BirdNET-Lite/custom_species_list.txt"
CUSTOM_LIST="/home/pi/Birding-Pi/custom_species_list.txt"
# Create an array of the audio files
# Takes one argument:
@@ -75,7 +75,7 @@ run_analysis() {
WEEK="$(echo "${WEEK_OF_YEAR} + 4" |bc -l)"
fi
cd ${HOME}/BirdNET-Lite || exit 1
cd ${HOME}/Birding-Pi || exit 1
for i in "${files[@]}";do
echo "${1}/${i}" > ./analyzing_now.txt
[ -z ${RECORDING_LENGTH} ] && RECORDING_LENGTH=12
+10 -8
View File
@@ -7,13 +7,15 @@ setterm --cursor off
TMP_FILE="$(mktemp)"
while true;do
cat << "EOF"
.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.
( _ ____ __ _ )
) |_)o.__||\ ||_ |__(_ __|_ _ ._ _ |_) _ ._ _ .__|_ (
( |_)||(_|| \||_ | __)\/_> |_(/_| | | | \(/_|_)(_)| |_ )
) / | (
"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"
cat << "EOF"
___ _ ___
( _`\ _ ( ) _ ( _`\ _
| (_) )(_) _ __ _| |(_) ___ __ | |_) )(_)
| _ <'| |( '__)/'_` || |/' _ `\ /'_ `\ | ,__/'| |
| (_) )| || | ( (_| || || ( ) |( (_) | | | | |
(____/'(_)(_) `\__,_)(_)(_) (_)`\__ | (_) (_)
( )_) |
\___/'
EOF
if [ "$(find ${EXTRACTED} -name '*.wav' | wc -l)" -ge 1 ] &> /dev/null;then
a=$( find "${EXTRACTED}" -name '*.wav' \
@@ -90,4 +92,4 @@ EOF
echo -n "Listening since "${INSTALL_DATE}""
sleep 20
clear
done
done
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/clear_all_data.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/clear_all_data.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+5 -5
View File
@@ -15,12 +15,12 @@ echo "Recreating necessary directories"
[ -d ${EXTRACTED}/By_Date ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Date
[ -d ${EXTRACTED}/By_Common_Name ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Common_Name
[ -d ${EXTRACTED}/By_Scientific_Name ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Scientific_Name
sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Lite/templates/index.html ${EXTRACTED}
sudo -u ${BIRDNET_USER} ln -s /home/pi/Birding-Pi/templates/index.html ${EXTRACTED}
[ -d ${PROCESSED} ] || sudo -u ${BIRDNET_USER} mkdir -p ${PROCESSED}
[ -L ${EXTRACTED}/scripts ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Lite/scripts ${EXTRACTED}/
[ -L ${EXTRACTED}/spectrogram.php ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Lite/scripts/spectrogram.php ${EXTRACTED}
[ -L ${EXTRACTED}/spectrogram.sh ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Lite/scripts/spectrogram.sh ${EXTRACTED}
[ -L ${EXTRACTED}/scripts ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/Birding-Pi/scripts ${EXTRACTED}/
[ -L ${EXTRACTED}/spectrogram.php ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/Birding-Pi/scripts/spectrogram.php ${EXTRACTED}
[ -L ${EXTRACTED}/spectrogram.sh ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/Birding-Pi/scripts/spectrogram.sh ${EXTRACTED}
sudo -u ${BIRDNET_USER} cp ~/BirdNET-Lite/templates/index.html ${EXTRACTED}/
sudo -u ${BIRDNET_USER} cp ~/Birding-Pi/templates/index.html ${EXTRACTED}/
echo "Restarting services"
sudo systemctl restart birdnet_recording.service
+4 -4
View File
@@ -2,7 +2,7 @@
# A comprehensive log dumper
# set -x # Uncomment to debug
source /etc/birdnet/birdnet.conf &> /dev/null
LOG_DIR="${HOME}/BirdNET-Lite/logs"
LOG_DIR="${HOME}/Birding-Pi/logs"
SERVICES=(avahi-alias@.service
birdnet_analysis.service
birdnet_log.service
@@ -29,7 +29,7 @@ for i in "${SERVICES[@]}";do
done
# Create password-removed birdnet.conf
sed -e '/PWD=/d' ${HOME}/BirdNET-Lite/birdnet.conf > ${LOG_DIR}/birdnet.conf
sed -e '/PWD=/d' ${HOME}/Birding-Pi/birdnet.conf > ${LOG_DIR}/birdnet.conf
# Create password-removed Caddyfile
if [ -f /etc/caddy/Caddyfile ];then
@@ -57,6 +57,6 @@ for i in "${CALLS[@]}";do
done
# TAR the logs into a ball
tar --remove-files -cvpzf ${HOME}/BirdNET-Lite/logs.tar.gz ${LOG_DIR} &> /dev/null
tar --remove-files -cvpzf ${HOME}/Birding-Pi/logs.tar.gz ${LOG_DIR} &> /dev/null
# Finished
echo "Your compressed logs are located at ${HOME}/BirdNET-Lite/logs.tar.gz"
echo "Your compressed logs are located at ${HOME}/Birding-Pi/logs.tar.gz"
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/edit_birdnet.conf.sh");
header('Location: http://birdnetsystem.local:9898');
shell_exec("/home/pi/Birding-Pi/scripts/edit_birdnet.conf.sh");
header('Location: http://birdingpi.local:9898');
?>
+5 -5
View File
@@ -7,7 +7,7 @@ trap '${my_dir}/dump_logs.sh && echo -e "\n\nExiting the installation. Goodbye!"
cd $my_dir || exit 1
if [ "$(uname -m)" != "aarch64" ];then
echo "BirdNET-Lite requires a 64-bit OS.
echo "Birding-Pi requires a 64-bit OS.
It looks like your operating system is using $(uname -m),
but would need to be aarch64.
Please take a look at https://birdnetwiki.pmcgui.xyz for more
@@ -46,7 +46,7 @@ install_deps() {
}
install_birdnet() {
cd ~/BirdNET-Lite || exit 1
cd ~/Birding-Pi || exit 1
echo "Upgrading pip, wheel, and setuptools"
sudo pip3 install --upgrade pip wheel setuptools
echo "Fetching the TFLite pre-built binaries"
@@ -65,7 +65,7 @@ install_birdnet() {
read -sp "\
Be sure you have read the software license before installing. This is
available in the BirdNET-Lite directory as "LICENSE"
available in the Birding-Pi directory as "LICENSE"
If you DO NOT want to install BirdNET and the birdnet_analysis.service,
press Ctrl+C to cancel. If you DO wish to install BirdNET and the
birdnet_analysis.service, press ENTER to continue with the installation."
@@ -94,13 +94,13 @@ echo " BirdNet is installed!!
http://birdnetsystem.local to see your extractions,
http://birdlog.local to see the log output of the birdnet_analysis.service,
http://extractionlog.local to see the log output of the extraction.service, and
http://birdstats.local to see the BirdNET-Lite Report"
http://birdstats.local to see the Birding-Pi Report"
echo
read -n1 -p " Would you like to run the birdnet_analysis.service now?" YN
echo
case $YN in
[Yy] ) sudo systemctl start birdnet_analysis.service \
&& journalctl -fu birdnet_analysis;;
* ) echo " Thanks for installing BirdNET-Lite!!
* ) echo " Thanks for installing Birding-Pi!!
I hope it was helpful!";;
esac
+5 -5
View File
@@ -298,7 +298,7 @@ REMOTE_RECS_DIR=${REMOTE_RECS_DIR}
## EXTRACTIONS_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-Lite on your local network, you can set this to http://localhost.
## Birding-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.
@@ -345,10 +345,10 @@ PUSHED_APP_SECRET=${PUSHED_APP_SECRET}
# Keep this EMPTY if you do not want to install NoMachine. #
## INSTALL_NOMACHINE is simply a setting that can be enabled to install
## NoMachine alongside the BirdNET-Lite for remote desktop access. This in-
## NoMachine alongside the Birding-Pi for remote desktop access. This in-
## staller assumes personal use. Please reference the LICENSE file included
## in this repository for more information.
## Set this to Y or y to install NoMachine alongside the BirdNET-Lite
## Set this to Y or y to install NoMachine alongside the Birding-Pi
INSTALL_NOMACHINE=${INSTALL_NOMACHINE}
@@ -388,7 +388,7 @@ EXTRACTED=${RECS_DIR}/Extracted
## change this variable between data-sets to preserve records of disparate
## data-sets according to name.
IDFILE=${HOME}/BirdNET-Lite/IdentifiedSoFar.txt
IDFILE=${HOME}/Birding-Pi/IdentifiedSoFar.txt
## OVERLAP is the value in seconds which BirdNET should use when analyzing
## the data. The values must be between 0.0-2.9.
@@ -444,7 +444,7 @@ EOF
sudo ln -sf $(dirname ${my_dir})/birdnet.conf /etc/birdnet/birdnet.conf
}
# Checks for a birdnet.conf file in the BirdNET-Lite directory for a
# Checks for a birdnet.conf file in the Birding-Pi directory for a
# non-interactive installation. Otherwise,the installation is interactive.
if [ -f ${BIRDNET_CONF} ];then
source ${BIRDNET_CONF}
+6 -6
View File
@@ -10,7 +10,7 @@ gotty_url="https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_a
CONFIG_FILE="$(dirname ${my_dir})/birdnet.conf"
install_scripts() {
echo "Installing BirdNET-Lite scripts to /usr/local/bin"
echo "Installing Birding-Pi scripts to /usr/local/bin"
ln -sf ${my_dir}/* /usr/local/bin/
rm /usr/local/bin/index.html
}
@@ -207,7 +207,7 @@ ${EXTRACTIONS_URL} {
php_fastcgi unix//run/php/php7.3-fpm.sock
}
http://birdnetsystem.local {
http://birdingpi.local {
root * ${EXTRACTED}
file_server browse
basicauth /Processed* {
@@ -284,7 +284,7 @@ RestartSec=3
Type=simple
User=${USER}
Environment=TERM=xterm-256color
ExecStart=/usr/local/bin/gotty -p 8080 --title-format "BirdNET-Lite Log" journalctl -fu birdnet_analysis.service
ExecStart=/usr/local/bin/gotty -p 8080 --title-format "Birding-Pi Log" journalctl -fu birdnet_analysis.service
[Install]
WantedBy=multi-user.target
@@ -318,7 +318,7 @@ RestartSec=3
Type=simple
User=${USER}
Environment=TERM=xterm-256color
ExecStart=/usr/local/bin/gotty -p 9090 --title-format "BirdNET-Lite Statistics" tmux new -A -s birdstats /usr/local/bin/birdnet_stats.sh
ExecStart=/usr/local/bin/gotty -p 9090 --title-format "Birding-Pi Statistics" tmux new -A -s birdstats /usr/local/bin/birdnet_stats.sh
[Install]
WantedBy=multi-user.target
@@ -378,7 +378,7 @@ RestartSec=3
Type=simple
User=pi
Environment=TERM=xterm-256color
ExecStart=/usr/local/bin/gotty -w -p 9898 --title-format "Edit birdnet.conf" tmux new -A -s editbirdnet nano /home/pi/BirdNET-Lite/birdnet.conf
ExecStart=/usr/local/bin/gotty -w -p 9898 --title-format "Edit birdnet.conf" tmux new -A -s editbirdnet nano /home/pi/Birding-Pi/birdnet.conf
[Install]
WantedBy=multi-user.target
@@ -418,7 +418,7 @@ install_livestream_service() {
echo "Installing Live Stream service"
cat << EOF > /etc/systemd/system/livestream.service
[Unit]
Description=BirdNET-Lite Live Stream
Description=Birding-Pi Live Stream
[Service]
Environment=XDG_RUNTIME_DIR=/run/user/1000
+2 -2
View File
@@ -3,7 +3,7 @@
# ONLY run this additional script if you trust everyone on your
# local network completely as the credentials are sent WITHOUT
# any SSL/TLS encryption. For a secure remote connection to your
# BirdNET-Lite command line, consider enabling SSH on the
# Birding-Pi command line, consider enabling SSH on the
# Raspberry Pi and using another Linux machine or an SSH
# client software, or you can alternately add the 'tls internal'
# directive to the Caddyfile to add a self-signed certificate for TLS/SSL
@@ -46,7 +46,7 @@ install_tmux() {
install_web_terminal() {
cat << EOF | sudo tee /etc/systemd/system/birdterminal.service
[Unit]
Description=A BirdNET-Lite Web Terminal
Description=A Birding-Pi Web Terminal
[Service]
Restart=on-failure
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/reboot_system.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/reboot_system.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+4 -4
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# Reconfigure the BirdNET-Lite
# Reconfigure the Birding-Pi
source /etc/birdnet/birdnet.conf
uninstall.sh
${HOME}/BirdNET-Lite/scripts/install_config.sh
sudo ${HOME}/BirdNET-Lite/scripts/install_services.sh
echo "BirdNET-Lite has now been reconfigured."
${HOME}/Birding-Pi/scripts/install_config.sh
sudo ${HOME}/Birding-Pi/scripts/install_services.sh
echo "Birding-Pi has now been reconfigured."
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/restart_birdnet_analysis.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/restart_birdnet_analysis.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/restart_birdnet_recording.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/restart_birdnet_recording.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/restart_caddy.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/restart_caddy.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/restart_extraction.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/restart_extraction.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/restart_services.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/restart_services.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+2 -2
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Lite/scripts/shutdown_system.sh");
header('Location: http://birdnetsystem.local/scripts/index.html?success=true');
shell_exec("/home/pi/Birding-Pi/scripts/shutdown_system.sh");
header('Location: http://birdingpi.local/scripts/index.html?success=true');
?>
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdSongs/Extracted/spectrogram.sh");
header('Location: http://birdnetsystem.local/spectrogram.png');
header('Location: http://birdingpi.local/spectrogram.png');
?>
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Make sox spectrogram
source /etc/birdnet/birdnet.conf
analyzing_now="$(cat /home/pi/BirdNET-Lite/analyzing_now.txt)"
analyzing_now="$(cat /home/pi/Birding-Pi/analyzing_now.txt)"
spectrogram_png=${EXTRACTED}/spectrogram.png
sudo -u pi sox "${analyzing_now}" -n spectrogram -o "${spectrogram_png}"
+1 -1
View File
@@ -105,5 +105,5 @@ remove_scripts() {
remove_services
remove_scripts
if [ -d /etc/birdnet ];then sudo rm -drf /etc/birdnet;fi
if [ -f ${HOME}/BirdNET-Lite/birdnet.conf ];then sudo rm -f ${HOME}/BirdNET-Lite/birdnet.conf;fi
if [ -f ${HOME}/Birding-Pi/birdnet.conf ];then sudo rm -f ${HOME}/Birding-Pi/birdnet.conf;fi
echo "Uninstall finished. Remove this directory with 'rm -drfv' to finish."
+1 -1
View File
@@ -9,7 +9,7 @@ ${EXTRACTIONS_URL} {
}
reverse_proxy /stream localhost:8000
}
http://birdnetsystem.local {
http://birdingpi.local {
root * ${EXTRACTED}
file_server browse
basicauth ${PROCESSED}* {
+1 -1
View File
@@ -8,7 +8,7 @@ ${EXTRACTIONS_URL} {
birdnet ${HASHWORD}
}
}
http://birdnetsystem.local {
http://birdingpi.local {
root * ${EXTRACTED}
file_server browse
basicauth ${PROCESSED}* {
+1
View File
@@ -1,2 +1,3 @@
#birdnet
0 1 * * * /usr/local/bin/cleanup.sh &> /dev/null
@reboot /usr/local/bin/cleanup.sh &> /dev/null
+24 -9
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>BirdNET-Lite System</title>
<title>Birding Pi</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@@ -46,7 +46,19 @@ header {
}
h1 {
font-size: 20px;
font-size: 24px;
font-weight: normal;
white-space: nowrap;
overflow-x: hidden;
text-overflow: ellipsis;
color: #999;
}
h2 {
padding-left: 5%;
font-size: 18px;
margin-bottom: 10px;
margin-top: 10px;
font-weight: normal;
white-space: nowrap;
overflow-x: hidden;
@@ -319,19 +331,22 @@ footer {
<header>
<h1>
<a href="">BirdNET-Lite System</a>
<a href="">Birding Pi (BirdNET-Lite)</a>
</h1>
</header>
<hr>
<h2>
<a href="./stream">
<span class="name">Live Audio Stream</span>
<span class="name">🔊 Live Audio Stream</span>
</a>
</h2>
<hr>
<h2>
<a href="http://birdnetsystem.local:9090">
<span class="name">BirdNET-system Report</span>
<span class="name">🐦 BirdNET-system Report</span>
</a>
</h2>
<hr>
<main>
<div class="listing">
<table aria-describedby="summary">
@@ -395,7 +410,7 @@ footer {
<td>
<a href="./scripts/">
<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 317 259"><use xlink:href="#folder"></use></svg>
<span class="name">scripts</span>
<span class="name">🗎 scripts</span>
</a>
</td>
</tr>
@@ -404,7 +419,7 @@ footer {
<td>
<a href="http://birdnetsystem.local:8080">
<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 317 259"><use xlink:href="#folder"></use></svg>
<span class="name">birdlog</span>
<span class="name">birdlog</span>
</a>
</td>
</tr>
@@ -413,7 +428,7 @@ footer {
<td>
<a href="http://birdnetsystem.local:8888">
<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 317 259"><use xlink:href="#folder"></use></svg>
<span class="name">extractionlog</span>
<span class="name">extractionlog</span>
</a>
</td>
</tr>
@@ -482,4 +497,4 @@ footer {
timeList.forEach(localizeDatetime);
</script>
</body>
</html>
</html>
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit]
Description=BirdNET-Lite Live Stream
Description=Birding-Pi Live Stream
[Service]
Environment=XDG_RUNTIME_DIR=/run/user/1000
Restart=always
+2 -2
View File
@@ -11,12 +11,12 @@ set-window-option -g mode-keys vi
set-option -g status-interval 5
set-option -g status 2
set-option -g status-format[1] '#[bg=cyan,fg=black]#[align=left][BirdNET-Lite] #[bg=cyan]#[align=centre]#(vcgencmd measure_temp) #(vcgencmd get_throttled)#[align=right]#(~/BirdNET-Lite/scripts/disk_usage.sh)%l:%M%p'
set-option -g status-format[1] '#[bg=cyan,fg=black]#[align=left][Birding-Pi] #[bg=cyan]#[align=centre]#(vcgencmd measure_temp) #(vcgencmd get_throttled)#[align=right]#(~/Birding-Pi/scripts/disk_usage.sh)%l:%M%p'
set-option -g status-style bg=magenta,fg=cyan
set-option -g status-justify centre
set-option -g status-left-length 50
set-option -g status-left '#[fg=brightyellow]arm clock #(vcgencmd measure_clock arm)'
set-option -g status-right '#[fg=brightyellow]%A, %B %e#(~/BirdNET-Lite/scripts/pretty_date.sh)'
set-option -g status-right '#[fg=brightyellow]%A, %B %e#(~/Birding-Pi/scripts/pretty_date.sh)'
bind r source-file /etc/tmux.conf \; display "Reloaded!"