ShellyHTplus - MQTT - InfluxDB

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

Moderator: Ulrich

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

Hallo zusammen,

nachdem ich mir eine kleine Solarzelle nebst Akku für mein Projekt "Notfunk" zugelegt hatte, war schnell klar, dass ich gerne wissen möchte, was hier so an Strom passiert. Das solaranzeige.de Raspi-Image (V. 5.1.1b) war schnell installiert und auch der richtige Regler schreibt seit Monaten munter seine Daten in die DB. Jetzt habe ich "Blut geleckt" und habe gestern meinen ShellyH&Tplus überredet, an den bei solaranzeige.de mitgelieferten MQTT-Server seine Temperatur-Daten zu senden. Diese kommen auch nach wenigen Anpassungen in der InfluxDB an.

Ich habe hierzu in der Datei mqtt_prozess.php die Funktion mqttDatenAuswerten angepasst und folgende Zeilen eingefügt:

if (strpos($RawDaten["MQTTNachricht"],'"tC"') !== false) {
$Daten["InfluxSpalte"] = "Shelly-Temp1";
$Daten["InfluxWert"] = floatval(substr($RawDaten["MQTTNachricht"],14,4));
}

Dies soll den Temperatur-Wert aus der MQTT Nachricht des Shelly in die Influx Datenbank schreiben. Auch dieses funktioniert wunderbar, allerdings wird der Wert als String in der DB abgelegt und nicht als Float. Jetzt meine Fragen:
(1) Was kann ich tun, um den richtigen Datentyp abzuspeichern?
(2) Wie nimmt man so eine Änderung richtig vor, damit sie auch ein Update von solaranzeige überlebt? Muss ich auf Multi-Regler umstellen, oder sollte ich eine eigene Erweiterung schreiben? Es gibt so viele Möglichkeiten, dass mir der Überblick fehlt, wie es eigentlich gedacht ist.

Gruss, Felix

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

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von Ulrich »

Hallo Felix,

warum so kompliziert? Schalte MQTT aus und lese den Shelly so aus, wie hier beschrieben.

viewforum.php?f=55
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

Hallo Ulrich,

danke für den Hinweis. Ich hatte bei meiner Suche viel für Shelly aber nichts für Shelly H&T gefunden...
Der o.g. Link bedeutet aber, dass ich auf Multi-Regler umstellen muss, da mit der Einstellung Regler=31 ja meine Einstellung (3) überschrieben wird...

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

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von Ulrich »

Ja, wenn du mehr als ein Gerät auslesen möchtest, müssen mehrere Datenbanken angelegt und die Mult-Regler-Version konfiguriert werden.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

OK, Multiregler und DBs sind angelegt, aber nun stürzt mein Shelly immer ab. Da muss ich noch ein bissle forschen.

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

Hallo @Ulrich,
Nun steigt mein Shelly H6T plus immer aus. Er meldet gar keine Daten mehr und die Reverse Abfrage durch Dein Shelly-Modul scheint bei ihm nicht (mehr) zu funktionieren. Also habe ich einen vorhandenen RasPi genommen und ihn dazu gebracht Temp, Humidity und Pressure per MQTT zu senden. leider verarbeitet Deine MQTT-Receive funktion die Daten nur als Textstring und legt keine float Werte in der Influx DB an. Womit wir wieder beim Ausgangsproblem wären.
Kann man irgendwie konfigurieren, dass die Werte als float in die Datenbank gelangen ? Das mosquitto-log erkennt nur, dass Verbindungen eingehen. der Befehl mosquitto_sub -t solaranzeige/anzeige/# gibt aus:
19.813763407344233
55.66645140743049
945.0656859639171

und solaranzeige.log gibt aus:
04.11. 10:27:04 MQT-Array
(
[0] => solaranzeige
[1] => anzeige
[2] => 1
[3] => RPI/Temp
)

04.11. 10:27:04 MQT-Daten in die Influx Datenbank 'solaranzeige' geschrieben. Gerätenummer: 1 Spalte: RPI/Temp Wert: 19.833368793834232 RC: OK. Daten zur InfluxDB gesendet.
04.11. 10:27:04 MQT-Spalte: 'RPI_Temp' Wert: '19.833368793834232'

Am Dezimalpunkt liegt es wohl nicht, das Werte mit Komma auch als Text eingetragen werden - jedenfalls jetzt, wo die Spalte bereits existiert...

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

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von Ulrich »

Das Problem ist, dass MQTT immer nur die Daten sendet, aber nicht um welche Art von Daten es sich handelt. Deshalb kann ich nur alles als Text abspeichern, was aber Grafana in der Regel nicht stört. Wenn man genau weiß um was für Daten es sich handelt, kann man diese ja von Text in z.B. Nummerisch umwandeln.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

Verstehe. Grafana meint zu mir immer "Data is missing a number field"... Ich suche mal nach einer Anzeige-Lösung.
Ich gehe mal davon aus, dass in mqtt_process.php die Funktion aufgerufen wird, die die Daten von MQTT liest und in die influx-DB schreibt.
Unten gibt es eine function mqttDatenAuswerten($RawDaten) ... Wenn ich hier die Daten als float formatiere, sollte solaranzeige die doch richtig abspeichern, oder?

leider hilft auch
$Daten["InfluxWert"] = floatval($RawDaten["MQTTNachricht"]);
nicht, den Wert in eine float umzuwandeln...

im Log kann ich es auch nicht erkennen:

04.11. 13:30:03 MQT-Daten in die Influx Datenbank 'solaranzeige' geschrieben. Gerätenummer: 1 Spalte: RPI/Pressure Wert: 941.4401100411276 RC: OK. Daten zur InfluxDB gesendet.

schappi2610
Beiträge: 16
Registriert: Mi 14. Sep 2022, 13:13

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von schappi2610 »

Hmm.. nach einigem Suchen muss ich mal fragen: wo werden die Daten, die ich per MQTT empfange denn in die Influxdb geschrieben? in der mqtt_process.php wird die funktionen->influx_local() gar nicht aufgerufen, sondern eine eigene Funktion unten in MQTTDatenAuswerten() verwendet: MQTT_speichern().

Ist das richtig?

wenn ich dort aber einen $funktionen->log() einfüge, kommt er da scheinbar nie hin, weil nix ausgegeben wird !? So recht verstehe ich es grad nicht.

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

Re: ShellyHTplus - MQTT - InfluxDB

Beitrag von Ulrich »

Die mqtt_prozess.php ist eigenständig und benutzt nicht die funktionen.inc.php
Wer PHP programmieren kann, sieht das aber sofort.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Antworten

Zurück zu „Allgemeines“