kein MQTT in INFLUX

Alles was mit der Solaranzeige Image Installation und Betrieb zu tun hat. Einfache Konfiguration mit einem Gerät.

Moderator: Ulrich

Carlo57
Beiträge: 10
Registriert: Sa 28. Jan 2023, 11:19

kein MQTT in INFLUX

Beitrag von Carlo57 »

Hallo miteinander,
ich benutze die Solaranzeige in der 64Bit-Version. Mein Wechselrichter ist ein SUN1600G3 von Deye, welcher leider nicht direkt von der Solaranzeige unterstützt wird. Deswegen kommen die Daten vom Wechselrichter via MQTT. Eingestellt sind die Topics, wie in der Installationsanleitung der Solaranzeige gefordert. Als "Regler" in der Solaranzeige eingestellt ist ein Shelly 3EM, welcher seine Daten in die Influx-Datenbank liefert.

Abfrage:

Code: Alles auswählen

mosquitto_sub -h localhost -v -t +/#

Ergebnis:
mosquitto_screen_01.jpg
-> Die MQTT-Daten vom Wechselrichter kommen also prinzipiell an (im Moment ist es dunkel)

Wie bekomme die MQTT-Daten gespeichert damit ich in Grafana auf sie zugreifen kann?

Carlo57

Benutzeravatar
Ulrich
Administrator
Beiträge: 5543
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 835 Mal

Re: kein MQTT in INFLUX

Beitrag von Ulrich »

-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Carlo57
Beiträge: 10
Registriert: Sa 28. Jan 2023, 11:19

Re: kein MQTT in INFLUX

Beitrag von Carlo57 »

Hallo Ulrich,
danke für den Link. Diese Informationen habe ich natürlich als Erstes durchgeackert. Trotz alledem scheitere ich seit mehreren Wochen daran.

Falls es also noch ein paar weitere Tipps gäbe, welchen ich nachgehen kann, dann wäre ich sehr dankbar.

Meine gekürzte user.config.php ist diese:

Code: Alles auswählen

<?php
/******************************************************************************
$Regler = "31";
$GeraeteNummer = "1";
$Seriennummer = "0000000000";                 // Regler = "5"
$Zugang_Kennwort = "";                        // wird zur Zeit nicht benutzt
$HF2211 = false;
$Batteriepacks = "1"; //                                Regler = "41"
$PylonTech = "2000";  //                                Regler = "41"
$WR_IP = "x.x.x.x;  //  -> da steht sonst meine Regler-IP drin
$WR_Port = "80";
$WR_Adresse = "1";   //  Achtung Adresse als Dezimalzahl eingeben / 1 bis 256
$Objekt = "Parki_Bezug";
$InfluxDB_local = true;
$InfluxDBLokal  = "solaranzeige";
$Wiederholungen = 1;
$InfluxDB_remote = false;
$InfluxPort = 8086;
$InfluxDBName  = "solaranzeige";
$InfluxAdresse = "localhost";
$InfluxSSL = false;
$InfluxUser = "";
$InfluxPassword ="";
$InfluxDaylight = false;
$Homematic = false;
$Homematic_IP = "xxx.xxx.xxx.xxx";
$HomeMaticVar = "";
$HM_auslesen = false;
$HM_Geraetetyp[1] = "";      // Typenbezeichnung
$HM_Seriennummer[1] = "";    // Seriennummer
$MQTT = true;
$MQTTBroker = "localhost";
$MQTTPort = 1883;
$MQTTBenutzer = "";
$MQTTKennwort = "";
$MQTTSSL = false;
$MQTTKeepAlive = 60;
$MQTTGeraet = "SUN1600G3";
$MQTTAuswahl = "";
$MQTTTopic[1] = "solaranzeige/anzeige/1/logger_status";
$MQTTTopic[2] = "solaranzeige/anzeige/1/day_energy";
$MQTTTopic[3] = "solaranzeige/anzeige/1/total_energy";
$MQTTTopic[4] = "solaranzeige/anzeige/1/ac/l1/voltage";
$MQTTTopic[5] = "solaranzeige/anzeige/1/ac/l1/current";
$MQTTTopic[6] = "solaranzeige/anzeige/1/ac/l1/power";
$MQTTTopic[7] = "solaranzeige/anzeige/1/ac/freq";
$MQTTTopic[8] = "solaranzeige/anzeige/1/uptime";
$MQTTTopic[9] = "solaranzeige/anzeige/1/dc/pv1/voltage";
$MQTTTopic[10] = "solaranzeige/anzeige/1/dc/pv1/current";
$MQTTTopic[11] = "solaranzeige/anzeige/1/dc/pv1/power";
$MQTTTopic[12] = "solaranzeige/anzeige/1/dc/pv1/day_energy";
$MQTTTopic[13] = "solaranzeige/anzeige/1/dc/pv1/total_energy";
$MQTTTopic[14] = "solaranzeige/anzeige/1/dc/pv2/voltage";
$MQTTTopic[15] = "solaranzeige/anzeige/1/dc/pv2/current";
$MQTTTopic[16] = "solaranzeige/anzeige/1/dc/pv2/power";
$MQTTTopic[17] = "solaranzeige/anzeige/1/dc/pv2/day_energy";
$MQTTTopic[18] = "solaranzeige/anzeige/1/dc/pv2/total_energy";
$MQTTTopic[19] = "solaranzeige/anzeige/1/dc/pv3/voltage";
$MQTTTopic[20] = "solaranzeige/anzeige/1/dc/pv3/current";
$MQTTTopic[21] = "solaranzeige/anzeige/1/dc/pv3/power";
$MQTTTopic[22] = "solaranzeige/anzeige/1/dc/pv3/day_energy";
$MQTTTopic[23] = "solaranzeige/anzeige/1/dc/pv3/total_energy";
$MQTTTopic[24] = "solaranzeige/anzeige/1/dc/pv4/voltage";
$MQTTTopic[25] = "solaranzeige/anzeige/1/dc/pv4/current";
$MQTTTopic[26] = "solaranzeige/anzeige/1/dc/pv4/power";
$MQTTTopic[27] = "solaranzeige/anzeige/1/dc/pv4/day_energy";
$MQTTTopic[28] = "solaranzeige/anzeige/1/dc/pv4/total_energy";
$MQTTTopic[29] = "solaranzeige/anzeige/1/dc/total_power#";
$MQTTTopic[30] = "solaranzeige/anzeige/1/operating_power";
$MQTTTopic[31] = "solaranzeige/anzeige/1/ac/active_power";
$MQTTTopic[32] = "solaranzeige/anzeige/1/radiator_temp";

Carlo57
Beiträge: 10
Registriert: Sa 28. Jan 2023, 11:19

Re: kein MQTT in INFLUX

Beitrag von Carlo57 »

Closed; Problem gelöst.

Kurze Rückmeldung:

Nach Änderung der MQTT-Topics auf die unteren Einträge gibt es nun den MQTT Ordner. Jetzt gehe ich mal auf die Suche nach dem Warum.

Code: Alles auswählen

$MQTTTopic[1] = "solaranzeige/anzeige/1/#";
$MQTTTopic[2] = "solaranzeige/anzeige/1/#";
$MQTTTopic[3] = "solaranzeige/anzeige/1/#";
$MQTTTopic[4] = "solaranzeige/anzeige/1/#";
$MQTTTopic[5] = "solaranzeige/anzeige/1/#";
$MQTTTopic[6] = "solaranzeige/anzeige/1/#";
$MQTTTopic[7] = "solaranzeige/anzeige/1/#";
$MQTTTopic[8] = "solaranzeige/anzeige/1/#";
$MQTTTopic[9] = "solaranzeige/anzeige/1/#";
$MQTTTopic[10] = "solaranzeige/anzeige/1/#";
$MQTTTopic[11] = "solaranzeige/anzeige/1/#";
$MQTTTopic[12] = "solaranzeige/anzeige/1/#";
$MQTTTopic[13] = "solaranzeige/anzeige/1/#";
$MQTTTopic[14] = "solaranzeige/anzeige/1/#";
$MQTTTopic[15] = "solaranzeige/anzeige/1/#";
$MQTTTopic[16] = "solaranzeige/anzeige/1/#";
$MQTTTopic[17] = "solaranzeige/anzeige/1/#";
$MQTTTopic[18] = "solaranzeige/anzeige/1/#";
$MQTTTopic[19] = "solaranzeige/anzeige/1/#";
$MQTTTopic[20] = "solaranzeige/anzeige/1/#";
$MQTTTopic[21] = "solaranzeige/anzeige/1/#";
$MQTTTopic[22] = "solaranzeige/anzeige/1/#";
$MQTTTopic[23] = "solaranzeige/anzeige/1/#";
$MQTTTopic[24] = "solaranzeige/anzeige/1/#";
$MQTTTopic[25] = "solaranzeige/anzeige/1/#";
$MQTTTopic[26] = "solaranzeige/anzeige/1/#";
$MQTTTopic[27] = "solaranzeige/anzeige/1/#";
$MQTTTopic[28] = "solaranzeige/anzeige/1/#";
$MQTTTopic[29] = "solaranzeige/anzeige/1/#";
$MQTTTopic[30] = "solaranzeige/anzeige/1/#";
$MQTTTopic[31] = "solaranzeige/anzeige/1/#";
$MQTTTopic[32] = "solaranzeige/anzeige/1/#";

Carlo57
Beiträge: 10
Registriert: Sa 28. Jan 2023, 11:19

Re: kein MQTT in INFLUX

Beitrag von Carlo57 »

Leider funktioniert die MQTT-Datensammlung nur sehr unzuverlässig bei mir. Im Gut-Fall werden alle 33 MQTT-Daten meines DEYE-Wechselrichters in die Solaranzeige-Datenbank gespeichert. Via "mosquitto_sub -h localhost -v -t +/#" kann ich zuverlässig immer alle 33 Werte sehen. Leider klappt das Speichern der letzten Werte nicht zuverlässig.

Falls es klappt, dann kann ich zumindest sehen, das die Zeit zwischen dem Senden zur Solaranzeige-InfluxDB und dem nächsten Eintrag 1 oder wenige Sekunden beträgt. (siehe 16:54:03 und 16:54:11)

Dieser Wert schaukelt sich innerhalb der fortlaufenden Durchläufe immer mehr auf. Im unteren Fall z.B. 16:54:03 bis 16:54:11 oder 16:57:01 bis 16:57:30. Nun reicht die Zeit scheinbar nicht mehr aus, alle anderen MQTT-Werte zu speichern und diese fehlen dann in der Datenbank.


Auszug aus Solaranzeige.log:

Code: Alles auswählen

15.04. 16:54:02 *  -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet. 
15.04. 16:54:03 MQT-PIPE ausgelesen und versendet.
15.04. 16:54:03 MQT-MQTT Daten zum Broker gesendet bzw. vom Broker empfangen. Adresse: 192.168.178.110 Port: 1883
15.04. 16:54:11 MQT-Array

Code: Alles auswählen

15.04. 16:57:01 *  -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet. 
15.04. 16:57:01 MQT-Daten in die Influx Datenbank 'solaranzeige' geschrieben. Gerätenummer: 1 Spalte: status  Wert: offline RC: OK. Daten zur InfluxDB  gesendet.
15.04. 16:57:01 MQT-PIPE ausgelesen und versendet.
15.04. 16:57:01 MQT-MQTT Daten zum Broker gesendet bzw. vom Broker empfangen. Adresse: 192.168.178.110 Port: 1883
15.04. 16:57:30 MQT-Array


Auszug aus dem PHP-Log:

Code: Alles auswählen

[15-Apr-2023 15:50:01 Europe/Berlin] PHP Fatal error:  Uncaught Mosquitto\Exception: The connection was lost. in /var/www/html/mqtt_prozess.php:230
Stack trace:
#0 /var/www/html/mqtt_prozess.php(230): Mosquitto\Client->loop()
#1 {main}
  thrown in /var/www/html/mqtt_prozess.php on line 230
[15-Apr-2023 16:46:01 Europe/Berlin] PHP Fatal error:  Uncaught Mosquitto\Exception: The connection was lost. in /var/www/html/mqtt_prozess.php:230
Stack trace:
#0 /var/www/html/mqtt_prozess.php(230): Mosquitto\Client->loop()
#1 {main}
  thrown in /var/www/html/mqtt_prozess.php on line 230
[15-Apr-2023 16:51:01 Europe/Berlin] PHP Fatal error:  Uncaught Mosquitto\Exception: The connection was lost. in /var/www/html/mqtt_prozess.php:230
Stack trace:
#0 /var/www/html/mqtt_prozess.php(230): Mosquitto\Client->loop()
#1 {main}
  thrown in /var/www/html/mqtt_prozess.php on line 230


Wie könnte ich das Problem lösen, ohne die MQTT-Funktionalität zu verlieren?
Danke schön.

Carlo57

Benutzeravatar
Ulrich
Administrator
Beiträge: 5543
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 835 Mal

Re: kein MQTT in INFLUX

Beitrag von Ulrich »

Der Empfang von MQTT Daten ist nur für einzelne Daten oder einzelne Befehle gedacht. Es ist und war nie die Absicht darüber, alle Daten eines Gerätes zu empfangen und die Daten dann in die Influx Datenbank abzuspeichern. Um mehrere Daten gleichzeitig in die Influx Datenbank zu übertragen, ist die API gedacht. Die ist schnell genug. Der jetzige MQTT Empfang ist zu langsam.

Was fehlt, ist der Empfang von mehreren MQTT Daten und ein Abspeichern der Daten dann per API. Und das ganze muss auch noch konfiguriert werden können. Diese Middleware gibt es aber derzeit nicht. Eventuell könnte das ja jemand mal schreiben.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste