OpenDTU Daten per MQTT an Solaranzeige

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

SörenB
Beiträge: 7
Registriert: So 16. Okt 2022, 21:10
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von SörenB »

Hi,
Ich habe den link für das telegraf config sript wieder gefunden.

https://github.com/Setcover/smarthome/b ... egraf.conf

Es ist wohl die einfachste möglichkeit die daten in die Influx zu bekommen.
Einen guten nebeneffekt gibt es noch, wenn jemand noch dieverse Thermometer die mit Tasmota laufen kann diese ebenfalls in die Datenbank schreiben lassen.

Mfg Sören

hsk1024
Beiträge: 3
Registriert: Do 8. Dez 2022, 21:30
Danksagung erhalten: 6 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von hsk1024 »

Hallo Sören,
könntest du bitte beschreiben wie das angepasst werden muss.
Habe wie gschrieben openDTU laufen und bin dbabei das 32 Bit Image von hier zu installiern.
Danke
VG
Hans
Nachtrag:
In der Raspi Konsole nun die Daten meiner zwei Panele:
mosquitto_sub -t "#" -v
solar/112171909861/1/voltage 31.80
solar/112171909861/1/current 0.15
solar/112171909861/1/power 4.70
usw...
also die Datenverbindung ist ok, aber wie geht das weiter???

SaintGeorges
Beiträge: 2
Registriert: Di 8. Nov 2022, 22:37
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von SaintGeorges »

SörenB hat geschrieben:
Fr 9. Dez 2022, 12:44
Hi,
Ich habe den link für das telegraf config sript wieder gefunden.

https://github.com/Setcover/smarthome/b ... egraf.conf

Es ist wohl die einfachste möglichkeit die daten in die Influx zu bekommen.
Einen guten nebeneffekt gibt es noch, wenn jemand noch dieverse Thermometer die mit Tasmota laufen kann diese ebenfalls in die Datenbank schreiben lassen.

Mfg Sören
Vielen Dank für's Wiederfinden, aber das ist doch ein wenig zu kompliziert ohne Beschreibung für Dummies. :lol: :lol:

SörenB
Beiträge: 7
Registriert: So 16. Okt 2022, 21:10
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von SörenB »

Hallo

Ich bin selbst Linux anfänger und Arbeite nachdem Prinzip Trail and error sowie mit viell Google. :D
Aber ich Probiere es mal zu erklären, eigentlich ist es nicht schwer.
Erstens muss man das Influx Plugin Telegraf installieren, anleitungen gibt es im Netz zu genüge.
Als nächstes muss man im Ordner /etc/telegraf / das Config script umbenenen in z.b telgraf.conf.bak, dann hat man zur Sicherheit noch das Orginal,
Und kann jetzt das oben verlinkte script in den Ordner kopieren als telegraf.conf .
Wenn das geschehen ist muss man noch mit "sudo nano telegraf.conf" um die Ip des Mosqitto brokers und der Influx Datenbank ergänzen.
Wenn das erledigt ist sollte eine neuer punkt in der Influx Datenbank erscheinen.
Jetzt muss die neue zusätzliche Datenbank nur noch in Grafana eingetragen werden und schon stehen alle von Telegraf gesammelten topics zur verfügung.
Ich habe noch einige Tasmota Sensoren im Haus ,die ich auch gleich mit auswerten kann.

Mfg Sören

hsk1024
Beiträge: 3
Registriert: Do 8. Dez 2022, 21:30
Danksagung erhalten: 6 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von hsk1024 »

openDTU Daten in solaranzeige einbauen:
***************************************
Voraussetzung: Raspi mit solaranzeige ist installiert
und im LAN/WLAN
Die Rapspi IP Adresse im openDTU GUI unter Settings MqTT Settings Hostname eingetragen.
Enable MqTT ist on
Enable Home Assinstant MQTT Auto Dicovery ist on
Publish Interwall 10
Enable Reatain Flag on

Konsole öffnen oder remote einloggen mit
ssh pi@<ip-adresse solaranzeige>
user: pi
password: solaranzeige

Prüfen ob Daten von openDTU ankommen:
mosquitto_sub -t "#" -v

1. sudo apt-get install telegraf
2. sudo mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bak
3. cd /etc/telegraf/
4. sodo nano telegraf.conf
folgene Zeilen kopieren und in den Editor eintragen
---------------Beginn------------------
[agent]
## Default data collection interval for all inputs
interval = "10s"
round_interval = true
flush_interval = "10s"
omit_hostname = true
# collection_jitter = "5s"

[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "telegraf"
username = ""
password = ""
timeout = "30s"

## openDTU ##
[[inputs.mqtt_consumer]]
name_override = "openDTU"
servers = ["tcp://localhost:1883"]
topics = [
"solar/+/status/+",
"solar/+/0/+",
"solar/+/1/+",
"solar/+/2/+"
]
data_format = "value"
data_type = "float"
tagexclude = ["host","topic"]
[[inputs.mqtt_consumer.topic_parsing]]
topic = "solar/+/+/+"
tags = "_/serial/channel/field"
[[processors.pivot]]
tag_key = "field"
value_key = "value"
------------------ende------------------

Dann speichern mit Strg+o und beenden Strg+x

5. sudo systemctl reload telegraf.service
6. systemctl status telegraf
Output muss etwa wie folgtaussehen :
systemctl status telegraf
● telegraf.service - Telegraf
Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset:
Active: active (running) since Tue 2022-12-13 09:43:53 CET; 3min 41s ago
Docs: https://github.com/influxdata/telegraf
7. Browser starten: http://<ip-raspi>:3000
Es kommt Grafana GUI
Unten links: Sign in:
user:admin
PW:solaranzeige
Zahnrad->Configuration->Data sources
klick auf Solaranzeige, runterscrollen bis Database
dort telegraf statt solaranzeige eintragen
user leer
Password reset leer lassen
Save & test klicken
Meldung datasource is working muss kommen
Explore klicken
Rechts oben Bleistift klicken: eintragen: select * from openDTU
Nun erscheinen unten alle Telemetrie Daten im Graph
z.B. openDTU.powerdc auswählen
Oben Links bei A klicken und Abfrage Namen geben: Power
Oberste Zeile: Add to dashboard
klick to new Dashboard
Oberste zeile: Save
Die Abfrage oben kann auch einfacher lauten: select powerdc from openDTU

Die Einstellungn von Grafana sind vielfältig...
Dank an Sören, der die entscheidenten Tipps gegeben hat!
MfG Hans

sylvester3112
Beiträge: 2
Registriert: Di 13. Dez 2022, 20:40
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von sylvester3112 »

Vielen Dank, mit der Anleitung habe sogar ich es geschafft, meine openDTU Daten per Grafana anzuzeigen.
Meine Frage wäre, ob man noch andere Daten als die in Grafana angezeigten auslesen und darstellen kann oder ob ich was vergessen bzw. falsch gemacht habe?
z.B. Spannung/Strom/Leistung der einzelnen PV-Module? Bei mir steht folgendes zur Auswahl, siehe Bild.

Vielen Dank und liebe Grüße
Joachim
OpenDTU joe PV - Dashboards - Dashboards - Grafana - Google Chrome 14.12.2022 16_02_09.png

dstockm
Beiträge: 12
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 2 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von dstockm »

Hallo zusammen,

kurze Verständnisfrage bevor ich mich daran versuche:
Lt. PDF kann solaranzeige ab V4.5.0 / V5.0.0 MQTT-Daten empfangen. Sollte das nicht ausreichen um mit openDTU zu kommunizieren?
Benötigt man aktuell noch telegraf um die Daten selbst in die DB zu schreiben?

sylvester3112
Beiträge: 2
Registriert: Di 13. Dez 2022, 20:40
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von sylvester3112 »

Gute Frage,
ich verwende mittlerweile node red statt telegraf um mit mqtt in und influxdb out um meine AhoyDTU Daten und meine 2 Zähler (Landis&Gyr E450) in eine influxDB zu übertragen und (via node red) den Stromüberschuss über eine Tasmota Steckdose zu verbraten (Boiler, Wasserbett,...)

Mittels MQTT Explorer (unter Windows) lassen sich sehr leicht alle topics rausfinden und direkt kopieren.
Meine eigene Frage eins weiter oben hat sich erledigt, weil man damit gleich sieht das es channel 0, 1 und 2 gibt, unter denen alle Daten übertragen werden.

dstockm
Beiträge: 12
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 2 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von dstockm »

Hallo,

es geht grundsätzlich auch direkt. Mir ist es aber noch nicht gelungen mehr als einen Wert je Wechselrichter in die DB zu bekommen.
In openDTU müssen lediglich zwei Einstellungen gemacht werden.

Hostname: IP der solaranzeige
Basis Topic: solaranzeige/anzeige/1/

in der user.config.php

Code: Alles auswählen

$MQTT = true;
...
$MQTTTopic[1] = "solaranzeige/anzeige/1/114185943012/0/power";
$MQTTTopic[2] = "solaranzeige/anzeige/1/114185943012/0/yieldday ";
$MQTTTopic[3] = "solaranzeige/anzeige/1/114185943012/1/power";
Wie das gesamte Topic aussieht, kann man gut mit dem MQTT-Explorer herausfinden.
Die lange Zahl ist die Seriennummer des Wechselrichters.
Die 0 ist der Zweig der alles enthält was im openDTU-WebUI unter "Phase" angezeigt wird - also die AC-Seite.
Unter 1, 2, ... sind die Werte der DC-Seite - also die Strings.
Power ist dann die AC-Leistung.

influx
use solaranzeige
select * from MQTT limit 10
es gibt eine Spalte mit dem Timestamp und dann je WR-Seriennr. eine Spalte aus.

Und dann sieht man auch das Problem: Es müsste meiner Meinung nach für jeden Teil-Topic eine Spalte erzeugt werden.
114185943012/0/power --> AC-Leistung
114185943012/0/yieldday --> AC-Tagesertrag
114185943012/1/power --> DC-Leistung String 1
bzw. je definiertem Topic [1], [2], [3] aus der config eine Spalte. Am besten mit konfigurierbarem Names-Mapping...
Derzeit "gewinnt" immer der zuletzt definierte Wert - in meinem Beispiel steht in der DB also immer die DC-Leistung vom WR-Sting 1.

Ich denke das könnte man noch einbauen. Schließlich suggeriert die Auflistung $MQTTTopic[x] ja einzelne Topics. Derzeit werden die DB-Namen aber aus dem ersten Teil des individuellen Strings (hier WR-Seriennr.) abgeleitet.

dstockm
Beiträge: 12
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 2 Mal

Re: OpenDTU Daten per MQTT an Solaranzeige

Beitrag von dstockm »

erweiterter Spaltenname (vollständiges Topic der openDTU):
Anpassung in mqtt_prozess.php (an zwei Stellen $Teile[3] durch $Spalte ersetzt)

Ich denke mit dem Key aus $MQTTTopic[Key] aus der user wäre es "hübscher" - war mir für "mal eben so" aber zu kompliziert.

Code: Alles auswählen

      //den ganzen Rest des Topics komplett als Spaltennamen übernehmen
      $Teile4 = explode("/",$RawDaten["MQTTTopic"],4);	  
      $Spalte = $Teile4[3];
      $Spalte = str_replace("/","_",$Spalte);  	  
      $Daten["InfluxSpalte"] = $Spalte; //$Teile[3];
      $Daten["InfluxWert"] = $RawDaten["MQTTNachricht"];
      $ret = MQTT_speichern($Daten);
      $funktionen->log_schreiben("Daten in die Influx Datenbank '".$InfluxDBLokal."' geschrieben. Gerätenummer: ".$Teile[2]." Spalte: ".$Spalte."  Wert: ".$RawDaten["MQTTNachricht"]." RC: ".$ret,"MQT",8);
 
Die Spalten heißen dann:
123456789_0_power = (WR-Id, AC, Wert)
123456789_1_power = (WR-Id, DC1, Wert)
123456789_2_power = (WR-Id, DC2, Wert)
...

Antworten

Zurück zu „Allgemeines“