mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-04-17 12:49:09 +02:00
birdnet-pipy: remove TZ option — timezone auto-derived from station location
The app derives its timezone from station lat/lng via timezonefinder (Settings → Location in the Web UI), so a separate addon-level TZ only ever created mismatch with the UI-derived zone. All app-facing timestamps (dashboard, API, DB) and Python service stdout (api/main/birdnet) already honor the UI zone via logging_config.py's formatter, and the frontend log viewer re-converts Icecast timestamps on read. Net effect in the HA addon log pane: Python services still show the correct local time; only Icecast's raw stdout now prints in UTC (accepted trade for a single source of truth). Deletes rootfs/etc/cont-init.d/02-timezone.sh added in 0.5.6-2. Also cleans up the options YAML in DOCS.md/README.md: drops RECORDING_MODE and RTSP_URL (never wired — app reads them from user_settings.json), drops http_stream from the modes list, and moves STREAM_BITRATE under an env_vars: example since it's honored by start-icecast.sh but not a schema option. Bumped to 0.6.3-2 (addon-only, no upstream app change).
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
## 0.6.3-2 (2026-04-15)
|
||||
- Remove the `TZ` add-on option. Application timezone is now auto-derived in the Web UI from the station location (latitude/longitude) via `timezonefinder`, so a separately-configured container `TZ` only ever duplicated — and occasionally conflicted with — the UI-derived zone. All app-facing timestamps (dashboard, API responses, database) and Python service stdout (`api`/`main`/`birdnet`) already honor the UI-derived zone via the logging formatter; the frontend log viewer also re-converts Icecast timestamps on read. Net effect in the HA addon log pane: Python logs keep their local-time timestamps; only Icecast's raw stdout now prints in UTC — an intentional trade for a single source of truth. Deletes the now-redundant `rootfs/etc/cont-init.d/02-timezone.sh` added in 0.5.6-2.
|
||||
- Clean up the options YAML in DOCS.md and README.md. Removed `RECORDING_MODE` and `RTSP_URL` — these were documented as addon options but never wired: the app reads them from `user_settings.json` (configured via the Web UI), not from env vars. Also dropped `http_stream` from the list of modes (only `pulseaudio` and `rtsp` remain in `backend/config/constants.py`). Moved `STREAM_BITRATE` under an `env_vars:` example since it's honored by `start-icecast.sh` but has never been a first-class option in the schema.
|
||||
|
||||
## 0.6.3 (2026-04-13)
|
||||
- Simplify ingress nginx to a single `<base href>` rewrite. Upstream now declares `<base href="/">` in `index.html` with Vite `base: './'` and uses relative paths for all internal URLs (built assets, axios `baseURL`, socket.io `path`). The previous seven `sub_filter` rules (href/src/`/api`/`/socket.io`) are no longer needed — one `<base href>` replacement is sufficient.
|
||||
- Removes incidental brittleness from byte-level `sub_filter` matches in minified JS bundles (the old `/stream/` rule had inadvertently double-prefixed the literal `api.get("/stream/config")` string).
|
||||
|
||||
@@ -15,14 +15,13 @@
|
||||
## Options
|
||||
|
||||
```yaml
|
||||
TZ: Europe/Paris # Timezone, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
ICECAST_PASSWORD: "" # Optional: set a persistent password for the audio stream
|
||||
STREAM_BITRATE: 320k # Bitrate for the mp3 stream
|
||||
RECORDING_MODE: rtsp # pulseaudio | http_stream | rtsp
|
||||
RTSP_URL: "" # Required if RECORDING_MODE is rtsp
|
||||
data_location: /config/data # Persistent data location for BirdNET-PiPy
|
||||
ICECAST_PASSWORD: "" # Optional: persistent password for the Icecast audio stream
|
||||
data_location: /config/data # Persistent data location (under /config, /share, or /data)
|
||||
env_vars: # Optional: extra environment variables
|
||||
- name: STREAM_BITRATE
|
||||
value: 320k # Icecast mp3 stream bitrate (default 320k)
|
||||
```
|
||||
|
||||
## Audio
|
||||
|
||||
The add-on expects audio via PulseAudio (default) or an RTSP stream configured in the BirdNET-PiPy settings.
|
||||
The add-on expects audio via PulseAudio (default) or an RTSP stream. Pick the source in the BirdNET-PiPy Web UI under **Settings → Audio** after the add-on first starts.
|
||||
|
||||
@@ -25,12 +25,11 @@ Options can be configured through three ways:
|
||||
- Add-on options
|
||||
|
||||
```yaml
|
||||
TZ: Etc/UTC # Timezone, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
ICECAST_PASSWORD: "" # Optional: set a persistent password for the audio stream
|
||||
STREAM_BITRATE: 320k # Bitrate for the mp3 stream
|
||||
RECORDING_MODE: rtsp # pulseaudio | http_stream | rtsp
|
||||
RTSP_URL: "" # Required if RECORDING_MODE is rtsp
|
||||
data_location: /config/data # Persistent data location for BirdNET-PiPy
|
||||
ICECAST_PASSWORD: "" # Optional: persistent password for the Icecast audio stream
|
||||
data_location: /config/data # Persistent data location (under /config, /share, or /data)
|
||||
env_vars: # Optional: extra environment variables
|
||||
- name: STREAM_BITRATE
|
||||
value: 320k # Icecast mp3 stream bitrate (default 320k)
|
||||
```
|
||||
|
||||
- Config.yaml
|
||||
|
||||
@@ -73,7 +73,6 @@ name: BirdNET-PiPy
|
||||
options:
|
||||
env_vars: []
|
||||
ICECAST_PASSWORD: ''
|
||||
TZ: Europe/Paris
|
||||
data_location: /config/data
|
||||
panel_icon: mdi:bird
|
||||
ports:
|
||||
@@ -85,7 +84,6 @@ schema:
|
||||
- name: match(^[A-Za-z0-9_]+$)
|
||||
value: str?
|
||||
ICECAST_PASSWORD: str?
|
||||
TZ: str?
|
||||
certfile: str?
|
||||
cifsdomain: str?
|
||||
cifspassword: str?
|
||||
@@ -97,4 +95,4 @@ schema:
|
||||
ssl: bool?
|
||||
slug: birdnet-pipy
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pipy
|
||||
version: "0.6.3"
|
||||
version: "0.6.3-2"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -euo pipefail
|
||||
|
||||
# Use timezone defined in add-on options
|
||||
bashio::log.info "Setting timezone..."
|
||||
TZ_VALUE="$(bashio::config 'TZ' || true)"
|
||||
TZ_VALUE="${TZ_VALUE:-Europe/Paris}"
|
||||
|
||||
if [ ! -f "/usr/share/zoneinfo/${TZ_VALUE}" ]; then
|
||||
bashio::log.warning "Invalid timezone '${TZ_VALUE}'. Falling back to Europe/Paris."
|
||||
bashio::log.warning "See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for valid values."
|
||||
TZ_VALUE="Europe/Paris"
|
||||
fi
|
||||
|
||||
# Apply timezone to the container
|
||||
ln -sf "/usr/share/zoneinfo/${TZ_VALUE}" /etc/localtime
|
||||
echo "${TZ_VALUE}" > /etc/timezone
|
||||
export TZ="${TZ_VALUE}"
|
||||
sed -i "1a TZ=\"${TZ_VALUE}\"" /etc/services.d/*
|
||||
|
||||
# Update s6 container environment so child processes inherit the timezone
|
||||
if [ -d /var/run/s6/container_environment ]; then
|
||||
echo "${TZ_VALUE}" > /var/run/s6/container_environment/TZ
|
||||
fi
|
||||
|
||||
bashio::log.notice "Timezone set to: ${TZ_VALUE}"
|
||||
Reference in New Issue
Block a user