Skip to content

Commit

Permalink
Improve timezone handling
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbelgium authored Oct 5, 2024
1 parent 210d1fd commit 76220af
Showing 1 changed file with 42 additions and 51 deletions.
93 changes: 42 additions & 51 deletions birdnet-pi/rootfs/etc/cont-init.d/99-run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,67 +6,58 @@ set -e
# SET SYSTEM #
##############

echo " "
bashio::log.info "Setting password for the user pi"
echo "pi:$(bashio::config "pi_password")" | sudo chpasswd
echo "... done"
echo "pi:$(bashio::config "pi_password")" | chpasswd
bashio::log.info "Password set successfully for user pi."

echo " "
bashio::log.info "Starting system services"
bashio::log.info "Setting timezone :"

# Set TZ
# Use timezone defined in add-on options if available
if bashio::config.has_value 'TZ'; then
TIMEZONE=$(bashio::config 'TZ')
echo "... setting timezone to $TIMEZONE"
ln -snf /usr/share/zoneinfo/"$TIMEZONE" /etc/localtime
echo "$TIMEZONE" >/etc/timezone
fi || (bashio::log.fatal "Error : $TIMEZONE not found. Here is a list of valid timezones : https://manpages.ubuntu.com/manpages/focal/man3/DateTime::TimeZone::Catalog.3pm.html")

# Correcting systemctl
echo "... correcting systemctl"
mv /helpers/systemctl3.py /bin/systemctl
chmod a+x /bin/systemctl

# Correcting systemctl
echo "... correcting datetimectl"
mv /helpers/timedatectl /usr/bin/timedatectl
chmod a+x /usr/bin/timedatectl

# Correct language labels
export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"
# Saving default of en
cp "$HOME"/BirdNET-Pi/model/labels.txt "$HOME"/BirdNET-Pi/model/labels.bak
# Adapt to new language
echo "... adapting labels according to birdnet.conf file to $DATABASE_LANG"
/."$HOME"/BirdNET-Pi/scripts/install_language_label_nm.sh -l "$DATABASE_LANG"
TZ_VALUE="$(bashio::config 'TZ')"
if timedatectl set-timezone "$TZ_VALUE"; then
echo "... timezone set to $TZ_VALUE as defined in add-on options (BirdNET config ignored)."
else
bashio::log.warning "Couldn't set timezone to $TZ_VALUE. Refer to the list of valid timezones: https://manpages.ubuntu.com/manpages/focal/man3/DateTime::TimeZone::Catalog.3pm.html"
timedatectl set-ntp true &>/dev/null
fi
# Use BirdNET-defined timezone if no add-on option is provided
elif [ -f /data/timezone ]; then
BIRDN_CONFIG_TZ="$(cat /data/timezone)"
timedatectl set-ntp false &>/dev/null
if timedatectl set-timezone "$BIRDN_CONFIG_TZ"; then
echo "... set to $BIRDN_CONFIG_TZ as defined in BirdNET config."
else
bashio::log.warning "Couldn't set timezone to $BIRDN_CONFIG_TZ. Reverting to automatic timezone."
timedatectl set-ntp true &>/dev/null
fi
# Fallback to automatic timezone if no manual settings are found
else
if timedatectl set-ntp true &>/dev/null; then
bashio::log.info "... automatic timezone enabled."
else
bashio::log.fatal "Couldn't set automatic timezone! Please set a manual one from the options."
fi
fi

echo "... starting cron"
systemctl start cron
bashio::log.info "Starting system services"

# Starting dbus
echo "... starting dbus"
service dbus start
bashio::log.info "Starting cron service"
systemctl start cron >/dev/null

# Starting journald
# echo "... starting journald"
# systemctl start systemd-journald
bashio::log.info "Starting dbus service"
service dbus start >/dev/null

# Starting services
echo ""
bashio::log.info "Starting BirdNET-Pi services"
chmod +x "$HOME"/BirdNET-Pi/scripts/restart_services.sh
"$HOME"/BirdNET-Pi/scripts/restart_services.sh
chmod +x "$HOME/BirdNET-Pi/scripts/restart_services.sh" >/dev/null
"$HOME/BirdNET-Pi/scripts/restart_services.sh" >/dev/null

# Start livestream services if enabled in configuration
if bashio::config.true LIVESTREAM_BOOT_ENABLED; then
echo "... starting livestream"
sudo systemctl enable icecast2
sudo systemctl start icecast2.service
sudo systemctl enable --now livestream.service
echo "... starting livestream services"
systemctl enable icecast2 >/dev/null
systemctl start icecast2.service >/dev/null
systemctl enable --now livestream.service >/dev/null
fi

# Correct the phpsysinfo for the correct gotty service
gottyservice="$(pgrep -l "gotty" | awk '{print $NF}' | head -n 1)"
echo "... using $gottyservice in phpsysinfo"
sed -i "s/,gotty,/,${gottyservice:-gotty},/g" "$HOME"/BirdNET-Pi/templates/phpsysinfo.ini

echo " "
bashio::log.info "Setup complete."

0 comments on commit 76220af

Please sign in to comment.