Mittelwerte von MQTT Topic bilden und mit neuem Namen veröffentlichen ?

Begonnen von Strolchi, 20 November 2018, 14:22:35

Vorheriges Thema - Nächstes Thema

Strolchi

Hallo,
ich habe einen "Sack voll" Messwerte die alle 15 Sekunden aktualisiert werden (MQTT).
Ist es möglich dass FHEM all diese Werte über fünf Minuten einliest (also 20 mal das gleiche Topic), aus diesen 20 Werten einen Mittelwert bildet und den Mittelwert unter neuem Namen veröffentlich?
Wie macht man das wenn es möglich ist?

Randbedingung wenn machbar: Die Mittelwertbildung sollte Zeitgesteuert immer zu Beginn einer 5 Minuten Grenze beginnen. Also xx:00:00 Uhr, xx:05:00 Uhr, xx:10:00 Uhr, u.s.w.

Gruß Strolchi

Wuppi68

Hi,

brauchst Du den 5 Minuten Mittelwert in FHEM?

Wenn ja, dann kannst Du mit einem AT alle 5 Minuten den Mittelwert bilden ...

so ganz klassisch

Notify auf MQTT Device::Topic: Count += 1; Summe += Wert

AT alle 5 Minuten aligned: Mittelwert = Summe / Counter; Counter = Summe = 0;
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Strolchi

Danke schon mal.  ;)

In FHEM brauche ist den 5 Minuten Mittelwert (erst mal) nicht. Der soll nur für andere Teilnehmer aus MQTT abrufbar sein.

Der Vorschlag hört sich gut an. Als Anfänger habe ich aber noch Probleme FHEM bei zu bringen was ich will.  :(

define fuenf_minuten_mittelwerte notify MQTT Device::Luftdruck LuftdruckCount += 1; Luftdruck_m05+= Luftdruck
define fuenf_minuten_mittelwerte_publish at +00:05:00 aligned: LuftdruckMittelwert = Luftdruck_m05/ LuftdruckCount ; LuftdruckCount = Luftdruck_m05= 0;

Passt das so, oder sind da noch Fehler drin?
+00:05:00 besagt doch auch dass es alle fünf Minuten jeweils zur Sekunde 00 ausgeführt wird?
Muss ich diese beiden "Zeilen" für jeden Messwert anlegen oder kann man mehrere Messwerte als Liste bei den Parametern angeben?

Ich weiß, Einsteiger können schon dumme Fragen stellen und würden besser mal die Beschreibung lesen.  :-[

Gruß Strolchi

Wuppi68

Hallo Strolchi,

meine "Programmdarstellung" war kein Code den man direkt verwenden kann :-)

Eine Mischung aus verschiedenen Sprachen - es sollte ja nur die Info rüberkommen ;-)

Wenn Du den Wert nicht in FHEM brauchst, würde ich das ganze auch extern als Prozess/Shell Script unter (vermutlich) Linux machen --> Erzeugt weniger Events und Rechenzeit in FHEM

Wenn die Daten auf dem MQTT Server gepuffert werden, würde ich das ganze dann in einem Cron Job oder so machen.
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Strolchi

Hallo Wuppi68,

vielleicht brauche ich die 5 Minuten Mittelwerte später auch in FHEM. Das hängt aber davon ab wie sich das Thema FHEM und der Umgang damit für mich entwickelt.
Aktuell stehe ich mit FHEM noch ganz am Anfang und habe arge Probleme damit verschiedene Module so zu kombinieren dass am Ende das geschiet was ich haben will. Die Commandref erschlägt mich. Die Modul-/Deviceliste ist von der Namensgebung her oft nicht selbsterklärend. Viele Module (gerade wenn es um MQTT geht) sind nicht in deutsch beschrieben.
Die Commandref sehe ich deshalb als Nachschlagewerk für diejenigen die mit FHEM schon umgehen können, aber nicht als gute Einstiegshilfe für Anfänger.

Wenn das was ich haben will in FHEM zu aufwändig zu realisieren ist oder den Raspi zu sehr auslastet suche ich mir eine Lösung außerhalb des Raspberry weil ich von Linux und Shell Scripten noch weniger Ahnung habe.

Gruß Strolchi

Wuppi68

Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Strolchi

Zitat von: Wuppi68 am 20 November 2018, 21:58:42
hast Du schon Programmiererfahrung?

Ja, habe ich. Aber nicht mit Perl oder Python und auch nicht für irgendwelche Anwendungen unter Linux oder Windows.
Ich habe mit Z80-Assembler angefangen und war recht fit damit. Industrieanlagen mit großen Prozessleitsystemen kann ich auch programmieren.
Dann beschäftige ich mit seit ein paar Jahren mit Arduinos oder ESP8266 und ESP32. Damit kann ich inzwischen auch alles Mögliche realisieren.
Ich habe keine Probleme damit eine Aufgabe in einzelne Schritte zu zerlegen die dann zum Ziel führen.
Die Mittelwertbildung wie ich sie haben will auf einem Arduino zu realisieren, also 20x einen Messwert einlesen, aufaddieren dann durch 20 dividieren und am Ende zum MQTT-Broker zu versenden, wäre kein Problem für mich.

Bei FHEM wäre der Lösungsweg genau der gleiche.
Nur weiß ich bei FHEM nicht welche Module man dafür nutzen kann, wie man die kombiniert und wie man eine eine Werteübergabe zwischen den Modulen bewerkstelligt. Die Commandref alleine hilft mir da leider nicht weiter weil ich das Grundverständnis für eine Umsetzung einer Aufgabe in FHEM noch nicht verstanden habe.
Gibt es für FHEM, außer der Commandref, eine Schritt für Schritt Einführung die sich an Einsteiger richtet?

Gruß Strolchi

hexenmeister

Die Aufgabe kann natürlich auf verschiedene Weise gelöst werden. Klar ist, man braucht ein Dummy oder so, wo die Werte per mqtt erstmal ankommen. Ich würde wirklich einen dummy nehmen und mit MQTT_GENERIC_BRIDGE aus einem bestimmten topic befüllen (in irgendeine reading). Dann wunschgemäß berechnen und in einer anderen reading ablegen. Zum Schluss eben per MQTT publishen. Würde wieder die GenericBrigde nehmen. Die Berechnung selbst ist ja nicht weiter schwer. Kurze Suche in Wiki liefert sogar ein auf den schnellen Blick sehr gut passenden Treffer.
https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Strolchi

Danke an euch!
Ich werde die Aufgabe auf externer Hardware lösen, dann läuft das innerhalb eines Tages.
Bis ich FHEM verstanden habe vergehen mehrere Tage mit  Trial und Error.

Gruß Strolchi

Wuppi68

Zitat von: Strolchi am 21 November 2018, 21:18:38
Danke an euch!
Ich werde die Aufgabe auf externer Hardware lösen, dann läuft das innerhalb eines Tages.
Bis ich FHEM verstanden habe vergehen mehrere Tage mit  Trial und Error.

Gruß Strolchi

Arduino ist doch "C"-Style da würde ich direkt ein Programm für den PI schreiben ....

MQTT Beispiele findet man "genug" im Netz
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen