Meine HomeAssistant-Installation läuft seit Beginn an mit dem AddOn InfluxDB. Da ich jedoch von den Daten der Influx-DB leichter ein Backup machen wollte, und auch insgesamt leichter Zugriff auf die InfluxDB haben wollte, kam die Notwendigkeit auf die Daten aus der internen in eine externe InfluxDB zu migrieren.

Das erste Problem war hierbei, Shell-Zugriff auf die InfluxDB zu bekommen. Hierfür gibt es die Möglichkeit Debugging-SSH-Zugriff auf das HomeAssistant-OS zu bekommen. Dafür muss man einen FAT oder ext4 formatierten USB-Stick mit Namen CONFIG und dort abgelegt einer authorized_keys Datei an den HomeAssistant anschließen und in der Shell

ha os import

ausführen. Da mein HomeAssistant in einer QEMU/KVM VM läuft, musste ich erst noch den USB-Stick an die VM durchreichen.

# cat usb-stick.xml
<hostdev mode='subsystem' type='usb' managed='yes'>
   <source>
     <vendor id='0x090c'/>
     <product id='0x1000'/>
   </source>
</hostdev>
# virsh attach-device hassio01 --file usb-stick.xml

Im Anschluss kann man über SSH-Port 22222 auf das System zugreifen.

ssh -p 22222 root@HA-IP

InfluxDB Data exportieren

Nun ist es ein leichtes sich mit dem Docker-Container der Influx-DB zu verbinden und die Daten zu exportieren.

# docker ps
...
f3226b4d4625   ghcr.io/hassio-addons/influxdb/amd64:4.6.0                 "/init"   12 days ago    Up 12 days             0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   addon_a0d7b954_influxdb
...
# docker exec -it f3226b4d4625 bash
root@a0d7b954-influxdb:/# influx_inspect export -database HomeAssistant -retention autogen \
    -out /share/influx_homeassistant_202305191035 -lponly \
    -datadir /data/influxdb/data/ -waldir /data/influxdb/wal/

InfluxDB Data in v2 schreiben

Diese Datei kann man im Anschluss per scp auf den Client kopieren und per influx-cli in eine InfluxDB v2 schreiben.

% scp -O -P 22222 root@HA-IP:/mnt/data/supervisor/share/influx_homeassistant_202305191035 .
% influx write --bucket hassio --file influx_homeassistant_202305191035

HomeAssistant Config anpassen

Als abschließenden Schritt muss man nur noch die HomeAssistant-Config anpassen. Alt:

influxdb:
    host: localhost
    port: 8086
    database: HomeAssistant
    username: HomeAssistant
    password: PASSWORT
    max_retries: 3
    default_measurement: state
    include:
       domains:
        - sensor

neu:

influxdb:
  api_version: 2
  ssl: false
  host: INFLUX_HOST_IP
  port: 8086
  token: API_TOKEN
  organization: hassio
  bucket: hassio
  default_measurement: state
  include:
    domains:
      - sensor
      - binary_sensor

Nach einem abschließenden Restart des HomeAssistant sollte dieser nun seine Werte in die neue InfluxDB-Instanz schreiben und man kann sie wie bisher entweder mit dem Grafana-AddOn oder einem externen Grafana aufbereiten.