Created
July 31, 2025 09:56
-
-
Save jplitza/78439ccecf801e1837d3d9bc723ba0a8 to your computer and use it in GitHub Desktop.
Small script to copy sensor data from InfluxDB to Home Assistant's SQLite DB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
TMPFILE="$(mktemp)" | |
read -p "InfluxDB password: " INFLUXDB_PASSWORD | |
QUERY='SELECT mean("value"), min("value"), max("value") FROM "infinite"."°C" WHERE ("friendly_name" =~ /Temperatur$/) AND time < '"'2022-11-03T00:00:00Z'"' GROUP BY time(1h), "entity_id" fill(none);' | |
HA_DB="$1" | |
influx -precision rfc3339 -username admin -password "$INFLUXDB_PASSWORD" -database home_assistant -format csv -execute "$QUERY" \ | |
| sed \ | |
-e 's/^°C,entity_id=/sensor./' \ | |
-e '/^name,/d' \ | |
> "$TMPFILE" | |
sqlite3 "$HA_DB" <<EOF | |
CREATE TABLE IF NOT EXISTS "statistics_new" ( | |
name TEXT, | |
start DATETIME, | |
mean FLOAT, | |
min FLOAT, | |
max FLOAT | |
); | |
.import --csv $TMPFILE statistics_new | |
INSERT INTO statistics (created, metadata_id, start, mean, min, max) SELECT | |
datetime(start, '+1 hour') as created, | |
statistics_meta.id as metadata_id, | |
start, | |
mean, | |
min, | |
max | |
FROM statistics_new | |
INNER JOIN statistics_meta ON (statistics_meta.statistic_id = statistics_new.name); | |
DROP TABLE statistics_new; | |
EOF | |
rm "$TMPFILE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment