hass.io: Externe Datenbank benutzen

Das charmante an hass.io 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! hass.io 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 hass.io: hass.io 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 hass.io (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 hass.io 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:

hass.io: kaputte SD-Karte

Je mehr Smarthome-Komponenten du in hass.io einbindest, desto mehr Messwert wird hass.io 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 hass.io 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!

hass.io: 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 hass.io 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 hass.io erstellt hat. Die Thermostate habe ich ab ca. dem 24.02. in hass.io 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.

hass.io: Externe Datenbank nutzen

Damit die SD-Karte deiner hass.io-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 hass.io, 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 hass.io sind direkt an dem Router über LAN angeschlossen, so dass ein möglichst störungsfreier (und somit schneller) Datenaustausch möglich ist.

hass.io: 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 hass.io 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 hass.io genutzt wird. Lege hierfür auch einen neuen Datenbank-User an, der nur Zugriff auf die hass.io-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 hass.io-Instanz aus, damit hass.io 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 den hass.io Home Assistant.

AngebotBestseller Nr. 1
KETOTEK Smart Heizkörperthermostat Zigbee, Elektrische...*
  • 【Zusatzprodukt für Starter-Kit】 Besitzen Sie bereits unser...
  • 【Flexible Steuerung】 Stellen Sie die Temperatur am...

*= Preis inkl. MwSt., ggf. zzgl. Versandkosten. Letzte Aktualisierung vor 60 Minuten / Affiliate Links / Bilder von der Amazon Product Advertising API. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

9 Gedanken zu „hass.io: Externe Datenbank benutzen“

  1. 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

    Antworten
    • 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

      Antworten
      • 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…

        Antworten
        • 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

          Antworten
  2. 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!

    Antworten
    • 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!

      Antworten
  3. 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!

    Antworten
  4. 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

    Antworten
    • Hi Daniel! Vielen Dank für dein Feedback und den Hinweis auf die andere Anbindung der DB! Schaue ich mir, bei Gelegenheit einmal an!

      VG

      Olli

      Antworten

Schreibe einen Kommentar

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulares wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.