Smart #1 API / Smart Home Integration

  • Jetzt ist die 0.7.1 da, ich traue mich aber auch nicht zu updaten, weil ich schon einige Entitäten rausgeworfen habe und nicht wieder von vorn anfangen möchte :-/


    Habe ca. 90 Entitäten identifiziert, die "nicht verfügbar" sind, kann diese aber irgendwie auch nicht löschen, wie z. B. hier

    pasted-from-clipboard.png


    Ich kann die alte Entitity aber auch nicht löschen:

    pasted-from-clipboard.png


    Wie löse ich das denn?

    Smart #1 Premium Meta Black Metallic seit 30.06.2024

  • Und was passiert dann mit den historischen Daten?

    Ich speichere generell alle meine (Sensor-)Daten in eine externe Datenbank (Influxdb), also außerhalb von Homeassistant. Dort bleiben die Daten bestehen. Das ist eigentlich auch so Best Practice, damit die HA Datenbank nicht zu voll läuft.

    Und auf bestehende Automationen, Dashboards etc. hat das auch keine Auswirkung, da die Entitätsnamen vorher und nachher identisch sind.

  • ... und in Statistiken usw referenzierst du dann auf die externe DB oder schiebst du die DAten aus Influx wieder dann zurück auf die Sensoren? Also wie läuft der Abgleich? Ich habe eigtl. ein DAshboard mit ner Karte zur Auswertung der monatl. gefahrenen km, mit Blick auf die letzten 4 Monate. Aktuell verliere alle 3-4 Monate die Historie, deswegen würde ich glaub so was ähnliches machen 😃


    Kein Vorwurf an den Owner der Integration - bin ja froh, dass es das gibt... Muss nur ein paar Workarounds/Best Practices etablieren

    Smart #1 Premium Meta Black Metallic seit 30.06.2024

  • Ich nutze zusätzlich Grafana zur Visualisierung der Daten aus der InfluxDB.

    Man kann sich das dann aber auch wieder aus der InfluxDB in Homeasistant holen, wenn man das lieber dort in einem Dashboard haben möchte. Dazu kann man in HA einen InfluxDB-Sensor anlegen, der die Werte dann wieder aus der DB holt und in HA anzeigt.

    Das mache ich aber wie gesagt nicht, da mir der Zugriff und die Aufbereitung über Grafana reicht. Mir geht es da eher um die langfristige Dokumentation von Zuständen (insb. des gesamten Smarthomes) als um eine schöne grafische Aufbereitung von Daten.

  • Das geht aber auch alles mit den Bordmitteln ohne influxdb und Grafana. Ich hatte beides zu Beginn mal ausprobiert, es dann aber wieder verworfen nachdem man an der sqlite Verbesserungen vorgenommen hatte. Seitdem gibt es Stimmen, die sagen, dass man auch sqlite für größere Datenmengen bedenkenlos einsetzen kann. Bei mir dümpelt die DB bei etwa 1 GB seit mehreren Jahren vor sich hin, durch ein paar Ausnahmen im Recorder halte ich den Zuwachs in Grenzen.


    Ich persönlich mag influxdb ob seiner Query-Syntax nicht und versuche die Komplexität eigentlich nie höher als nötig zu halten. Da es „drangeflanscht“ ist, ist zudem das Risiko sicherlich auch größer, dass es bei einem zukünftigen Update mal zu einer Inkompatibilität kommen könnte. Im Support-Forum war mal zu lesen, dass die sqlite für die meisten Fälle völlig ausreichend ist und man influxdb oder mariadb erst ab einer Größe von mehreren GB in Betracht ziehen braucht. Zumal: die sqlite-Datenbank besteht aus einer einzigen Datei, die sich im Ernstfall auch problemlos aus einem Backup zurück spielen lassen sollte. Und sie kann problemlos auch außerhalb von HA ausgelesen werden.


    Datenverlust hatte ich jedenfalls noch nie bei dem default-Setup mit der sqlite-Datenbank. Man muss natürlich bisschen auf die IDs der Entitäten achten. Wenn durch ein Update mal neue Entitäten angelegt werden, was i.d.R sehr selten der Fall ist (die Smart-Integration ist hier eine Ausnahme) dann genügt es, die alte Entität zu löschen und der neuen Entität dieselbe ID zu geben. Entsprechende Berichte gab es auch schon von anderen Usern hier im Thread. Was man vielleicht nicht machen sollte: die Integration löschen.


    Und wer dennoch besorgt ist, legt sich für die wichtigsten Entitäten noch eigene Helper-Entitäten an, entweder einen Verbrauchszähler oder Template-Sensor. Die erfassen zusätzlich die wichtigsten Daten und speichern ihre eigene Historie und man hat so immer noch ein Backup. Weiterer Vorteil: ist die Integration mal nicht verfügbar, funktionieren die eigenen Entitäten immer noch und die Dashboards zeigen was an (wird halt nur nicht mehr aktualisiert- logisch).


    Apropos Dashboards: Grafana fühlte sich irgendwie immer fremd an in den Dashboards, sodass ich lieber custom cards verwende. Solche wie mini-graph-card oder ApexCharts lassen kaum Wünsche offen und sehen zudem hübsch aus. Und für alles andere gibt es card-mod, um das Aussehen anzupassen (Kenntnisse in CSS vorausgesetzt).

    #3 BRABUS | Laser Red Metallic + Eclipse Black | Continental AllSeasonContact 2

    iOS und CarPlay-Nutzer, Wenigfahrer, Smarthome-Enthusiast

    Einmal editiert, zuletzt von Kanecaine ()

  • Hallo zusammen, es gab zwischen der 0.6 und 0.7 einen Bruch in der Art, wie die Sensoren bei HA angelegt werden. Dazu habe ich es verpasst eine Migration der Sensoren auf die neue ID umzusetzen. Bis wir die stabile 1.0 Version erreicht haben, kann das immer mal wieder passieren, also fahrt ihr da sicherer, wenn ihr die alte version deinstalliert, neustartet und dann die neue Version installiert. Was dann mit den historischen Daten passiert, müsst ihr ausprobieren, ich habe bei mir den recorder ausgeschaltet.


    Es gibt immer mal wieder Versionen die als pre-release gekennzeichnet sind. Die sind noch nicht fertig getestet, aber um sie in mein Produktivsystem zu bekommen, landet alles schon in github. Pre-releases zu installieren ist was für die mit guten Backups.


    Danke, dass ihr die integration benutzt :D


    Gruß

    Basti

  • Hallo Basti,


    Danke für die Mühe!


    Kleine Anpassung am ABRP-Script meinerseits, denn nach Installation der 0.7.1 zeigte ABRP plötzlich 10,x Megawatt Ladeleistung an, außerdem hat ABRP das Ladeende nicht erkannt.


    Damit geht's nun:


    power: "

    {% if states('sensor.smart_ladeleistung', rounded=False,

    with_unit=False) | default(0) | float > 0 %}

    -{{ states('sensor.smart_ladeleistung', rounded=True, with_unit=False) | int / 1000 }}

    {% else %}

    0

    {% endif %}"