MQTT-Daten von zwei unterschiedlichen Sendern?

Alles was speziell mit der Anbindung der HomeMatic Zentrale und anderen Smart Home Zentralen zu tun hat. (FHEM, ioBroker usw.) Fragen Ideen und Erfolgsmeldungen.

Moderator: Ulrich

Antworten
Bertron
Beiträge: 16
Registriert: Fr 16. Okt 2020, 23:26

MQTT-Daten von zwei unterschiedlichen Sendern?

Beitrag von Bertron »

Hallo zusammen,

ich habe zwecks Erfassung der Ertragswerte einen Sonoff Pow R2 (geflasht mit Tasmota) verbaut, der seine Daten mittels MQTT an die Solaranzeige auf dem Raspberry schickt. Nun habe ich am Zweirichtungszähler einen IR-Lesekopf, der mittels FHEM ausgewertet wird und z.B. die aktuellen Werte für die Einspeisung aufzeichnet.
Nun wäre es ganz hübsch, diese Einspeisewerte auch noch in der Solaranzeige zu visualisieren.
Kann ich das auch über MQTT realisieren, so daß Solaranzeige also die Daten von zwei Sendern (Sonoff und FHEM-Raspberry) gleichzeitig empfängt und auswertet?

Bernd
Modul: Qcells Q.PEAK DUO BLK-G5 315Wp
WR: APsystems YC600
Sonoff POW R2 - Tasmota

Benutzeravatar
Ulrich
Administrator
Beiträge: 1862
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal
Kontaktdaten:

Re: MQTT-Daten von zwei unterschiedlichen Sendern?

Beitrag von Ulrich »

Ja, das geht. Lese einmal das MQTT Dokument im HowTo Bereich.
--------------------------------------
Ulrich [Admin]

Bertron
Beiträge: 16
Registriert: Fr 16. Okt 2020, 23:26

Re: MQTT-Daten von zwei unterschiedlichen Sendern?

Beitrag von Bertron »

Habe mir das MQTT-PDF mal durchgelesen, blicke aber noch nicht so ganz durch.

In meiner user.config.php (habe ich noch nichts drin verändert) steht unter MQTT nur ein Eintrag:

$MQTTTopic[1] = "solaranzeige/befehl/1/#";

Das verwundert mich nun insofern, daß meine Solaranzeige ja mit einem Sonoff Pow kommuniziert, aber keine Befehle sendet sondern nur die Werte von Tasmota liest.

Ich verstehe das nun so, daß ich eine zweite Datei mit Namen 2.user.config.php erstellen muß,
in der dann (z.B.) folgende Einträge stehen:

....
$MQTTTopic[1] = "solaranzeige/Anzeige/1/Einspeisung";
....
$Topic = "fhem-Einspeisung";

Korrekt?
Modul: Qcells Q.PEAK DUO BLK-G5 315Wp
WR: APsystems YC600
Sonoff POW R2 - Tasmota

Benutzeravatar
Ulrich
Administrator
Beiträge: 1862
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal
Kontaktdaten:

Re: MQTT-Daten von zwei unterschiedlichen Sendern?

Beitrag von Ulrich »

Die user.config.php hat mehrere Absätze die sich auf das MQTT Protokoll beziehen.
Der erste Absatz wird benötigt, wenn man die Daten von irgend einem Gerät als MQTT Daten weitersenden möchte. Z.B. die Daten eines Kostal Wechselrichters zu einem ioBroker. Also die Richtung vom Raspberry zum ioBroker.

Code: Alles auswählen

/******************************************************************************
//  MQTT Protokoll     MQTT Protokoll      MQTT Protokoll      MQTT Protokoll
//  Wenn Daten mit dem MQTT Protokoll versendet werden sollen. Hat nichts
//  direkt mit den Sonoff Geräten zu tun.
//
******************************************************************************/
//  Sollen alle ausgelesenen Daten mit dem MQTT Protokoll an einen
//  MQTT-Broker gesendet werden? Bitte das Solaranzeige-MQTT PDF Dokument lesen
$MQTT = false;
//
//  Wo ist der MQTT-Broker zu finden?
//  Entweder "localhost", eine Domain oder IP Adresse "xxx.xxx.xxx.xxx" eintragen.
//  broker.hivemq.com ist ein Test Broker   Siehe http://www.mqtt-dashboard.com/
$MQTTBroker = "localhost";
//
//  Benutzter Port des Brokers. Normal ist 1883  mit SSL 8883
$MQTTPort = 1883;
//
//  Falls der Broker gesichert ist. Sonst bitte leer lassen.
$MQTTBenutzer = "";
$MQTTKennwort = "";
//
//  Wenn man die Daten mit SSL Verschlüsselung versenden möchte.
//  Wenn hier true steht, muss im Verzeichnis "/var/www/html/" die "cerfile"
//  'ca.crt' vorhanden sein. Nähere Einzelheiten über diese Datei findet
//  man im Internet in der Mosquitto Dokumentation.
$MQTTSSL = false;
//
//  Timeout der Übertragung zum Broker. Normal = 10 bis 60 Sekunden
$MQTTKeepAlive = 60;
//
//  Topic Name oder Nummer des Gerätes solaranzeige/1
//  oder solaranzeige/box1                     (solaranzeige ist fest vorgegeben.)
//  Man kann das Gerät nennen wie man will, nur jedes Gerät, welches Daten
//  senden soll unterschiedlich. Entwerder 1 bis 6 oder Namen Ihrer Wahl vergeben.
$MQTTGeraet = "box1";
//
//  Welche Daten sollen als MQTT Message übertragen werden? Wenn hier nichts
//  aufgeführt ist, werden alle ausgelesenen Daten übertragen.
//  Bitte darauf achten, dass keine Leerstellen zwischen den Variablen sind.
//  Die einzelnen Variablen müssen mit einem Komma getrennt und klein geschrieben
//  werden. Zusätzlich müssen sie den Eintrag vom $MQTTGeraet und ein Schrägstrich
//  enthalten. Das ist nötig, da mehrere Geräte an dem raspberry hängen können.
//  Beispiel mit obigen MQTTGeraet:
//  $MQTTAuswahl = "1/ladestatus,1/solarspannung,1/solarstrom"
//  Werden hier Variablen eingetragen, dann werden auch nur diese Topics
//  übertragen.
$MQTTAuswahl = "";
//
Der 2. Absatz wird benötigt, wenn das Gerät, welches die Daten des 1. Abschnitts empfangen hat, nun Steuerbefehle an das Gerät zurück übermitteln möchte. In unserem Beispiel, wenn der ioBroker Befehle an den Kostal Wechselrichter Befehle senden möchte.
Alle Daten landen also in dem Gerät bzw. in der Datenbank, von der auch die Daten versendet werden.

Bei der Singel-Regler-Version it die Gerätenummer immer 1. Bei der Multi-Regler-Version ist es die Gerätenummer die in der user.config.php vergeben ist. Somit kann man auch Daten an die anderen Geräte innerhalb der Multi-Regler-Version senden.
Dabei gilt "Befehl" sendet die MQTT Daten an das jeweilige Gerät. "Anzeige" speichert die Daten in die jeweilige Datenbank.

Code: Alles auswählen

/******************************************************************************
//  MQTT Empfang       MQTT Empfang       MQTT Empfang       MQTT Empfang
//  Subscribing    Subscribing    Subscribing    Subscribing    Subscribing
******************************************************************************/
//  Welche Daten sollen empfangen werden. Hier können die Topics, die
//  empfangen werden sollen aufgeführt werden. Dabei gibt es 2 Möglichkeiten
//  Entweder ein einzelner Wert oder eine Reihe von Werten.
//  Wichtig! Das basis Topics ist immer solaranzeige. Dann muss entweder befehl
//  oder anzeige kommen, dann die Gerätenummer und dann die Bezeichnung des
//  Wertes. Die Gerätenummer ist immer 1, außer bei Multi-Regler-Versionen.
//  Beispiel:  solaranzeige/anzeige/1/PV-Spannung
//  In diesem Beispiel wird der Wert der PV-Spannung in die Influx Datenbank
//  geschrieben unter dem Measurement MQTT
//  oder
//  Beispiel:  solaranzeige/befehl/1/POP  mit Wert 00
//  Der Befehl POP00 wird zum Wechselrichter geschickt. Er wird jedoch nur
//  ausgeführt wenn es sich um einen erlaubten Befehl handelt, der in der
//  Datei "befehle.ini.php" enthalten ist.
//
//  Beispiele:
//  $MQTTTopic[1] = "solaranzeige/befehl/1/POP";
//  $MQTTTopic[2] = "solaranzeige/befehl/1/PCP";
//  $MQTTTopic[3] = "solaranzeige/anzeige/1/Wasserboiler";
//
//  Oder auch
//  $MQTTTopic[1] = "solaranzeige/befehl/1/#";
//  Es können so viele Topics wie benötigt aufgeführt werden. Sie müssen nur
//  durch nummeriert werden [1] bis [n]
//  Bei Multi-Regler-Versionen muss zusätzlich noch die Gerätenummer angegeben
//  werden. Weitere Informationen finden Sie auf dem Support Forum.
$MQTTTopic[1] = "solaranzeige/befehl/1/#";
//
//

der 3. Absatz wird nur benötigt, wenn ich Sonnoff oder andere Geräte mit TASMOTA Firmware als "Gerät" in der Multi-Regler-Version wie ein Wechselrichter konfigurieren möchte.

Code: Alles auswählen

/******************************************************************************
//  SONOFF Geräte mit Tasmota Firmware       SONOFF Geräte mit Tasmota Firmware
//  POW R2 / TH10 R2 oder TH16 R2  oder GOSUND SP1xx
******************************************************************************/
//  Bitte den Topic-Namen, der in der TASMOTA Firmware angegeben ist, hier
//  eintragen. Unbedingt auf Groß- und Keinschreibung achten! Der Name kann
//  frei gewählt werden, er muss nur im Gerät und hier gleich sein. Werden
//  mehrere Sonoff Geräte mit der Solaranzeige betrieben, muss jedes einzelne
//  Gerät einen anderen Topic-Namen benutzen!
$Topic = "sonoff";
//
//
Ist das so etwas klarer geworden?
Ich habe zwecks Erfassung der Ertragswerte einen Sonoff Pow R2 (geflasht mit Tasmota) verbaut, der seine Daten mittels MQTT an die Solaranzeige auf dem Raspberry schickt. Nun habe ich am Zweirichtungszähler einen IR-Lesekopf, der mittels FHEM ausgewertet wird und z.B. die aktuellen Werte für die Einspeisung aufzeichnet.
Nun wäre es ganz hübsch, diese Einspeisewerte auch noch in der Solaranzeige zu visualisieren.
Kann ich das auch über MQTT realisieren, so daß Solaranzeige also die Daten von zwei Sendern (Sonoff und FHEM-Raspberry) gleichzeitig empfängt und auswertet?
In deinem Fall ist es etwas verwirrender. Du hast also ein Sonoff Gerät mit Tasmota Firmware angeschlossen. Damit alle Daten von diesem Gerät empfangen werden können wird Abschnitt 3 benötigt. Was genau empfangen wird hängt direkt von dem Sonoff Modell ab. Ich kann also nicht irgend welche Daten per MQTT dorthin senden.

Du möchtest also "irgendwelche" Daten zur Solaranzeige senden.
Als erstes musst Du dir überlegen, in welcher Datenbank sollen die Daten landen.

Beispiel du hast 3 Geräte an einer Multi-Regler-Version angeschlossen.
-----------------------------------------------------------------------------------

1.user.config.php => Kostal Wechselrichter => Datenbank "KostalWR"
2.user.config.php => Kostal Smart Meter => Datenbank "SmartMeter"
3.user.config.php => Sonoff POW R2 => Datenbank "Sonoff_1"

Sollen die gesendeten Daten also in der Datenbank "SmartMeter" landen dann müssen sie mit dem Topic
"solaranzeige/anzeige/2/irgendwas"
gesendet werden. "irgendwas" wäre dann der Spaltenname in der Influx Datenbank "SmartMeter".

Wenn du jetzt in der jeweiligen user.config.php den Topic Namen änderst, muss das natürlich berücksichtigt werden.

Man muss schon mal etwas von MQTT gehört haben, um alles zu verstehen. Ich kann hier keine komplette MQTT Schulung abhalten. Es sollte aber jetzt schon etwas verständlicher sein.
--------------------------------------
Ulrich [Admin]

Antworten