Merge pull request #852 from jaredb7/Configurable-Service-Logging-Options
Configurable service logging options for select services
This commit is contained in:
+234
-56
@@ -245,10 +245,106 @@ if(isset($_GET['submit'])) {
|
||||
}
|
||||
}
|
||||
|
||||
$fh = fopen('/etc/birdnet/birdnet.conf', "w");
|
||||
$fh2 = fopen("./scripts/thisrun.txt", "w");
|
||||
fwrite($fh, $contents);
|
||||
fwrite($fh2, $contents2);
|
||||
if (isset($_GET["LogLevel_BirdnetRecordingService"])) {
|
||||
$birdnet_recording_service_log_level = trim($_GET["LogLevel_BirdnetRecordingService"]);
|
||||
|
||||
//If setting exists change it's value
|
||||
if (array_key_exists('LogLevel_BirdnetRecordingService', $config)) {
|
||||
//Setting exists already, see if the value changed
|
||||
if (strcmp($birdnet_recording_service_log_level, $config['LogLevel_BirdnetRecordingService']) !== 0) {
|
||||
$contents = preg_replace("/LogLevel_BirdnetRecordingService=.*/", "LogLevel_BirdnetRecordingService=\"$birdnet_recording_service_log_level\"", $contents);
|
||||
$contents2 = preg_replace("/LogLevel_BirdnetRecordingService=.*/", "LogLevel_BirdnetRecordingService=\"$birdnet_recording_service_log_level\"", $contents2);
|
||||
$fh = fopen("/etc/birdnet/birdnet.conf", "w");
|
||||
$fh2 = fopen("./scripts/thisrun.txt", "w");
|
||||
fwrite($fh, $contents);
|
||||
fwrite($fh2, $contents2);
|
||||
sleep(1);
|
||||
exec("sudo systemctl restart birdnet_recording.service");
|
||||
}
|
||||
} else {
|
||||
//Create the setting in the setting file - same as what update_birdnet_snippets.sh does but will take the users selected log level as the value
|
||||
shell_exec('sudo echo "LogLevel_BirdnetRecordingService=\"' . $birdnet_recording_service_log_level . '\"" >> /etc/birdnet/birdnet.conf');
|
||||
//also update this run txt file
|
||||
shell_exec('sudo echo "LogLevel_BirdnetRecordingService=\"' . $birdnet_recording_service_log_level . '\"" >> ./scripts/thisrun.txt');
|
||||
|
||||
//Reload the config files as we've changed the contents, we need to make sure the contents of the existing variables reflects contents of the config file
|
||||
sleep(1);
|
||||
$contents = file_get_contents('/etc/birdnet/birdnet.conf');
|
||||
$contents2 = file_get_contents('./scripts/thisrun.txt');
|
||||
|
||||
exec("sudo systemctl restart birdnet_recording.service");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["LogLevel_SpectrogramViewerService"])) {
|
||||
$spectrogram_viewer_service_log_level = trim($_GET["LogLevel_SpectrogramViewerService"]);
|
||||
|
||||
//If setting exists change it's value
|
||||
if (array_key_exists('LogLevel_SpectrogramViewerService', $config)) {
|
||||
//Setting exists already, see if the value changed
|
||||
if (strcmp($spectrogram_viewer_service_log_level, $config['LogLevel_SpectrogramViewerService']) !== 0) {
|
||||
$contents = preg_replace("/LogLevel_SpectrogramViewerService=.*/", "LogLevel_SpectrogramViewerService=\"$spectrogram_viewer_service_log_level\"", $contents);
|
||||
$contents2 = preg_replace("/LogLevel_SpectrogramViewerService=.*/", "LogLevel_SpectrogramViewerService=\"$spectrogram_viewer_service_log_level\"", $contents2);
|
||||
$fh = fopen("/etc/birdnet/birdnet.conf", "w");
|
||||
$fh2 = fopen("./scripts/thisrun.txt", "w");
|
||||
fwrite($fh, $contents);
|
||||
fwrite($fh2, $contents2);
|
||||
sleep(1);
|
||||
exec("sudo systemctl restart spectrogram_viewer.service");
|
||||
}
|
||||
} else {
|
||||
//Create the setting in the setting file - same as what update_birdnet_snippets.sh does but will take the users selected log level as the value
|
||||
shell_exec('sudo echo "LogLevel_SpectrogramViewerService=\"' . $spectrogram_viewer_service_log_level . '\"" >> /etc/birdnet/birdnet.conf');
|
||||
//also update this run txt file
|
||||
shell_exec('sudo echo "LogLevel_SpectrogramViewerService=\"' . $spectrogram_viewer_service_log_level . '\"" >> ./scripts/thisrun.txt');
|
||||
|
||||
//Reload the config files as we've changed the contents, we need to make sure the contents of the existing variables reflects contents of the config file
|
||||
sleep(1);
|
||||
$contents = file_get_contents('/etc/birdnet/birdnet.conf');
|
||||
$contents2 = file_get_contents('./scripts/thisrun.txt');
|
||||
|
||||
exec("sudo systemctl restart spectrogram_viewer.service");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["LogLevel_LiveAudioStreamService"])) {
|
||||
$livestream_audio_service_log_level = trim($_GET["LogLevel_LiveAudioStreamService"]);
|
||||
|
||||
//If setting exists change it's value
|
||||
if (array_key_exists('LogLevel_LiveAudioStreamService', $config)) {
|
||||
//Setting exists already, see if the value changed
|
||||
if (strcmp($livestream_audio_service_log_level, $config['LogLevel_LiveAudioStreamService']) !== 0) {
|
||||
$contents = preg_replace("/LogLevel_LiveAudioStreamService=.*/", "LogLevel_LiveAudioStreamService=\"$livestream_audio_service_log_level\"", $contents);
|
||||
$contents2 = preg_replace("/LogLevel_LiveAudioStreamService=.*/", "LogLevel_LiveAudioStreamService=\"$livestream_audio_service_log_level\"", $contents2);
|
||||
//Write the settings to the config files, so we can restart the relevant services
|
||||
$fh = fopen("/etc/birdnet/birdnet.conf", "w");
|
||||
$fh2 = fopen("./scripts/thisrun.txt", "w");
|
||||
fwrite($fh, $contents);
|
||||
fwrite($fh2, $contents2);
|
||||
sleep(1);
|
||||
exec("sudo systemctl restart livestream.service && sudo systemctl restart icecast2.service");
|
||||
}
|
||||
} else {
|
||||
//Create the setting in the setting file - same as what update_birdnet_snippets.sh does but will take the users selected log level as the value
|
||||
shell_exec('sudo echo "LogLevel_LiveAudioStreamService=\"' . $livestream_audio_service_log_level . '\"" >> /etc/birdnet/birdnet.conf');
|
||||
//also update this run txt file
|
||||
shell_exec('sudo echo "LogLevel_LiveAudioStreamService=\"' . $livestream_audio_service_log_level . '\"" >> ./scripts/thisrun.txt');
|
||||
|
||||
//Reload the config files as we've changed the contents, we need to make sure the contents of the existing variables reflects contents of the config file
|
||||
sleep(1);
|
||||
$contents = file_get_contents('/etc/birdnet/birdnet.conf');
|
||||
$contents2 = file_get_contents('./scripts/thisrun.txt');
|
||||
|
||||
exec("sudo systemctl restart livestream.service && sudo systemctl restart icecast2.service");
|
||||
}
|
||||
}
|
||||
|
||||
//Finally write the data out. some sections do this themselves in order to have the new settings ready for the services that will be restarted
|
||||
//but will doubly ensure the settings are saved after any modification
|
||||
$fh = fopen('/etc/birdnet/birdnet.conf', "w");
|
||||
$fh2 = fopen("./scripts/thisrun.txt", "w");
|
||||
fwrite($fh, $contents);
|
||||
fwrite($fh2, $contents2);
|
||||
}
|
||||
|
||||
$user = trim(shell_exec("awk -F: '/1000/{print $1}' /etc/passwd"));
|
||||
@@ -288,57 +384,6 @@ if (file_exists('./scripts/thisrun.txt')) {
|
||||
output.innerHTML = this.value;
|
||||
document.getElementById("predictionCount").innerHTML = parseInt((this.value * <?php echo $count; ?>)/100);
|
||||
}
|
||||
//Keep track of how many new input fields were added
|
||||
var number_of_new_rtsp_urls_added = 0;
|
||||
//Function to insert new input fields
|
||||
function addNewrtspInput() {
|
||||
//Find the placeholder input field
|
||||
var url_template_element = document.getElementById('rtsp_stream_url_placeholder');
|
||||
var new_url_input_template = url_template_element.cloneNode();
|
||||
var br_seperator = document.createElement("BR");
|
||||
|
||||
//Fix up the new element so it's visible, set the style so it's sligned correctly
|
||||
new_url_input_template.setAttribute("id", "rtsp_stream_url_new_" + number_of_new_rtsp_urls_added);
|
||||
new_url_input_template.setAttribute("name", "rtsp_stream_new_" + number_of_new_rtsp_urls_added);
|
||||
new_url_input_template.removeAttribute("style");
|
||||
|
||||
//Insert the new input field before the button to add new urls
|
||||
var newrtspstream_button = document.getElementById('newrtspstream_button_container');
|
||||
//Insert the new input element before the newrtspstream button
|
||||
newrtspstream_button.parentNode.insertBefore(new_url_input_template, newrtspstream_button);
|
||||
//Add a separator before the button
|
||||
newrtspstream_button.parentNode.insertBefore(br_seperator, newrtspstream_button);
|
||||
|
||||
//Increment the counter
|
||||
number_of_new_rtsp_urls_added++;
|
||||
}
|
||||
|
||||
var rtsp_stream_string = "";
|
||||
var rtsp_stream_string_array = [];
|
||||
//Collect all the rtsp urls that have been set, concat them into a single string and set it into the rtsp_stream input field so it gets saved
|
||||
function collectrtspUrls() {
|
||||
//Reset the array and string so we don't get duplicates
|
||||
rtsp_stream_string = "";
|
||||
rtsp_stream_string_array = [];
|
||||
|
||||
//Get the inputs by name (which is similar across
|
||||
var existing_rtsp_stream_urls = document.querySelectorAll('[name^="rtsp_stream_"]');
|
||||
//Loop over the result and get the values
|
||||
for (let i = 0; i < existing_rtsp_stream_urls.length; i++) {
|
||||
//Only collect results that re not empty and add them to the array
|
||||
if (existing_rtsp_stream_urls[i].value !== 'undefined' && existing_rtsp_stream_urls[i].value !== "") {
|
||||
rtsp_stream_string_array.push(existing_rtsp_stream_urls[i].value.trim());
|
||||
}
|
||||
}
|
||||
|
||||
//if the array is not empty, then implode the array joining all the values by a comma
|
||||
if (rtsp_stream_string_array.length !== 0) {
|
||||
rtsp_stream_string = rtsp_stream_string_array.join(',');
|
||||
//Locate the hidden rtsp_stream input field that we'll populate with the full string which will get saved to the config file
|
||||
var rtsp_stream_input = document.querySelector('[name=rtsp_stream]');
|
||||
rtsp_stream_input.setAttribute('value',rtsp_stream_string);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<p>If a Human is predicted anywhere among the top <span id="predictionCount"><?php echo $newconfig['PRIVACY_THRESHOLD'] == 0 ? "threshold % of" : intval(($newconfig['PRIVACY_THRESHOLD'] * $count)/100); ?></span> predictions, the sample will be considered of human origin and no data will be collected. Start with 1% and move up as needed.</p>
|
||||
</td></tr></table><br>
|
||||
@@ -408,6 +453,61 @@ foreach($formats as $format){
|
||||
<br>
|
||||
<span id="newrtspstream" onclick="addNewrtspInput();">Add</span><br>
|
||||
</div>
|
||||
<script>
|
||||
//Keep track of how many new input fields were added
|
||||
var number_of_new_rtsp_urls_added = 0;
|
||||
|
||||
//Function to insert new input fields
|
||||
function addNewrtspInput() {
|
||||
//Find the placeholder input field
|
||||
var url_template_element = document.getElementById('rtsp_stream_url_placeholder');
|
||||
var new_url_input_template = url_template_element.cloneNode();
|
||||
var br_seperator = document.createElement("BR");
|
||||
|
||||
//Fix up the new element so it's visible, set the style so it's sligned correctly
|
||||
new_url_input_template.setAttribute("id", "rtsp_stream_url_new_" + number_of_new_rtsp_urls_added);
|
||||
new_url_input_template.setAttribute("name", "rtsp_stream_new_" + number_of_new_rtsp_urls_added);
|
||||
new_url_input_template.removeAttribute("style");
|
||||
|
||||
//Insert the new input field before the button to add new urls
|
||||
var newrtspstream_button = document.getElementById('newrtspstream_button_container');
|
||||
//Insert the new input element before the newrtspstream button
|
||||
newrtspstream_button.parentNode.insertBefore(new_url_input_template, newrtspstream_button);
|
||||
//Add a separator before the button
|
||||
newrtspstream_button.parentNode.insertBefore(br_seperator, newrtspstream_button);
|
||||
|
||||
//Increment the counter
|
||||
number_of_new_rtsp_urls_added++;
|
||||
}
|
||||
|
||||
var rtsp_stream_string = "";
|
||||
var rtsp_stream_string_array = [];
|
||||
|
||||
//Collect all the rtsp urls that have been set, concat them into a single string and set it into the rtsp_stream input field so it gets saved
|
||||
function collectrtspUrls() {
|
||||
//Reset the array and string so we don't get duplicates
|
||||
rtsp_stream_string = "";
|
||||
rtsp_stream_string_array = [];
|
||||
|
||||
//Get the inputs by name (which is similar across
|
||||
var existing_rtsp_stream_urls = document.querySelectorAll('[name^="rtsp_stream_"]');
|
||||
//Loop over the result and get the values
|
||||
for (let i = 0; i < existing_rtsp_stream_urls.length; i++) {
|
||||
//Only collect results that re not empty and add them to the array
|
||||
if (existing_rtsp_stream_urls[i].value !== 'undefined' && existing_rtsp_stream_urls[i].value !== "") {
|
||||
rtsp_stream_string_array.push(existing_rtsp_stream_urls[i].value.trim());
|
||||
}
|
||||
}
|
||||
|
||||
//if the array is not empty, then implode the array joining all the values by a comma
|
||||
if (rtsp_stream_string_array.length !== 0) {
|
||||
rtsp_stream_string = rtsp_stream_string_array.join(',');
|
||||
//Locate the hidden rtsp_stream input field that we'll populate with the full string which will get saved to the config file
|
||||
var rtsp_stream_input = document.querySelector('[name=rtsp_stream]');
|
||||
rtsp_stream_input.setAttribute('value', rtsp_stream_string);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<p>If you place an RTSP stream URL here, BirdNET-Pi will use that as its audio source.<br>Multiple streams are allowed but may have a impact on rPi performance.<br>Analyze ffmpeg CPU/Memory usage with <b>top</b> or <b>htop</b> if necessary.<br>To remove all and use the soundcard again, just delete the RTSP entries and click Save at the bottom.</p>
|
||||
</td></tr></table><br>
|
||||
<table class="settingstable"><tr><td>
|
||||
@@ -505,7 +605,85 @@ foreach($formats as $format){
|
||||
<input name="freqshift_pitch" type="number" min="-4000" max="4000" step="1" value="<?php print($newconfig['FREQSHIFT_PITCH']);?>" required/><br>
|
||||
</p>
|
||||
</td></tr></table><br>
|
||||
</p>
|
||||
|
||||
<table class="settingstable">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>Logging</h2>
|
||||
<div class="callout callout-warning">
|
||||
<b>Note:</b>
|
||||
It is recommended that the Log Level be set to <b>Error</b> on production systems to keep output
|
||||
manageable, by only reporting errors.
|
||||
<br>
|
||||
Not all components support the log level option at this time.
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Birdnet Recording:
|
||||
<select id="LogLevel_BirdnetRecordingService" name="LogLevel_BirdnetRecordingService">
|
||||
<option value="error" <?php echo $newconfig['LogLevel_BirdnetRecordingService'] == "error" || !array_key_exists('LogLevel_BirdnetRecordingService', $newconfig) ? "selected=''" : "" ?>>
|
||||
Errors Only
|
||||
</option>
|
||||
<option value="warning" <?php echo $newconfig['LogLevel_BirdnetRecordingService'] == "warning" ? "selected=''" : "" ?>>
|
||||
Warning
|
||||
</option>
|
||||
<option value="info" <?php echo $newconfig['LogLevel_BirdnetRecordingService'] == "info" ? "selected=''" : "" ?>>
|
||||
Info
|
||||
</option>
|
||||
<option value="debug" <?php echo $newconfig['LogLevel_BirdnetRecordingService'] == "debug" ? "selected=''" : "" ?>>
|
||||
Debug
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Live Audio Stream:
|
||||
<select id="LogLevel_LiveAudioStreamService" name="LogLevel_LiveAudioStreamService">
|
||||
<option value="error" <?php echo $newconfig['LogLevel_LiveAudioStreamService'] == "error" || !array_key_exists('LogLevel_LiveAudioStreamService', $newconfig) ? "selected=''" : "" ?>>
|
||||
Errors Only
|
||||
</option>
|
||||
<option value="warning" <?php echo $newconfig['LogLevel_LiveAudioStreamService'] == "warning" ? "selected=''" : "" ?>>
|
||||
Warning
|
||||
</option>
|
||||
<option value="info" <?php echo $newconfig['LogLevel_LiveAudioStreamService'] == "info" ? "selected=''" : "" ?>>
|
||||
Info
|
||||
</option>
|
||||
<option value="debug" <?php echo $newconfig['LogLevel_LiveAudioStreamService'] == "debug" ? "selected=''" : "" ?>>
|
||||
Debug
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Spectrogram Service:
|
||||
<select id="LogLevel_SpectrogramViewerService" name="LogLevel_SpectrogramViewerService">
|
||||
<option value="error" <?php echo $newconfig['LogLevel_SpectrogramViewerService'] == "error" || !array_key_exists('LogLevel_SpectrogramViewerService', $newconfig) ? "selected=''" : "" ?>>
|
||||
Errors Only
|
||||
</option>
|
||||
<option value="warning" <?php echo $newconfig['LogLevel_SpectrogramViewerService'] == "warning" ? "selected=''" : "" ?>>
|
||||
Warning
|
||||
</option>
|
||||
<option value="info" <?php echo $newconfig['LogLevel_SpectrogramViewerService'] == "info" ? "selected=''" : "" ?>>
|
||||
Info
|
||||
</option>
|
||||
<option value="debug" <?php echo $newconfig['LogLevel_SpectrogramViewerService'] == "debug" ? "selected=''" : "" ?>>
|
||||
Debug
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<small>
|
||||
<b>'error'</b> - Show all errors, including ones which can be recovered from. <b>This is the default value.</b><br>
|
||||
<b>'warning'</b> - Show all warnings and errors. Any message related to possibly incorrect or unexpected events will be shown.<br>
|
||||
<b>'info'</b> - Show informative messages and output during processing. This is in addition to warnings and errors. This will produce more output, use this for initial debugging.<br>
|
||||
<b>'debug'</b> - Show everything, including debugging information. Produces a lot of output.<br>
|
||||
</small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<input type="hidden" name="view" value="Advanced">
|
||||
<button onclick="if(<?php print($newconfig['PRIVACY_THRESHOLD']);?> != document.getElementById('privacy_threshold').value){return confirm('This will take about 90 seconds.')} collectrtspUrls();" type="submit" name="submit" value="advanced">
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
# Performs the recording from the specified RTSP stream or soundcard
|
||||
#set -x
|
||||
source /etc/birdnet/birdnet.conf
|
||||
|
||||
# Set the logging level
|
||||
LOGGING_LEVEL='error'
|
||||
# Read the logging level from the configuration option
|
||||
LOGGING_LEVEL="${LogLevel_BirdnetRecordingService}"
|
||||
# If empty for some reason default to log level of error
|
||||
[ -z $LOGGING_LEVEL ] && LOGGING_LEVEL='error'
|
||||
# Additionally if we're at debug or info level then allow printing of script commands and variables
|
||||
if [ "$LOGGING_LEVEL" == "info" ] || [ "$LOGGING_LEVEL" == "debug" ];then
|
||||
# Enable printing of commands/variables etc to terminal for debugging
|
||||
set -x
|
||||
fi
|
||||
|
||||
[ -z $RECORDING_LENGTH ] && RECORDING_LENGTH=15
|
||||
|
||||
@@ -26,7 +32,7 @@ if [ ! -z $RTSP_STREAM ];then
|
||||
# Loop over the streams
|
||||
for i in "${RTSP_STREAMS_EXPLODED_ARRAY[@]}"
|
||||
do
|
||||
# Map id used to map input to output, this is 0 based in ffmpeg decrement
|
||||
# Map id used to map input to output (first stream being 0), this is 0 based in ffmpeg so decrement our counter (which is more human readable) by 1
|
||||
MAP_ID=$((RTSP_STREAMS_STARTED_COUNT-1))
|
||||
# Build up the parameters to process the RSTP stream, including mapping for the output
|
||||
FFMPEG_PARAMS+="-vn -thread_queue_size 512 -i ${i} -map ${MAP_ID}:a:0 -t ${RECORDING_LENGTH} -acodec pcm_s16le -ac 2 -ar 48000 file:${RECS_DIR}/StreamData/$(date "+%F")-birdnet-RTSP_${RTSP_STREAMS_STARTED_COUNT}-$(date "+%H:%M:%S").wav "
|
||||
@@ -34,7 +40,7 @@ if [ ! -z $RTSP_STREAM ];then
|
||||
((RTSP_STREAMS_STARTED_COUNT += 1))
|
||||
done
|
||||
|
||||
# Make sure were passing something valid to ffmpeg, ffmpeg will run interactive and control our look by waiting ${RECORDING_LENGTH} between loops
|
||||
# Make sure were passing something valid to ffmpeg, ffmpeg will run interactive and control our loop by waiting ${RECORDING_LENGTH} between loops because it will stop once that much has been recorded
|
||||
if [ -n "$FFMPEG_PARAMS" ];then
|
||||
ffmpeg -hide_banner -loglevel $LOGGING_LEVEL -nostdin $FFMPEG_PARAMS
|
||||
fi
|
||||
|
||||
@@ -2,8 +2,15 @@
|
||||
# Live Audio Stream Service Script
|
||||
source /etc/birdnet/birdnet.conf
|
||||
|
||||
# Set logging level
|
||||
LOGGING_LEVEL='error'
|
||||
# Read the logging level from the configuration option
|
||||
LOGGING_LEVEL="${LogLevel_LiveAudioStreamService}"
|
||||
# If empty for some reason default to log level of error
|
||||
[ -z $LOGGING_LEVEL ] && LOGGING_LEVEL='error'
|
||||
# Additionally if we're at debug or info level then allow printing of script commands and variables
|
||||
if [ "$LOGGING_LEVEL" == "info" ] || [ "$LOGGING_LEVEL" == "debug" ];then
|
||||
# Enable printing of commands/variables etc to terminal for debugging
|
||||
set -x
|
||||
fi
|
||||
|
||||
if [ -z ${REC_CARD} ];then
|
||||
echo "Stream not supported"
|
||||
|
||||
+10
-1
@@ -1,8 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
# set -x
|
||||
# Make sox spectrogram
|
||||
source /etc/birdnet/birdnet.conf
|
||||
|
||||
# Read the logging level from the configuration option
|
||||
LOGGING_LEVEL="${LogLevel_SpectrogramViewerService}"
|
||||
# If empty for some reason default to log level of error
|
||||
[ -z $LOGGING_LEVEL ] && LOGGING_LEVEL='error'
|
||||
# Additionally if we're at debug or info level then allow printing of script commands and variables
|
||||
if [ "$LOGGING_LEVEL" == "info" ] || [ "$LOGGING_LEVEL" == "debug" ];then
|
||||
# Enable printing of commands/variables etc to terminal for debugging
|
||||
set -x
|
||||
fi
|
||||
|
||||
# Time to sleep between generating spectrogram's, default set the recording length
|
||||
# To try catch the spectrogram as soon as possible run at a smaller intervals
|
||||
SLEEP_DELAY=$((RECORDING_LENGTH / 4))
|
||||
|
||||
@@ -199,6 +199,19 @@ suntime_installation_status=$(~/BirdNET-Pi/birdnet/bin/python3 -c 'import pkguti
|
||||
if [[ "$suntime_installation_status" = "not installed" ]];then
|
||||
$HOME/BirdNET-Pi/birdnet/bin/pip3 install -U pip
|
||||
$HOME/BirdNET-Pi/birdnet/bin/pip3 install suntime
|
||||
|
||||
|
||||
# For new Advanced Setting Logging level options
|
||||
if ! grep LogLevel_BirdnetRecordingService /etc/birdnet/birdnet.conf &>/dev/null;then
|
||||
sudo -u$USER echo "LogLevel_BirdnetRecordingService=\"error\"" >> /etc/birdnet/birdnet.conf
|
||||
fi
|
||||
|
||||
if ! grep LogLevel_LiveAudioStreamService /etc/birdnet/birdnet.conf &>/dev/null;then
|
||||
sudo -u$USER echo "LogLevel_LiveAudioStreamService=\"error\"" >> /etc/birdnet/birdnet.conf
|
||||
fi
|
||||
|
||||
if ! grep LogLevel_SpectrogramViewerService /etc/birdnet/birdnet.conf &>/dev/null;then
|
||||
sudo -u$USER echo "LogLevel_SpectrogramViewerService=\"error\"" >> /etc/birdnet/birdnet.conf
|
||||
fi
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
Reference in New Issue
Block a user