Compare commits

..
19 Commits
Author SHA1 Message Date
Colin Seymour 4567555071 Quote DB name in existance check (#43)
Quote DB name
2024-09-13 09:56:26 +01:00
Colin Seymour 694b43eb93 Only include Teslamate release notes if updated since last release (#38) 2024-08-30 13:10:24 +01:00
Colin Seymour 04e01df081 Make startup scripts robust (#37)
* Clean up file if exists and mkdir -p

* Make importing dashboards more robust

* Update info msgs
2024-08-30 12:45:36 +01:00
renovate[bot] d97377bc0e Update home-assistant/builder action to v2024.08.2 (#30)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-24 09:33:15 +01:00
Colin Seymour 0aca1dd417 Fix image URL (#33) 2024-08-24 09:32:36 +01:00
renovate[bot]andColin Seymour 556a2f23af Update softprops/action-gh-release action to v2.0.8 (#26)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Colin Seymour <colin@symr.io>
2024-08-12 06:56:30 +01:00
Colin Seymour a73430c34d Add optional env vars config option (#29)
* Add optional env vars config option

* Don't use master builder

It's borked - https://github.com/home-assistant/builder/issues/212

* Use specific builder version
2024-08-11 12:22:12 +01:00
Colin Seymour 2b40dd2668 Fix Postgres link (#28)
* Don't default to old Postgres

* Fix postgres link
2024-07-22 14:48:06 +01:00
renovate[bot] 1757ed78ff Update docker/login-action action to v3.3.0 (#27)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-22 14:31:04 +01:00
Colin Seymour f48e92dc71 Remove default Postgres configuration and add-on suggestion (#25)
Don't default to old Postgres
2024-07-18 18:05:13 +01:00
Colin Seymour 306653220b Fix renovate configuration error (#24)
Remove extra comma
2024-07-18 17:41:36 +01:00
renovate[bot]andColin Seymour 2c729d4f75 Update TeslaMate to v1.30.1 (#17)
* Update TeslaMate to v1.30.1

* Update Dockerfile

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Colin Seymour <colin@symr.io>
2024-07-18 16:26:07 +01:00
renovate[bot] 89abf45735 Update softprops/action-gh-release action to v2.0.7 (#20)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-18 16:25:05 +01:00
renovate[bot] 3c1545d9e4 Update actions/checkout action to v4.1.7 (#14)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-18 16:21:45 +01:00
Colin Seymour 64f0213e30 Fix database check and creation (#23)
* Refactor db check and create

* Make exit more accurate
2024-07-18 16:20:36 +01:00
Colin Seymour 213a2205fc Clearly differentiate add-on changes (#16) 2024-06-16 08:18:20 +01:00
Colin Seymour a9c53f4cd5 Update Renovate configuration and fix inclusion of TeslaMate release notes in add-on changelog (#13)
* Fix renovate config

* Fix including TeslaMate release notes
2024-06-12 14:57:17 +01:00
Colin Seymour b964d2dbc9 Limit Renovate managers (#12)
Limit managers
2024-06-11 14:40:50 +01:00
Colin Seymour 4ab0062498 Renovate and releaser improvements (#11)
* Update all files from release

* Pull in TeslaMate release notes
2024-06-11 11:36:45 +01:00
16 changed files with 116 additions and 61 deletions
+2 -1
View File
@@ -8,10 +8,11 @@
"prBodyTemplate": "{{{table}}}{{{warnings}}}{{{notes}}}{{{changelogs}}}",
"semanticCommits": "disabled",
"commitMessageTopic": "{{#if (containsString depName 'teslamate')}}TeslaMate{{else}}{{depName}}{{/if}}",
"enabledManagers": ["custom.regex", "github-actions", "dockerfile"],
"customManagers": [
{
"customType": "regex",
"fileMatch": "^build\\.json$",
"fileMatch": "^build.json$",
"matchStrings": [
"\"teslamate_version\": \"(?<currentValue>\\d+\\.\\d+\\.\\d+)\""
],
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
- name: 🚀 Run Home Assistant Add-on Lint
uses: frenck/action-addon-linter@v2
+3 -3
View File
@@ -23,7 +23,7 @@ jobs:
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
- name: Get version
run: |
@@ -35,14 +35,14 @@ jobs:
fi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.2.0
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and publish
uses: home-assistant/builder@master
uses: home-assistant/builder@2024.08.2
with:
args: |
--${{ matrix.arch }} \
+15 -2
View File
@@ -32,6 +32,18 @@ jobs:
with:
semver-input: ${{ env.latest_release }}
increment: ${{ github.event.inputs.semverIncrement }}
- name: Get TeslaMate release notes
run: |
touch CHANGELOG.txt
last_release_date=$(gh release list --repo lildude/ha-addon-teslamate --limit=1 --json=publishedAt)
gh pr list --repo lildude/ha-addon-teslamate --state=merged --search="Update TeslaMate in:title closed:>$last_release_date" --limit=1 --json=body --jq '.[].body' | sed -n "/<\/summary>/,/<\/details>/p" | sed '1d;$d' > changelog.tmp
if [ -s changelog.tmp ]; then
echo "## TeslaMate Release Notes" > CHANGELOG.txt
cat changelog.tmp >> CHANGELOG.txt
fi
echo -e "---\n\n## Add-on Release Notes\n\n" >> CHANGELOG.txt
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create tag
run: |
git config --global user.email "actions.no-reply@github.com"
@@ -40,15 +52,16 @@ jobs:
git push --tags
working-directory: ${{ github.workspace }}/teslamate
- name: Create release
uses: softprops/action-gh-release@v2.0.5
uses: softprops/action-gh-release@v2.0.8
with:
tag_name: v${{ steps.semver.outputs.semver }}
body_path: CHANGELOG.txt
generate_release_notes: true
draft: false
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout addon repo
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
with:
path: repo
repository: lildude/ha-addons
+2 -2
View File
@@ -32,10 +32,10 @@ jobs:
steps:
- name: Check out repository
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
- name: Build add-on
uses: home-assistant/builder@master
uses: home-assistant/builder@2024.08.2
with:
args: |
--test \
+11 -3
View File
@@ -29,7 +29,7 @@ Remember to restart the add-on when the configuration is changed.
- `database_port`: The port your PostgreSQL server is listening on. Default: `5432`.
- `database_host`: The hostname of your PostgreSQL server. Default: `29b65938-postgres` for the [PostgreSQL add-on][postgres].
- `database_host`: The hostname of your PostgreSQL server.
- `database_name`: The name of the PostgreSQL database. Default: `teslamate`.
@@ -115,6 +115,15 @@ Once you have Grafana up and running, you'll need to configure a data source to
- `import_dir`: (Optional) The path to the directory where TeslaMate should look for the TeslaMate export CSV file. Default: `/share/teslamate`.
- `env_vars`: (Optional) Set additional environment variables for TeslaMate which aren't currently exposed by the configuration options in this add-on.
Each entry is made up of a name and value:
- `name`: The case-sensitive environment variable name.
- `value`: The value to be set in the environment variable.
Note: These will also overwrite any environment variable set using the configuration options above.
## Data Import from TeslaFi
It is now possible to import CSV data from TeslaFi, refer to the [official docs][teslafi-import].
@@ -135,9 +144,8 @@ Follow this process:
[docker]: https://hub.docker.com/r/teslamate/teslamate
[elixir]: https://elixir-lang.org/
[grafana-addon]: https://github.com/hassio-addons/addon-grafana
[grafana-datasource]: https://raw.githubusercontent.com/lildude/hassio-addon-teslamate/main/imgs/grafana-postgres.png
[grafana-datasource]: https://raw.githubusercontent.com/lildude/ha-addon-teslamate/main/imgs/grafana-postgres.png
[mosquitto-docs]: https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md
[postgres]: https://github.com/matt-FFFFFF/hassio-addon-postgres
[samba-addon]: https://github.com/home-assistant/addons/blob/master/samba/DOCS.md
[ssh-addon]: https://github.com/home-assistant/addons/blob/master/ssh/DOCS.md
[teslafi-import]: https://docs.teslamate.org/docs/import/teslafi
+2 -2
View File
@@ -1,8 +1,8 @@
FROM teslamate/grafana:1.29.1 as grafana
FROM teslamate/grafana:1.30.1 as grafana
#---
FROM teslamate/teslamate:1.29.1
FROM teslamate/teslamate:1.30.1
ARG BUILD_ARCH
ARG BASHIO_VERSION=0.16.2
+2 -4
View File
@@ -25,9 +25,7 @@ Thanks to @matt-FFFFFF for maintaining this add-on in the past.
## Requirements
TeslaMate needs a PostgreSQL database.
All development and testing has been done using [PostgreSQL add-on][postgres] for convenience but you're welcome to use your own.
For convenience, my [add-ons repository][addons-repo] includes configuration that points to the [PostgreSQL add-on][postgres] so you can install everything from one repo.
I recommend using the [PostgreSQL add-on][alexbelgium-postgres] from @alexbelgium's repository if you aren't already using Postgres.
To get the full experience, it is recommended that you also install the community [Grafana add-on][grafana-addon] and [MQTT integration][mqtt].
@@ -69,13 +67,13 @@ Everything should pick up where it was before.
[addon]: https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Flildude%2Fha-addons
[addons-repo]: https://github.com/lildude/ha-addons
[alexbelgium-postgres]: https://github.com/alexbelgium/hassio-addons/tree/master/postgres
[archs]: https://img.shields.io/badge/dynamic/json?color=green&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Flildude%2Fha-addon-teslamate%2Fmain%2Fconfig.json
[docker]: https://hub.docker.com/r/teslamate/teslamate
[elixir]: https://elixir-lang.org/
[grafana-addon]: https://github.com/hassio-addons/addon-grafana
[ingres-badge]: https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Flildude%2Fha-addon-teslamate%2Fmain%2Fconfig.json
[mqtt]: https://www.home-assistant.io/integrations/mqtt
[postgres]: https://github.com/matt-FFFFFF/hassio-addon-postgres
[repo-btn]: https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg
[sponsor-badge]: https://img.shields.io/badge/Sponsor_Me-%E2%9D%A4-ec6cb9?logo=GitHub
[teslamate-backup]: https://docs.teslamate.org/docs/maintenance/backup_restore
+1 -1
View File
@@ -5,7 +5,7 @@
"armv7": "teslamate/teslamate:not-used"
},
"args": {
"teslamate_version": "1.29.1"
"teslamate_version": "1.30.1"
},
"codenotary": {
"signer": "colin@symr.io"
+8 -3
View File
@@ -17,7 +17,7 @@
"database_user": null,
"database_pass": null,
"database_name": "teslamate",
"database_host": "29b65938-postgres",
"database_host": null,
"database_port": 5432,
"database_ssl": false,
"grafana_import_dashboards": true,
@@ -36,7 +36,8 @@
"timezone": "Europe/London",
"import_dir": "/share/teslamate",
"default_geofence": "",
"encryption_key": ""
"encryption_key": "",
"env_vars": []
},
"schema": {
"database_user": "str",
@@ -61,7 +62,11 @@
"timezone": "str",
"import_dir": "str",
"default_geofence": "str?",
"encryption_key": "password?"
"encryption_key": "password?",
"env_vars": [{
"name": "str?",
"value": "str?"
}]
},
"map": [
"share:rw"
+19 -14
View File
@@ -11,13 +11,14 @@
set -o errexit
readonly HOST=$(bashio::config 'grafana_host')
readonly PORT=$(bashio::config 'grafana_port')
readonly USER=$(bashio::config 'grafana_user')
readonly PASS=$(bashio::config 'grafana_pass')
readonly DASHBOARDS_DIRECTORY="/dashboards"
readonly FOLDER_NAME=$(bashio::config 'grafana_folder_name')
HOST=$(bashio::config 'grafana_host')
PORT=$(bashio::config 'grafana_port')
USER=$(bashio::config 'grafana_user')
PASS=$(bashio::config 'grafana_pass')
DASHBOARDS_DIRECTORY="/dashboards"
FOLDER_NAME=$(bashio::config 'grafana_folder_name')
readonly HOST PORT USER PASS DASHBOARDS_DIRECTORY FOLDER_NAME
main() {
@@ -31,7 +32,6 @@ main() {
restore) restore;;
*) exit 1;;
esac
}
@@ -42,9 +42,7 @@ backup() {
dashboard_json=$(get_dashboard "$dashboard")
if [[ -z "$dashboard_json" ]]; then
echo "ERROR:
Couldn't retrieve dashboard $dashboard.
"
echo "ERROR: Couldn't retrieve dashboard $dashboard."
exit 1
fi
@@ -57,9 +55,17 @@ backup() {
restore() {
bashio::log.info "Checking for Grafana folder: $FOLDER_NAME"
FLD=$(curl --silent --show-error \
folders=$(curl --silent --show-error \
--user "$LOGIN" -H "Content-Type: application/json" \
$URL/api/folders | jq ".[] | select(.title==\"$FOLDER_NAME\")")
"$URL/api/folders")
if [[ $folders == *"statusCode"* ]]; then
bashio::log.error "Error getting Grafana folders: $(echo "$folders" | jq -r .message)"
bashio::log.debug "$folders"
exit 1
fi
FLD=$(echo "$folders" | jq ".[] | select(.title==\"$FOLDER_NAME\")")
if [[ -z "$FLD" ]]; then
bashio::log.info "Not found... creating"
@@ -72,7 +78,7 @@ restore() {
"$URL/api/folders")
fi
FOLDER_ID=$(echo $FLD | jq -r .id)
FOLDER_ID=$(echo "$FLD" | jq -r .id)
if [[ -z "$FOLDER_ID" ]]; then
bashio::log.error "Could not determine Grafana folder id"
@@ -123,5 +129,4 @@ list_dashboards() {
cut -d '/' -f2
}
main "$@"
+8 -3
View File
@@ -2,8 +2,13 @@
# -*- bash -*-
# shellcheck shell=bash
if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then
bashio::log.warning "Nginx crashed, halting add-on"
case "${1}" in
1)
bashio::log.error "Nginx encountered an error, halting add-on"
;;
*)
bashio::log.error "Nginx crashed, halting add-on"
;;
esac
/run/s6/basedir/bin/halt
fi
bashio::log.info "Nginx stopped, restarting..."
+7 -1
View File
@@ -1,5 +1,11 @@
#!/command/with-contenv bashio
# -*- bash -*-
# shellcheck shell=bash
mkdir /run/nginx
bashio::log.info "Starting NGINX..."
if [ -f /run/nginx ]; then
rm -f /run/nginx
fi
mkdir -p /run/nginx
exec nginx -g 'daemon off;error_log /proc/1/fd/1 error;'
+8 -2
View File
@@ -2,8 +2,14 @@
# -*- bash -*-
# shellcheck shell=bash
if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then
bashio::log.warning "TeslaMate crashed, halting add-on"
case "${1}" in
1)
bashio::log.error "TeslaMate encountered an error, halting add-on"
;;
*)
bashio::log.error "TeslaMate crashed, halting add-on"
;;
esac
/run/s6/basedir/bin/halt
fi
bashio::log.info "TeslaMate stopped, restarting..."
+21 -16
View File
@@ -44,36 +44,41 @@ 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
# These are optional and applied last so we can override those set above if needed.
for env_var in $(bashio::config 'env_vars|keys'); do
name=$(bashio::config "env_vars[${env_var}].name")
value=$(bashio::config "env_vars[${env_var}].value")
bashio::log.debug "Setting Env Variable ${name} to ${value}"
export "${name}=${value}"
done
# Import dashboards
if bashio::config.true 'grafana_import_dashboards'; then
/dashboards.sh restore
/dashboards.sh restore || bashio::log.error "Failed to import dashboards"
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"
bashio::log.info "Creating database '$DATABASE_NAME' on $DATABASE_HOST"
res=$(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -c "CREATE DATABASE $DATABASE_NAME" 2>&1) || true
case "$res" in
"CREATE DATABASE")
bashio::log.info "Database $DATABASE_NAME created"
;;
*"already exists"*)
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"
;;
*)
bashio::log.error "Failed to create database $DATABASE_NAME: $res"
exit 1
;;
esac
else
bashio::log.error "PostgreSQL is not ready"
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"
bashio::log.info "Starting TeslaMate..."
cd /opt/app
exec $(/usr/bin/env sh) /entrypoint.sh bin/teslamate start
+3
View File
@@ -67,3 +67,6 @@ configuration:
import_dir:
name: TeslaFi Import Directory
description: The directory which holds the TeslaFi export you would like to import into TeslaMate.
env_vars:
name: Environment Variables
description: Set additional environment variables for TeslaMate which aren't currently exposed by the configuration options in this add-on.