Home Assistant: Externe Datenbank benutzen

Das charmante an Home Assistant ist, dass man nach der Installation auf einem Raspberry Pi zum Beispiel sofort loslegen kann das eigene Smarthome einzurichten. Nach der ca. 20minรผtigen Installation (was natรผrlich von der Rechenleistung der gewรคhlten Hardware abhรคngt) kann es sofort losgehen! Home Assistant wรคhlt automatisch alle Einstellungen, damit die Freude am Smarthome mรถglichst schnell beginnt.

Doch eine Sache ist hierbei, meiner Meinung nach, wirklich unglรผcklich umgesetzt und vermutlich auf Kurz oder Lang auch der Grund fรผr Hardware-Probleme mit Home Assistant: Home Assistant benutzt im Hintergrund natรผrlich auch Datenbanken, um die ganzen Einstellungen und Messwerte zu speichern. Diese Datenbank wird bei der Nutzung eines Raspberry Pi natรผrlich auch auf der SD-Karte abgelegt. Da ein Raspberry Pi keinen eigenen Speicherplatz mitbringt (was den Pi unter anderem auch so gรผnstig macht), gibt es fรผr Home Assistant (um ehrlich zu sein) auch bei der Einrichtung fast keine andere Mรถglichkeit, als die SD-Karte fรผr die Datenbank zu nutzen.

Grundsรคtzlich funktioniert dies auch ohne Probleme (sonst wรผrde dein Home Assistant nach der Installation ja nicht einsatzbereit sein), jedoch liegt hierin, meiner Meinung nach, eine groรŸe Gefahr fรผr alle grรถรŸeren bzw. umfangreicheren Smarthome-Installationen:

Home Assistant: kaputte SD-Karte

Je mehr Smarthome-Komponenten du in Home Assistant einbindest, desto mehr Messwert wird Home Assistant auch in die Datenbank schreiben. Und jeder dieser einzelnen Schreibvorgรคnge macht

  1. deine DB und somit die SD-Karte voller und
  2. schaden Schreibvorgรคnge handelsรผblichen SD-Karten, so dass der SD-Karten-Tod quasi vorprogrammiert ist.

Mir persรถnlich ist so etwas (zum Glรผck) noch nicht passiert. Ich nutze aber aktuell meine dritte Neuinstallation (aus verschiedenen Grรผnden), mit jeweils komplett neuer Hardware. Ich nutze Home Assistant seit etwas mehr als einem Jahr und hatte keine Probleme mit defekten SD-Karten, jedoch ist bei mir, wie gesagt, auch mittlerweile die dritte SD-Karte im Einsatz!

Du magst Home Assistant? Dann abonniere kostenlos meine Beitrรคge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 442 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklรคrung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders รผberlegen!

Home Assistant: Kein Speicherplatz auf der SD-Karte

Selbst wenn du vor einer kaputten SD-Karte keine Angst hast, solltest du dir Gedanken um den zur Verfรผgung stehenden Speicherplatz machen!

Warum? Ich nutze einige Z-Wave Komponenten wie Rollladensteuerungen und Thermostate. Und insbesondere die Thermostate liefern Unmengen an Messwerten, die natรผrlich alle in die Datenbank geschrieben werden. Wie viel das an Speicherplatz ausmacht, veranschaulicht folgendes (echtes) Beispiel:

Ich habe bei uns im Haus 7 smarte Thermostate installiert, die in Home Assistant eingebunden sind. Anhand der Snapshot-Sicherungen (jeweils komplette Sicherungen), kann ich sehr einfach erkennen wie viel Daten in einer bestimmten Zeit tatsรคchlich gesammelt wurden. Zwar handelt es sich bei Messwerten von Thermostaten faktisch nur um Timestamps und Temperaturen, jedoch verdeutlicht meine Beobachtung, wie viel Daten tatsรคchlich im Hintergrund gespeichert werden:

Hass.io: DatenbankgrรถรŸe

Was du im vorstehenden Screenshot siehst, sind die Snapshots (komplette Sicherungen), die Home Assistant erstellt hat. Die Thermostate habe ich ab ca. dem 24.02. in Home Assistant eingebunden und ab dem 10.03. waren alle 7 Thermostate in Betrieb. Zwischen dem 10.03. und dem 14.03. ist die Sicherungsdatei um ca. 40 MB angestiegen, also ca. 10 MB Zuwachs pro Tag. Diesen Zuwachs fรผhre ich einzig auf die Thermostate zurรผck, da ich ansonsten keine ร„nderungen vorgenommen habe.

Home Assistant: Externe Datenbank nutzen

Damit die SD-Karte deiner Home Assistant-Installation auf einem Raspberry Pi geschont wird, empfiehlt es sich eine externe Datenbank fรผr das Speichern von Messwerten etc. zu nutzen. Hier wiederum ist Home Assistant, meiner Meinung nach, wirklich vorbildlich unterwegs, da es mรถglich ist nahezu jede Datenbankart als externe Datenbank zu nutzen.

Aufgrund der bei mir vorhandenen Komponenten, habe ich mich fรผr eine MySQL-Datenbank auf meinem Netzwerklaufwerk entschieden. Hierfรผr habe ich mich aus 3 Grรผnden entschieden:

  1. Ich mรถchte die Daten lokal liegen haben, also keine im Internet aufrufbare Datenbank nutzen (was mรถglich wรคre). Hierfรผr wiederum habe ich zwei Grรผnde: Zum einen die zusรคtzliche Sicherheit einer lokalen Datenbank und zum anderen keine Abhรคngigkeit von einer aktiven Internetverbindung.
  2. Ich verfรผge รผber ein Netzwerklaufwerk (NAS), welches das Betreiben einer MySQL-Datenbank sehr einfach ermรถglicht.
  3. Sowohl das NAS als auch Home Assistant sind direkt an dem Router รผber LAN angeschlossen, so dass ein mรถglichst stรถrungsfreier (und somit schneller) Datenaustausch mรถglich ist.

Home Assistant: Wie richtet man eine externe Datenbank ein?

Vorausgesetzt du verfรผgst รผber ein vergleichbares Setup wie ich, ist das Einrichten einer externen Datenbank fรผr Home Assistant in wenigen Minuten erledigt:

  1. Bereite die Datenbank auf dem externen Medium (z. B. ein NAS) vor. Setze eine komplett neue Datenbank auf, die nur von Home Assistant genutzt wird. Lege hierfรผr auch einen neuen Datenbank-User an, der nur Zugriff auf die Home Assistant-Datenbank haben wird!
  2. ร–ffne die configurations.yaml und fรผge dort zwei Zeilen ein, die du an deine DB-Zugangsdaten und die IP deiner lokalen Datenbank entsprechend anpasst: hass.io: externe Datenbank nutzen
  3. Fรผhre einen Neustart deiner Home Assistant-Instanz aus, damit Home Assistant mit der neuen Konfiguration die Arbeit wieder aufnimmt.

Ab sofort werden somit alle sonst auf der SD-Karte gespeicherten Messwerte etc. in der lokalen MySQL-Datenbank gespeichert:

hass.io: MySQL Datenbank

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um Home Assistant.

9 Gedanken zu „Home Assistant: Externe Datenbank benutzen“

  1. Tach auch, danke fรผr deine Ideen rund um HA hier im Blog. Einige werde ich mir sicherlich mal zu Gemรผte fรผhren. Als jemand, dessen System auch auf einem RPi (ein 4er) lรคuft, wollte ich dir als Alternative zum Auslagern der Datenbank vorschlagen: https://community.home-assistant.io/t/installing-home-assistant-on-a-rpi-4b-with-ssd-boot/230948
    Da der RPi4 mittlerweile auch von einer via USB angeschlossenen SSD booten kann, hat man dann das beste aus beiden Welten. Enorme Schreibraten und eine noch bessere Latenz als via LAN. Mein Hauptaugenmerk lag aber da drauf, dass mir HA sonst bei Updates/Neustarts des NAS aussteigt und ich beides lieber auf einem Host haben will. Ich hatte ohnehin noch einen USB3-to-SATA Adapter von einem Samsung-SSD-Kit herumliegen, da kam das wie gelegen. Seit รผber einem Jahr problemlos im Einsatz und unfassbar schnell/responsive.
    LG Daniel

  2. Hallo Olli,
    die Config wie oben beschrieben lรคuft einwandfrei mit einer lokalen Datenbank auf Synology mit MariaDB 10.
    Anscheinend lรคsst Strato wirklich keinen Zugriff von aussen zu, ich konnte jedenfalls keine Verbindung herstellen.
    Vielen Dank nochmal fรผr die Hilfe!

  3. Hallo Olli,
    lรคuft bei mir leider nicht… ich hab in der configuration.yaml folgenden Eintrag:
    (natรผrlich mit meinen Zugangsdaten zur DB)
    recorder:
    db_url: mysql://user:password@rdbms.strato.de/dbname?charset=utf8
    Hast du vielleicht noch ne Portweiterleitung oder sowas zusรคtzlich machen mรผssen?
    Vielen lieben Dank!

    • Hi Chris, ich kann dir die Syntax von Strato leider nicht im Detail prรผfen. Kannst du denn mit einer SQL-Software darauf zugreifen (also HeidiSQL oder so)? Und erlaubt Strato รผberhaupt Zugriffe von auรŸerhalb? Hรคufig ist das in der der Standards-Einstellung geblockt.

      Ne Port-Weiterleitung? Meinst du damit deinen Router? Nein, das ist ja nur fรผr eingehende Verbindungen. Die Home Assistant DB-Verbindung ist nur ausgehend! Das kann also keine Ursache sein!

  4. Hi Oli,
    du lรคsst die DB unabhรคngig auf der NAS laufen ( was verwendest du da) oder hast du die NAS als Speicher in den Rasp eingebunden und die mysql-Instanz lรคuft dort und legt nur die Daten auf die NAS? Was passiert wenn dein LAN/WLAN in dem Fall nicht verfรผgbar ist? Dann hast du zwar รผber Z-Wave und Zigbee vom WLAN unabhรคngige Protokolle aber dein Backbone ist vom Netzwerk abhรคngig oder?

    GruรŸ
    Jรถrg

    • Hi Jรถrg!
      Zu dem Zeitpunkt hatte ich die DB auf meinem WD-NAS und dort phpMyAdmin im Einsatz. Per IP-Adresse hat sich Home Assistant dann mit dem NAS lokal verbunden. Das LAN kann ja eigentlich nur nicht verfรผgbar sein, wenn der Router keinen Storm hat. Selbst wenn der Router offline ist, klappt die DB-Anbindung so!

      Mittlerweile lรคuft die DB aber sogar auf einem meiner Webspaces im WWW.

      Theoretisch kann es durch offline-Zeiten zu einem nicht synchronen Stand kommen. Dies „korrigiert“ Home Assistant aber im Nachgang wieder. Und in Echtzeit konnte ich bislang keine Probleme der Funktionalitรคt von Home Assistant beobachten deswegen.

      Viele GrรผรŸe

      Olli

      • Hi Olli,
        ich versuche auch grade Homeassistant mit einer Datenbank bei Strato zu koppeln – leider spuckt HA „Operational Error“ aus. Kannst du mir nen Tipp geben, wie deine recorder-config in HA aussieht?
        Ich komme leider nicht weiter…

        • Hi Chris,
          in meiner recorder.yaml habe ich fรผr die URL der DB lediglich folgende Zeile:
          db_url: mysql://DB-ID:GEHEIMES_PASSWORT@EINEURL.DE/DB-ID?charset=utf8

          Das ist natรผrlich noch um deine Daten anzupassen 😉

          Hoffe das passt bei dir, viel Erfolg!
          Olli

Kommentare sind geschlossen.