Wie verbinde ich die cFos Wallbox per mqtt mit Home Assistant?
♥ 0 |
Abgetrenntes Thema von hier: Ich habe in Home Assistant das mqtt-Addon installiert. Aber beim Anlegen einer Automation kann ich keinen Dienst „mqtt veröffentlichen“ auswählen. Muß ich zuvor noch etwas tun, damit der Dienst aktiviert wird und ausgewählt werden kann? Gelöst
markiert als Spam
|
Antworten (38)
Private answer
Ich habe jetzt mal dem soc-status einen * vorangestellt. Dann wird er in der erweiterten Kachelansicht angezeigt. Da steht nur eine Null. Wahrscheinlich mag des System keine Strings an dieser Stelle. Naja, ist kein Showstopper, dann wertet HA das aus. markiert als Spam
|
|
Private answer
Der Com-Fehler erscheint, weil nicht innerhalb aller 30? Sekunden eine Nachricht kommt. Das ploppte irgendwann bei mir mal kurz hoch. Logisch, wenn wir nur gelegentlich mal ein topic per Hand veröffentlichen. Im WiCAN kannst Du einstellen, wie oft er das topic versendet, sh. hier: https://meatpihq.github.io/wican-fw/config/automate/usage Dann sollte der Fehler nicht mehr auftreten. Den Abschnitt „Benutzerdefinierte Zähler mit mqtt“ würde ich der besseren Auffindbarkeit vor oder hinter den Abschnitt „Einbindung von Zählern und Wallboxen mittels Gerätetyp "HTTP Input" platzieren.
Ja, die Informationen sind in der Doku gut verteilt. In der mqtt-Beschreibung steht z. B. „Als Nachricht erwartet das HTTP Input Zähler dann einen JSON string, wie im HTTP API unter "HTTP Zähler und Wallboxen" beschrieben.“ Dort steht irgendwo ein JSON-Objekt, in dem kein soc vorkommt. Daß es dort vorkommen könnte, steht dann wieder bei benutzerdefinierten Zählern.
Können über mqtt abonnierte Variablen eigentlich auch strings sein? Ich versuche gerade, den Status des Wican noch mit einzubinden, hier kommt aber „offline“ oder „online“ als Payload. Meine modifizierte json-Datei im Anhang.) Das sehe ich im mqtt-explorer, aber nicht in den cm-variablen. Aber hier sehe ich gerade auch nicht den soc, obwohl er in der E1-Kachel zu sehen ist. (Ein paar Stunden später ist er plötzlich zu sehen???) Dafür sehe ich im Start-Fenster diese Meckerei: Eval 'M12.soc-status': Parser: syntax error at position 14 after "M12.soc-status" and before ""
Und ein Hinweis noch: im mqtt-Export ist der Soc=0, obwohl in der Kachel 56% steht, sh. Screenshot. markiert als Spam
|
|
Private answer
Schön das es jetzt geht. Wird bei dir in der Kachel auch immer der COM-Fehler angezeigt? Eigentlich ist das alles in der Doku beschrieben: Die Definition habe ich genau nach dem Beispiel ganz am Ende dieser Seite erstellt. Welche Variablen ein Zähler nutzen kann steht hier. Da sieht man auch das soc kleingeschrieben wird. markiert als Spam
|
|
Private answer
Jetzt funktioniert es bei mir auch, war wohl gestern auch schon zu spät für mich, hatte die geschweiften Klammern bei der payload vergessen... Deine Frage nach dem Standard Topic des WiCAN: In dessen Topic ist seine Seriennummer enthalten, somit ungeeignet. Aber das topic des WiCAN ist frei wählbar. Außerdem ging es hier ja nur aus Anlass des WiCAN um unser Problem. Der Knackpunkt ist die Methode, ein beliebiges mqtt-topic zu abonnieren. Und dafür haben wir jetzt ein schönes Beispiel erarbeitet. Das sollte meiner Meinung nach in die Dokumentation aufgenommen werden. In den Beschreibungen zu mqtt bzw. HTTP fehlt nämlich auch jegliche Information zum Parameter "soc" (kleingeschrieben) beim HTTP-Zähler, der funktioniert zwar, ist aber nicht dokumentiert. Und wenn cfos jetzt den Wican-Zähler für einen "SOC" einführt, kann es sein, daß der nächste mit einem Gerät ankommt, das einen "SoC" veröffentlicht. Dann ist es doch besser, man findet in der Doku beschrieben, wie der json-File der Zählerdefinition für mqtt aussehen muss. Nichtsdestotrotz, ich weiß jetzt wie es geht und bedanke mich für die Hilfe.
markiert als Spam
|
|
Private answer
Ja, bei mir geht das!
markiert als Spam
|
|
Private answer
Es geht immer noch nicht. Ich gehe mal davon aus, daß das topic "wican-adapter" identisch zum Address-Eintrag im json-File sein muss. Ich habe deshalb dort "wican_adapter" zu "wican-adapter" modifiziert. Das hilft aber auch noch nicht. Im Anhang ein Screenshot vom HA-mqtt und von den cFos Charging Manager Variablen. Im HS sieht man im abonnierten topic den Wert des veröffentlichten topics. Bei cFos kommt es nicht an. Hast Du es schon im HA-mqtt getestet?
markiert als Spam
|
|
Private answer
so, da war noch ein Fehler in der Definition. Vielleicht war es gestern doch zu spät... Hab ich angepasst. Das Tropic muss "wican-adapter" heißen. Gibt es ein Standard-Topic beim Wican? Dann könnte man den vielleicht benutzen.... Warum beim Zähler die ganze Zeit ein COM-Fehler angezeigt wird, bzw. wie man den abschaltet versuche ich noch herauszufinden. markiert als Spam
|
|
Private answer
Ich hätte jetzt vermutet, dass Du das bereits hast. Damit kannst Du Dir Topics senden und auch empfangen ...Dienste->mqtt->Konfiguration. Und zum Anschauen der topics empfehle ich Dir dazu den mqtt-explorer mit zu installieren. Wenns irgendwo klemmt bei der Installation, scrolle einfach nach unten bzw. schaue in den Beitrag, von dem wir das damals abgezweigt hatten. Der Link steht ganz oben in der Frage. Das war damals mein Lernprozess:-)
markiert als Spam
|
|
Private answer
Genau, deshalb die eigene Definition. Komisch das die nicht funktioniert.... (Vielleicht installiere ich mir auch mal Moskito und schaue mir das an) markiert als Spam
|
|
Private answer
Mit dem HTTP-Zähler würde es fast gehen, nur sendet der WiCAN "SOC", der cfos-Zähler hört aber auf "soc". Modifiziere ich den SOC in der payload auf "soc", kommen die Daten an.
markiert als Spam
|
|
Private answer
Die Definition habe ich installiert und im Zähler M12 ausgewählt. Ich muss den WiCAN simulieren, da das Fahrzeug gerade nicht verfügbar ist; das mache ich mit HA-mqtt. Das topic im Wican kann ich einstellen. Hatte es ja auch ursprünglich auf cfos_mqtt/set/M12. In den Charging Manager Variablen habe ich definiert E1 = M12.soc. Die Variable bleibt unverändert auf Null. Was mir auffällt, ist, dass ich auf das Topic wican_adapter senden soll, der Zähler aber auf /wican_adapter hören soll. Die Entfernung des / bringt aber auch keine Verbesserung. Die Einstellungen meines Zählers habe ich mal zum Test per mqtt exportiert: cfos_mqtt/get/M12 { "dev_type" : "meter_wican_pro_mqtt", "device_enabled" : 1, "name" : "SoC Autobatterie", "time" : 1733831510, "address" : "mqtt://192.168.178.2", "id" : 1, "dev_id" : "M12", "number" : 112, "desc" : "HTTP Zähler", "com_err" : false, "com_err_secs" : 458, "com_errors" : 0, "status" : "", "last_error" : "", "is_evse" : false, "used_phases" : 7, "has_history" : false, "hide_dev" : true, "show_in_overview" : false, "show_chart_in_dev_info" : true, "show_chart_in_overview" : false, "factor" : 1, "import" : 0, "export" : 0, "power_w" : 0, "current_l1" : 0, "current_l2" : 0, "current_l3" : 0, "voltage_l1" : 230, "voltage_l2" : 230, "voltage_l3" : 230, "role" : 0, "model" : "WiCAN,Car_adapter,1.0,1.0,0" } Der SoC ist nicht dabei. markiert als Spam
|
|
Private answer
Kannst du das Topic des Wican-Adapters einstellen? Dann stell ihr mal auf wican_adapter und installiere dir die angehängte Definition. (txt entfernen) Als Adresse trägst du mqtt ein. markiert als Spam
|
|
Private answer
So, der Showstopper im HA ist raus. Jetzt sehe ich dort die Werte und würde sie gern direkt vom Fahrzeug auf das topic cfos_mqtt/set/M12 senden, so dass der Zähler M12 sie unmittelbar vom Fahrzeug bekommt. Es lag an der Syntax im configuration.yaml. Jetzt bleibt nur noch, der cFos Wallbox beizubringen, die Daten zu lesen. Vielleicht kann sich mal jemand von cFos noch mit einklinken und ein Beispiel beisteuern, wie man konkret einen Wert aus einem mqtt-Topic übernimmt. Die Beispiele in der Dokumentation gehen irgendwie alle an diesem Thema vorbei. Hier nochmal die Payload vom OBD-2 Adapter im Fahrzeug (Beispiel Renault Zoe Ph. 2) { Hieraus interessiert in erster Linie der SoC.
markiert als Spam
|
|
Private answer
Auf der Suche nach dem "how to" der Integration eines Zählers auf der Basis von mqtt-Daten komme ich mit der cfos-Doku nicht zu Rande. In unserer ersten Runde mit den Daten vom Renault-Server hatte ich einen "HTTP Universal-Zähler, über HTTP beliefert" ausgewählt. Damit konnte ich den SOC, vom HA kommend, auslesen. Ist das jetzt auch der richtige Weg, oder kann ich einen Zähler selbst definieren, der die Payload oder deren interessante Komponenten beschreibt. Wenn ja, wie sieht der syntaktisch aus? Ein Beispiel dafür habe ich in der cfos Doku noch nicht gefunden. Es wird immer nur auf HTTP-Zahler verwiesen. Im Moment ärgert mich meine cfos-Konfiguration auch mit der Meldung Eval 'M12.soc': Parser: syntax error at position 7 after "M12.soc" and before ""M12.soc habe ich eine Variable im Lastmanagement Setup angelegt. Bei dem vom Renault Server über HA kommenden Soc hatte das funktioniert.
markiert als Spam
|
|
Private answer
Die Einrichtung von mqtt hatte ich ja bereits mit Deine Hilfe vor einiger Zeit vorgenommen, als ich die Daten noch über den Renault Server erhalten hatte, sh. früher in diesem Thema. Mein Problem ist aktuell, dass ich keine der angelegten Sensoren sehe. Ich hänge hier noch einmal den Screenshot aus dem HA-Thread an. Ich habe Sensoren angelegt, sehe sie aber nicht als Entitäten. Dazu kommt, daß der mqtt Dienst im HA immer wieder als "nicht geladen" ausgewiesen wird. Ich vermute, daß das irgendwie miteinander zusammenhängt. Und wie ich Dich verstehe, kann ich auch im cfos eine Zählerdefinition anlegen, die die von meinem Dongle geschickten Werte empfängt. Muß diese Definition identisch zur gesendeten Payload sein oder kann es auch eine Teilmenge davon sein?
markiert als Spam
|
|
Private answer
Generell hast du zwei Möglichkeiten:
Technisch sollten beide Wege funktionieren - welche für dich der bessere ist, musst du entscheiden. Ich würde an deiner Stelle mal langsam anfangen und mir die Anbindung HA-Broker vornehmen. Erstmal sollte diese funktionieren. Für spätere Test ist das auch super praktisch. Nun kannst du dir überlegen ob du generell von HA die Werte senden lassen willst, oder der Dongle direkt an ein passendes Topic schreiben soll. markiert als Spam
|
|
Private answer
Danke, dass Du nochmal auf mein Problem eingehst. Diese Daten schickt der Dongle alle von sich aus an den Broker. Wenn ich davon nur ein Datum - mich interessiert im Grunde ja nur der SoC - herauspicken möchte, muss ich eine neue Baustelle eröffnen und den Dongle modifizieren. Das würde ich gern vermeiden. Aber vielleicht geht das sowieso nicht auf diese Art. Es wäre nur der kürzeste Weg vom Fahrzeug zur Wallbox. Was ich machen könnte, wäre, das Topic erst mal zu ändern und im HA den SoC herauszupicken und diesen allein an die Wallbox zu senden. Aber dabei habe ich auch Probleme. Ich suche nämlich verzweifelt nach der Möglichkeit, im HA auf die mqtt-Daten zuzugreifen. Beschrieben habe ich das Problem hier: https://community.home-assistant.io/t/mqtt-not-loaded-how-to-access-mqtt-data/806779 Möglicherweise macht mein mqtt im HA Probleme. Seit dem letzen Update im HA OS und Core gibt es entsprechende Issues bei Github. markiert als Spam
|
|
Private answer
Sind diese Variablen alle in deiner Zählerdefinition enthalten? Hast du es mal langsam angefangen und nur eine einzige hingeschickt? - Geht das? markiert als Spam
|
|
Private answer
Falls smileyman dieses Thema noch auf dem Schirm hat: Ich bräuchte nochmal Hilfe. Aber bei cfos stehe ich im Dunkeln. Da kommt nichts an und Variablen wie M12.SOC werden syntaktisch moniert. markiert als Spam
|
|
Private answer
Ein guter Hinweis. Ich hatte in der 30'-Automation das Topic falsch, das führte zu dem 2. Eintrag. Damit ist hier erst mal alles rund. Vielen Dank für die Unterstützung!
markiert als Spam
|
|
Private answer
Im MQTT-Explorer kannst du auch Topics / Nachrichten löschen. - Ggf. hilft dir das? Mir scheint, dass du bei denen Topics einen Drehwurm drin hast. Einmal lautet es cfos_mqtt/set/M12 und einmal cfos_mqtt/M12/soc. Kanns du das falsche (cfos_mqtt/M12/soc) mal im MQTT-Explorer löschen. - Bleibt es dann weg? Wenn nein, hast du ggf. im Zähler auf der cFos PowerBrain aktiviert, dass dieser seine Werte per MQTT veröffentlicht? (Das würde nicht viel Sinn machen, da du hier nur eine Schleife erzeugst.) Ansonsten hast du ggf. noch eine Automatisierung im HA, die dorthin etwas veröffentlicht. Der HTTP-Zähler steht auf getrennt, da er zu wenig Aktualisierungen erhält. Ich schicke meiner Hausbatterie jede Sekunde ein Update, damit habe ich das Problem nicht. - Ggf. müsstest du alle paar Sekunden ein Update senden (notfalls mit einem Lastwert, der sich regelmäßig ändert). markiert als Spam
|
|
Private answer
Dann werde ich mal bezüglich des SoC vom Fahrzeug eine neue Frage aufmachen. Es muß ja irgendwie möglich sein. Für dieses Thema hier habe ich noch 2 Fragen: Da das Ereignis „SoC ändert sich“ relativ selten auftritt, habe inzwischen eine 2. Automatisierung eingebaut, die zweimal pro Minute den SoC veröffentlicht. Das hilft aber auch nichts. Aktuell sehe diesen Wert schon die ganze Zeit. Wenn ich in der Automatisierung manuell auf „Ausführen“ gehe, wird überall alles aktualisiert. Das ist mir noch ein wenig suspekt. Und gerade jetzt fällt mir auf, daß ich im mqtt-Explorer den Wert 2x sehe. Der 2. Ist sofort richtig und der unter SET ist erst mal wieder falsch, wenn ich mich mit dem mqtt-broker verbinde. Aber vielleicht ist das auch ein Explorer-Problem und gehört nicht hierher.
markiert als Spam
|
|
Private answer
Letztendlich sind das ja auch nur vordefinierte Variablen oder Formeln, die hier zu Grunde liegen. Ich weiß leider nicht, welche Variable er hier nutzt. - Vielleicht müsste dein Zähler, in den du gerade per MQTT den SoC schreibst, die Rolle 'Verbrauch E-Auto' haben und an die Wallbox angeheftet sein? (Ist jedoch nur eine unbestätigte Vermutung.) Da jedoch nur ein Zähler angeheftet werden kann und das bei dir vermutlich der S0-Zähler ist, könnte es sein, dass das so nicht geht. Ich arbeite mit diesen Vorbelegungen kaum, sondern definiere es meist als eigene Formel. Ggf. kann dir noch jemand anderes einen Tipp geben, der da tiefer drin ist. - Ansonsten den Support mal anfragen. markiert als Spam
|
|
Private answer
Im Anhang ein Screenshot einer Regel mit dem SoC. Dass es nicht der SoC der Hausbatterie ist, habe ich bereits festgestellt. Und in der Doku steht (Der Link zu den Laderegeln):
markiert als Spam
|
|
Private answer
Ganz verstehe ich es noch nicht. E1 ist doch die Wallbox - Die hat doch keinen SoC. Auch deren angehefteter Zähler kann doch keinen SoC haben; beide haben schließlich keine Batterie. SoC kann doch nur eine Batterie haben, die du als Zähler separat anlegst. (Ich habe so z. B. meine Hausbatterie angelegt, du die Autobatterie.) Meines Erachtens kanns du über den hier skizzierten Weg nur Werte von Zählern des Typs 'HTTP' bearbeiten. Diesen Zähler kannst du auch als Kachel auf der Hauptseite einblenden lassen und eben auch in den Formeln damit arbeiten. Ob du einen Zähler von einem anderen Typ per MQTT bearbeiten kannst, habe ich nie probiert - bezweifle das aber. Wo gibt es in den Regeln die Bedingung bzgl. SoC? - Meines Erachtens musst du die als Formel selber bauen. Und dabei kannst du eben mit Werten anderer Zähler (eben des manuell angelegten HTTP-Zählers, der per MQTT befüllt wird) oder mit Lastmanagement-Variablen (auch die kannst du per MQTT bearbeiten) arbeiten. Bei mir funktioniert das einwandfrei. (Ich habe jedoch einen Teil der Regeln im Home Assistant drin und schicke teilweise nur fertige Werte an die cFos, da wenngleich ich mehr als 20 Regeln in der cFos PowerBrain habe, manches auf HA deutlich leichter fällt.) Bzgl. meiner Payload-Definition: ja, da hast du recht - da war ich unsauber. Es funktioniert jedoch beides. markiert als Spam
|