Prep for TeslaMate v2 update (#91)

* Prep docs for v2

* Add pg version check

* Import dashboards after DB

* Assume compatible

* Emphasis version

* Use 2 spaces for ident

* Improve logging
This commit is contained in:
Colin Seymour
2025-07-06 09:13:44 +01:00
committed by GitHub
parent 9d0729c9bf
commit 562fd279b0
4 changed files with 132 additions and 96 deletions
+36 -13
View File
@@ -52,14 +52,30 @@ for env_var in $(bashio::config 'env_vars|keys'); do
export "${name}=${value}"
done
# Import dashboards
if bashio::config.true 'grafana_import_dashboards'; then
/dashboards.sh restore || bashio::log.error "Failed to import dashboards"
fi
# Create the PostgreSQL database if it doesn't exist
bashio::log.info "Checking for database '$DATABASE_NAME' on $DATABASE_HOST"
if pg_isready -h "$DATABASE_HOST" -p "$DATABASE_PORT" > /dev/null 2>&1; then
bashio::log.info "Checking for database '$DATABASE_NAME' on $DATABASE_HOST"
# Check the version of PostgreSQL database is v16.7 or later or v17.3 or later
pg_version=$(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "SELECT regexp_replace(version(), 'PostgreSQL ([^ ]+) .*', '\\1') AS version")
major_version=$(echo "$pg_version" | cut -d '.' -f 1)
minor_version=$(echo "$pg_version" | cut -d '.' -f 2)
compat=true
case "$major_version" in
16)
[[ "$minor_version" -lt 7 ]] && compat=false
;;
17)
[[ "$minor_version" -lt 3 ]] && compat=false
;;
*)
[[ "$major_version" -lt 16 ]] && compat=false
;;
esac
if [ $compat = false ]; then
bashio::log.error "PostgreSQL version $pg_version is not supported. Please upgrade to v16.7 or later or v17.3 or later."
exit 1
fi
if [[ -n $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "SELECT datname FROM pg_database WHERE datname = '$DATABASE_NAME'") ]]; then
bashio::log.info "Database $DATABASE_NAME already exists"
@@ -76,19 +92,26 @@ else
exit 1
fi
# Import dashboards
if bashio::config.true 'grafana_import_dashboards'; then
bashio::log.info "Importing Grafana dashboards..."
/dashboards.sh restore || bashio::log.error "Failed to import dashboards"
fi
if [[ -z $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" "$DATABASE_NAME" -Atqc "SELECT 1 FROM settings WHERE base_url LIKE '%api/hassio_ingress%'" 2> /dev/null ) ]]; then
teslamate_ingress=$(bashio::addon.ingress_entry)
grafana_ingress=$(bashio::addon.ingress_entry $(bashio::supervisor.addons | grep grafana))
grafana_ingress=$(bashio::addon.ingress_entry "$(bashio::supervisor.addons | grep grafana)")
if [[ "$teslamate_ingress" == "$grafana_ingress" ]]; then
grafana_ingress="** Grafana addon not found. Ensure the addon is installed and running. **"
fi
bashio::log.info "Configure TeslaMate settings by adding these values
to the URL you use to access your Home Assistant instance:
=> Web App: $teslamate_ingress
=> Dashboards: $grafana_ingress
"
bashio::log.notice ""
bashio::log.notice "Configure TeslaMate settings by adding these values"
bashio::log.notice "to the URL you use to access your Home Assistant instance:"
bashio::log.notice ""
bashio::log.notice "=> Web App: $teslamate_ingress"
bashio::log.notice "=> Dashboards: $grafana_ingress"
bashio::log.notice ""
fi
ulimit -n 1048576