solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Home Assistant Website Karte hat keinen Zugriff auf SOLECTRUS #48

Closed Cedric9602 closed 3 months ago

Cedric9602 commented 3 months ago

Hallo! :)

Zuerst einmal vielen Dank für das Projekt! Ich finde die Darstellung wirklich klasse und würde sie deswegen gerne in HA integrieren um das dort als Website integriert auf einem Tablet anzeigen zu können :) (Die Daten dort einzulesen werde ich aufgrund mangelnder Kenntnisse kaum schaffen, aber darum soll/muss es hier nicht gehen)

SOLECTRUS habe ich mit Hilfe der Anleitung (mit ein paar Startschwierigkeiten) auf einem Raspi 4 mit 8GB RAM installiert. Docker hatte ich bereits, da ich vorher schon andere Container laufen hatte (z.B. PiHole und OctoPrint).

Zuerst kurz zu den Startschwierigkeiten: Folgendes war für mich irreführend, da ich einen SENEC Home 4 habe. In der .env hätte man zwar vermuten können, dass dann auch die IP-Adresse auszukommentieren ist, ich habe mich jedoch an die Anleitung gehalten und diese deswegen mitgegeben, was dann scheinbar dazu geführt hat, dass gedacht wurde, dass ich keine cloud, sondern die lokale Variante fahre.

IMPORTANT settings, MUST be changed or checked:
   SENEC_HOST # Hostname or IP address of your SENEC device
   SENEC_SCHEMA # http or https, depending on the firmware running on your SENEC device
   APP_HOST # Hostname or IP address of your Raspberry Pi

Laut meinem Verständnis sind SENEC_HOST und SENEC_SCHEMA auszukommentieren beim Home 4, aber das nur kurz als Anmerkung :) Ich habe es am Ende sowieso über den neuen Installations-Guide versucht und damit dann auch geschafft :)

Nun zu meiner Frage: Wenn ich in HA eine Karte anlege und dort auf SOLECTRUS zugreifen will, erhalte ich folgende Fehlermeldung: "pi.local hat eine Verbindung verweigert." Das wird bestimmt irgendwo an der Konfiguration der Container liegen, dass ich darauf nicht zugreifen kann über den HA Container, jedoch finde ich keinen Anhaltspunkt... Versucht einzubinden hab ich es wie folgt:

type: iframe
url: http://pi.local:3000/
title: SOLECTRUS

Die Netzwerk Konfiguration von HA ist "host". Ich wäre für jeden Tipp dankbar!

Viele Grüße Cedric

ledermann commented 3 months ago

Danke für die netten Worte :)

Bezüglich der Fallunterscheidung SENEC V3 vs. V4: Entscheidend ist die Variable SENEC_ADAPTER. In deinem Fall muss sie auf cloud stehen, die Variablen SENEC_HOST und SENEC_SCHEMA sind dann irrelevant. Ich habe den Text im README aktualisiert. Danke für den Hinweis! Aber wie dem auch sei, der neue Konfigurator ist sowieso die Zukunft :)

Zur Einbindung in Home Assistant: SOLECTRUS muss hierfür entsprechend konfiguriert werden. Das erfolgt über die Variable FRAME_ANCESTORS, siehe hier: https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/.env#L26-L27

Wenn dein HA auf http://pi.local läuft, dann lautet der erforderliche Eintrag wie folgt:

FRAME_ANCESTORS=http://pi.local

Nach jeder Änderung in der .env müssen danach die Container neu gestartet werden:

docker compose down
docker compose up -d

Anschließend kann SOLECTRUS als <iframe> im Home Assistant eingebunden werden.

ABER: Warum eigentlich? Auf dem Tablet kannst du SOLECTRUS auch direkt anzeigen, also ganz ohne Home Assistant.

Cedric9602 commented 3 months ago

Ich wollte es auch nur erwähnen, falls sich jemand anders auch so blöd anstellt wie ich :D - tatsächlich habe ich aber trotz richtigem SENEC_SCHEMA (für meinen Fall Cloud) dann Fehlermeldungen erhalten, weil eben über die angegebene IP nichts zurück kam.

Ich wollte auch nicht über HA die Daten von SOLECTRUS einlesen/auswerten, sondern nur die Website in HA anzeigen lassen (siehe Screenshot zB für die Shelly Cloud) image aber ich glaube das liegt an meinem HA Container, da ich auch die Demo Seite damit nicht erreiche und auch nicht https://solectrus.de/ (Fehlermeldung "solectrus.de hat eine Verbindung verweigert.")

Aber danke für die Hinweise und auch die schnelle Antwort!! :)

ledermann commented 3 months ago

Hier hast du vermutlich SENEC_ADAPTER und SENEC_SCHEMA verwechselt:

Hier nochmal ein Link zur Übersicht der Umgebungsvariablen des SENEC-Collectors: https://github.com/solectrus/senec-collector/blob/develop/.env.example

Dass du sowohl die Homepage als auch die Live-Demo von SOLECTRUS (also meine Installation) nicht in deinen Home-Assistant einbinden kannst, ist so gewollt :) Standardmäßig erlaubt SOLECTRUS überhaupt keine iframe-Einbindung, über die Variable FRAME_ANCESTORS kann man das für seine Installation aber erlauben (wie oben beschrieben).

Cedric9602 commented 3 months ago

Ja ich meinte natürlich trotz SENEC_ADAPTER = cloud habe ich eine Fehlermeldung bzgl. irgendwas mit der IP (da ich die eben angegeben hatte) bekommen, aber ist ja auch nicht weiter wild, das konnte ich ja selbst lösen :D

Das mit dem iframe habe ich geschafft, vielen Dank für die Erklärung! :)

Eine Frage hätte ich aber noch.. Ist es möglich per HA und Scrape die aktuellen Daten von SOLECTRUS in HA als Entität einzubinden? Ich bekomme dort immer nur Zustand = unknown Ich würde das dort gerne einlesen, damit ich damit Automationen erstellen kann --> zB nur Auto laden, wenn PV Erzeugung > 10 kW

Schonmal und nochmal vielen Dank für deine Mühe! :)

ledermann commented 3 months ago

Das Problem mit der IP bzw. dem lokalen Zugriff auf den Speicher trotz SENEC_ADAPTER=cloud habe ich soeben lösen können. Ursache war, dass in der docker-compose.yml die neuen Variablen SENEC_ADAPTER, SENEC_USERNAME und SENEC_PASSWORD noch gar nicht aufgeführt waren. Daher hat der SENEC-Collector auf den Default zurückgegriffen und versucht, direkt auf deinen Speicher zuzugreifen, was beim Home 4 aber nicht funktioniert. Das nur der Vollständigkeit halber, dich betrifft das ja nicht mehr.

Zum Home Assistant: SOLECTRUS als Entität hinzuzufügen, ist nicht vorgesehen. Du kannst aber prinzipiell auf die InfluxDB (v2) von SOLECTRUS zugreifen. Grundsätzlich sollte es hiermit gehen, auch wenn ich das selbst nicht ausprobiert habe: https://www.home-assistant.io/integrations/influxdb/

Eine ähnliche Frage dazu habe ich kürzlich hier beantwortet: https://github.com/orgs/solectrus/discussions/3135

Alternativ (und vermutlich einfacher) könntest du auch deine Auto-Ladeoptimierung komplett im HomeAssistant aufbauen und die dort verfügbare SENEC-Integration nutzen: https://github.com/marq24/ha-senec-v3

Dann würde die SENEC-Cloud zwar doppelt abgefragt werden (vom SOLECTRUS-SENEC-Collector und von der HomeAssistant-Integration), aber das dürfte nicht weiter tragisch sein.

Ansonsten gibt es zu dem Thema ja noch evcc: https://evcc.io/