Mosquitto MQTT Broker mit Daten versehen

Hi,
in meiner Software gibt es die Möglichkeit die PV Daten an einen MQTT broker zu übermitteln.

Dabei gibt es dieses Möglichkeiten:

MQTTPublishVals = Die Messwerte, die übertragen werden sollen. Durch entfernen oderhinzufügen von Werten kann man die Anzahl der zu übertragenden Werte variieren. Die Werte müssen durch Komma getrennt ohne Leerzeichen in einer Linie stehen. Die Bedeutung der Werte finden Sie im Abschnitt „Legende / Werte“
MQTTWR = Welche Wechselrichter sollen übertragen werden. Wechselrichter
beginnen mit „WR“, Eigenverbrauch über S0-Zähler mit „EV“. Nicht benötigte WR/EV löschen.
MQTTTopic = Unter welchem Topic die Werte publiziert werden
MQTTPort = Empfangsport des Servers (Standard ist 1883)
MQTTHost = Hostname oder IP des Servers. Wird hier kein Wert eingetragen wird das MQTT Pulishing deaktiviert. MQTTClientID = MQTT Client ID, eindeutige Client-Bezeichnung, z.B. ‚publishing_client‘ (optional)
MQTTPassword = Passwort, um sich anzumelden (optional)
MQTTUserName = Benutzername für die Anmeldung (optional)

Einiges davon ist optional.

Ich habe aktuell es so gefüllt:

MQTTPublishVals=PAC,UDC,UDCB,UDCC,UDCD,IDC,IDCB,IDCC,IDCD,UL1,UL2,UL3,IL1,IL2,IL3,KDY,KMT,KYR,KT0,TKK,BKDY,BKMT,BKYR,BKT0,GKDY,GKMT,GKYR,GKT0,DPAC
MQTTWR=WR1
MQTTTopic=solarview
MQTTPort=1883
MQTTHost=homeassitant.local
MQTTClientID=xxx (habe es auch ohne ClientID versucht)

Der Mosquitto Broker läuft, da hängen die Zigbees dran.
Den User habe ich so eingestellt, dass er empfangen kann, auch von außen.

Ich nutze eine Proxmox VM für SolarPV unter debian und auf dem gleichen Proxmox auch HA.
ich empfange irgendwelche Daten, nur wie geht es nun weiter:

2023-12-11 16:35:21: New connection from 192.168.178.81:43146 on port 1883.
2023-12-11 16:35:21: New client connected from 192.168.178.81:43146 as publishing_client (p2, c0, k400, u’MQTT’).
2023-12-11 16:35:24: Client publishing_client disconnected.

Danke schon mal, ist leider komplettes Neuland für mich.
Klaus

Hat niemand eine Idee, bzw. ein Tutorial, was man tun muss, damit Daten empfangen und natürlich auch verarbeitet werden können? Wäre echt super, wenn ich hier etwas Licht ins Dunkel bekommen würde.
Ich habe nun auch die PV Software upgedated, nun bekomme ich leider gar keine Verbindung mehr.
Fehlermeldung aus dem Log:

Naechste WR-Abfrage in 10 Sekunden...
Starting Thread MQTTClient.
Detaching MQTTClientStart thread...
Leaving Thread MQTTClientStart.
Start MQTT Client Thread
entering mqtt()
MQTT: connecting (192.168.178.79:1883 )
**Failed to open socket (getaddrinfo): Servname not supported for ai_socktype**
Failed to open socket mqtt socket entering exit_mqtt(status:1)
leaving exit_mqtt()
leaving mqtt()
exit MQTT Client Thread

Ich habe gegoogelt, was damit nun schon wieder ist, habe aber leider nichts gefunden. Ich nehme an, dass der Broker das abweist oder auf meiner Proxmox VM nun etwas fehlt.
Es wäre mega hilfreich ein Tutorial zu haben, wie auch der MQTT Broker zu konfigurieren ist, evt. liegt es auch daran.
Eventuell hat jemand auch einen Tipp, wie man den Broker von einem anderen Rechner im selben Netz zum Beispiel aufrufen kann.

Hallo Klaus,

ich denke es wäre hilfreich wenn Du erst einmal genau(er) beschreibst was Du da überhaupt nutzt. :wink:

Du schreibst z.B.: "in meiner Software" In welcher Software? Link?

Dann schreibst Du: “Der Mosquitto Broker läuft, da hängen die Zigbees dran.” Nur leider schreibst Du nicht wo Du den Mosquitto Broker überhaupt installiert hast. Läuft der als Addon unter HA, oder irgendwo extra unter Proxmox?

Auch schreibst Du etwas von: "Den User habe ich so eingestellt, dass er empfangen kann, auch von außen." Von welchem “User” schreibst Du da?

Da Du den Mosquitto Broker ja bereits erfolgreich für Deine Zigbee-Geräte einsetzt solltest Du ja ein gewissen Grundverständnis dazu bereits haben. Der Mosquitto Broker empfängt halt nur Daten die ihm andere Geräte per MQTT senden. Was und wie diese Geräten dann Daten senden musst Du bei den Geräten einrichten und einstellen. Also vermutlich da was Du als “meine Software” bezeichnest. Du hast dazu ja auch schon von irgendwo her Infos bekommen und hier gepostet: "Dabei gibt es dieses Möglichkeiten:"

Wenn man dazu mehr sagen soll müsstest Du m.M.n. hier erst einmal ein wenig mehr dazu schreiben und etwas mehr und genauere Infos liefern.

BTW: Ob und welche Daten ein Gerät per MQTT liefert kannst Du Dir auch hiermal anschauen und somit überprüfen.

VG Jim

Hallo Jim,
vielen Dank für die Infos.
Inzwischen sendet der client wieder, ich hatte hinter dem Port ein blank.
Ich versuche mal etwas das zusammen zufassen, was du angemerkt hast:

  • PV Software nennt sich Solarview
    Diese nutze ich schon seit 2011 für meine PV Anlage. Mit dem Entickler habe ich gesprochen, was ich wie einzurichten habe.

  • HA läuft auf einer VM auf dem Proxmox, ebenso die PV Software auf einer anderen VM unter debian 12

  • Installiert ist Mosquitto MQTT Broker, der user nennt sich MQTT

  • Aktuell sendet der Client mit folgenden Daten (ausgelesen aus dem MQQT Protokoll)
    New connection from 192.168.178.81:58422 on port 1883.
    2023-12-12 18:25:54: New client connected from 192.168.178.81:58422 as publishing_client (p2, c1, k10, u’MQTT’). Das ist jetzt nicht das, was ich erwarte, eigentlich sollten doch hier die Werte stehen, oder?

Fehlt noch etwas?
Was mir fehlt ist nun, wie komme ich an die Daten dran, bzw. schickt der Client überhaupt?

Habe eben den MQTT Explorer installiert und nun sehe ich auch was von Solarview rüberkommt. Super, also das scheint zu funktionieren.

Jetzt müssen wohl die Enditäten angelegt werden, richtig?
Habe die ersten in der config.yaml definiert. Scheint zu funktionieren.

Gruß Klaus

Moin,

na dann scheint es ja jetzt zu funktionieren. Ja wenn die Daten nicht per MQTT Discovery automatisch bei HA gefunden werden muss Du sie halt “zu Fuß” einbinden, also nach dem Motto:

mqtt:
  sensor:
    - name: "Growatt Status"
      unique_id: "growatt_status"
      state_topic: "growatt_pv"
      value_template: "{{ value_json.Status }}"

    - name: "Growatt DC Voltage"
      unique_id: "growatt_dc_voltage"
      unit_of_measurement: "V"
      device_class: "voltage"
      state_topic: "growatt_pv"
      value_template: "{{ value_json.DcVoltage }}"

 usw.     

Je nachdem in der configuration.yaml, oder in einer per include eingebundenen mqtt.yaml, oder wo/wie auch immer Du sie in eine *.yaml-Datei einbindest.

VG Jim

Hallo Klaus,
bin auch neu in HA und habe auch schon lange Solarview laufen Würde jetzt auch gerne die Daten mit mqtt einlesen.Sehe auch im MQTT Explorer die Daten des Wechselrichters, aber wie jetzt weiter. Kannst du mir deine Entitäten deiner config.yaml zur Verfügung stellen?
Gruß Dirk

Hallo Dirk,
am besten du erzeugst eine neue Datei, wo alle MQTT Sensoren stehen, sonst wird es in der config…yaml bald sehr unübersichtlich.
In der config.yaml schreibst du dann:
mqtt: !include mqtt.yaml
Hier die Sensoren:

sensor:
  - name: "PV Tagesertrag"
    unique_id: "PV Tagsertrag"
    state_topic: "solarview/WR1/KDY"
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: measurement

  - name: "PV Monatsertrag"
    unique_id: "PV Monatsertrag"
    state_topic: "solarview/WR1/KMT"
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: measurement
    value_template: |-
      {{ value | round(2) * 0.982 }}

  - name: "PV Jahresertrag"
    unique_id: "PV Jahresertrag"
    state_topic: "solarview/WR1/KYR"
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: measurement
    value_template: |-
      {{ value | round(2) * 0.982 }}

  - name: "PV Total"
    unique_id: "PV Total"
    state_topic: "solarview/WR1/KT0"
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: measurement
    value_template: |-
      {{ value | round(2) * 0.982 }}

  - name: "PV Aktuell"
    unique_id: "PV Aktuell"
    state_topic: "solarview/WR1/PAC"
    unit_of_measurement: "w"
    device_class: energy
    state_class: measurement

  - name: "PV Spez. Ertrag"
    unique_id: "PV Spez. Ertrag"
    state_topic: "solarview/WR1/KDY"
    unit_of_measurement: "%"
    device_class: battery
    state_class: measurement
    value_template: |-
      {{ value | round(2) / 5.25 }}

  - name: "PV relative Leistung"
    unique_id: "PV relative Leistung"
    state_topic: "solarview/WR1/PAC"
    unit_of_measurement: "%"
    device_class: battery
    state_class: measurement
    value_template: |-
      {{ value | round(2) / 5250 * 100 }}

  - name: "PV Spannung UDC"
    unique_id: "PV Spannung UDC"
    state_topic: "solarview/WR1/UDC"
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement

  - name: "PV Spannung UDCB"
    unique_id: "PV Spannung UDCB"
    state_topic: "solarview/WR1/UDCB"
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement

  - name: "PV Netz Spannung UL1"
    unique_id: "PV Spannung UL1"
    state_topic: "solarview/WR1/UL1"
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement

  - name: "PV Netz Gleichstrom IDC"
    unique_id: "PV Spannung IDC"
    state_topic: "solarview/WR1/IDC"
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement

  - name: "PV Netz Strom Einspeisung IL1"
    unique_id: "PV Strom Einspeisung IL1"
    state_topic: "solarview/WR1/IL1"
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement

  - name: "PV Temperatur TKK"
    unique_id: "PV Temperatur TKK"
    state_topic: "solarview/WR1/TKK"
    unit_of_measurement: "C"
    device_class: temperature
    state_class: measurement

Du musst 5250 durch deine KWPeak Leistung ersetzen und 0.982 durch den Faktor Deines Verlustes.
Du musst aber auch schauen, welche MQTT Werte du übermittelst.
Gruß Klaus

Vielen lieben Dank, ich werde testen und berichten :slight_smile:
Es funktioniert super…Danke nochmal. Das einzige was noch nicht hinhaut, ist der Eigenverbrauch über S0, da liefert solarview an mqtt D0 Werte, aber alles Nullen

Mit der aktuellen Version von Manfred Richter funktiontiert auch der Eigenverbrauch über mqtt bestens