#!/usr/bin/with-contenv bashio # -*- bash -*- # shellcheck shell=bash set -e # Database things DATABASE_HOST=$(bashio::config 'database_host') DATABASE_NAME=$(bashio::config 'database_name') DATABASE_PASS=$(bashio::config 'database_pass') DATABASE_PORT=$(bashio::config 'database_port') DATABASE_USER=$(bashio::config 'database_user') # MQTT things DISABLE_MQTT=$(bashio::config 'disable_mqtt') MQTT_HOST=$(bashio::config 'mqtt_host') MQTT_NAMESPACE=$(bashio::config 'mqtt_namespace') MQTT_PASSWORD=$(bashio::config 'mqtt_pass') MQTT_TLS_ACCEPT_INVALID_CERTS=$(bashio::config 'mqtt_tls_accept_invalid_certs') MQTT_TLS=$(bashio::config 'mqtt_tls') MQTT_USERNAME=$(bashio::config 'mqtt_user') # Other things IMPORT_DIR=$(bashio::config 'import_dir') PORT=4000 TZ=$(bashio::config 'timezone') DEFAULT_GEOFENCE=$(bashio::config 'default_geofence') encryption_key=$(bashio::config 'encryption_key') if bashio::config.is_empty 'encryption_key'; then encryption_key=$(openssl rand -hex 32) bashio::addon.option 'encryption_key' "$encryption_key" fi ENCRYPTION_KEY=$(bashio::config 'encryption_key') ingress_entry=$(curl -X GET \ -H "Authorization: Bearer ${SUPERVISOR_TOKEN}" \ -H "Content-Type: application/json" \ -s http://supervisor/addons/self/info | \ jq -r '.data.ingress_entry') export URL_PATH=$ingress_entry export DATABASE_HOST DATABASE_NAME DATABASE_PASS DATABASE_PORT DATABASE_USER \ DISABLE_MQTT MQTT_HOST MQTT_NAMESPACE MQTT_PASSWORD MQTT_TLS_ACCEPT_INVALID_CERTS \ MQTT_TLS MQTT_USERNAME IMPORT_DIR PORT TZ DEFAULT_GEOFENCE ENCRYPTION_KEY URL_PATH # Import dashboards if bashio::config.true 'grafana_import_dashboards'; then /dashboards.sh restore fi # Create the PostgreSQL database if it doesn't exist if pg_isready -h "$DATABASE_HOST" -p "$DATABASE_PORT" > /dev/null 2>&1; then bashio::log.info "Creating database '$DATABASE_NAME' on $DATABASE_HOST" if [[ -n $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "\list $DATABASE_NAME") ]]; then bashio::log.info "Database $DATABASE_NAME already exists" else if PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -qc "CREATE DATABASE \"$DATABASE_NAME\""; then bashio::log.info "Database $DATABASE_NAME created" else bashio::log.error "Failed to create database $DATABASE_NAME" exit 1 fi fi else bashio::log.error "PostgreSQL at '$DATABASE_HOST' is not ready or unreachable" exit 1 fi ulimit -n 1048576 bashio::log.info "Starting TeslaMate" cd /opt/app exec $(/usr/bin/env sh) /entrypoint.sh bin/teslamate start