Hallo zusammen,
ich würde gerne die Ventil Positionen meiner Homematic RTs aufaddieren und durch die Anzahl der RTs teilen um einen Mittelwert aller Ventil Positionen zu ermitteln.
Kann mir jemand weiter helfen wie das zu bewerkstelligen ist?
Danke im voraus...
addieren mit "+" und teilen mit "/"
Ansonsten im CommandRef nach "average" suchen
z.B. https://fhem.de/commandref_DE.html#DOIF_aggregation
Das ganze dann in ein notify?
Zum Beispiel. Oder ein userreading. Oder ein DOIF wenn Du den Link nach DOIF Aggregation folgst..; hast Du zumindest den Link geguckt? Es gibt ein Beispiel, das fast schon macht, was du machen möchtest
ZitatDurchschnittstemperatur aller Temperatursensoren in der Gruppe "rooms":
Also folgendes habe ich in DOIF eingetragen:
([+10]) (set RT_Regler_Average {(
[HM_RT_xyz_Clima:ValvePosition]
+[HM_RT_BAD_ELTERN_Handtuch_Clima:ValvePosition]
+[HM_RT_BAD_ELTERN_Fussboden_Clima:ValvePosition]
+[HM_RT_Bad_Kinder_Clima:ValvePosition]
+[HM_RT_BueroGarten_Clima:ValvePosition]
+[HM_RT_BueroVorne_Clima:ValvePosition]
+[HM_RT_Einlieger_Bad_Clima:ValvePosition]
+[HM_RT_Einlieger_WZ_Garten_Clima:ValvePosition]
+[HM_RT_Einlieger_WZ_Vorne_Clima:ValvePosition]
+[HM_RT_abc_Clima:ValvePosition]
+[HM_RT_WZ_li_Clima:ValvePosition]
+[HM_RT_WZ_re_Clima:ValvePosition]
)/12})
Das wird auch ausgeführt, aber leider nur ein mal.... leider. Was kann ich machen das es kontinuierlich abgearbeitet wird?
Zitat von: rhoffm34 am 04 November 2017, 11:05:46
Das wird auch ausgeführt, aber leider nur ein mal.... leider. Was kann ich machen das es kontinuierlich abgearbeitet wird?
"at" anstatt "DOIF" verwenden
Gruß,
Thorsten
nimm doch einfach das Valves Modul ;)
define
Zitat von: rhoffm34 am 04 November 2017, 11:05:46
Also folgendes habe ich in DOIF eingetragen:
([+10]) (set RT_Regler_Average {(
[HM_RT_xyz_Clima:ValvePosition]
+[HM_RT_BAD_ELTERN_Handtuch_Clima:ValvePosition]
+[HM_RT_BAD_ELTERN_Fussboden_Clima:ValvePosition]
+[HM_RT_Bad_Kinder_Clima:ValvePosition]
+[HM_RT_BueroGarten_Clima:ValvePosition]
+[HM_RT_BueroVorne_Clima:ValvePosition]
+[HM_RT_Einlieger_Bad_Clima:ValvePosition]
+[HM_RT_Einlieger_WZ_Garten_Clima:ValvePosition]
+[HM_RT_Einlieger_WZ_Vorne_Clima:ValvePosition]
+[HM_RT_abc_Clima:ValvePosition]
+[HM_RT_WZ_li_Clima:ValvePosition]
+[HM_RT_WZ_re_Clima:ValvePosition]
)/12})
Das wird auch ausgeführt, aber leider nur ein mal.... leider. Was kann ich machen das es kontinuierlich abgearbeitet wird?
Wozu so kompliziert und dann noch ständige Timer-Trigger:
define RT_Regler_Average DOIF (1)
attr RT_Regler_Average state [#avarage:"Clima$:ValvePosition":ValvePosition]
hier brauchst du keinen Dummy, keine Timer, keinen set-Befehl und der Status wird nur aktualisiert, wenn sich was ändert und es ist gerade mal ein Zweizeiler;)
Hallo Thorsten,
wenn ich deinen Zweizeiler eingebe erhalte ich folgende Fehlermeldung...:
RT_Regler_Average DOIF: expected DOELSEIF or DOELSE: attr RT_Regler_Average state [#avarage:"Clima$:ValvePosition":ValvePosition]
Gruß Ralf
Also....
.... ich habe das jetzt mal in zwei Schritten eingegeben und siehe da..
1. define RT_Regler_Average DOIF (1)
2. attr RT_Regler_Average state [#avarage:"Clima$:ValvePosition":ValvePosition]
... es klappt. Allerdings war noch ein Schreibfehler : average , nicht avarage. Dann hats geklappt.
Vielen Dank Thorsten.
Das war natürlich viel sauberer als meine Version.
Vielleicht kannst Du mir hier auch helfen...
Ich würde gerne Rücklauftemperatur von der Vorlauftemperatur (Zentralheizung) subtrahieren.
Vielen Dank schon mal im voraus.
Gruß. Ralf
ZitatDas war natürlich viel sauberer als meine Version.
Naja... hättest Du gesucht, wo ich dir hier https://forum.fhem.de/index.php/topic,78618.msg705875.html#msg705875 geschrieben hatte, hättest Du folgendes Beispiel gefunden:
Zitat von: CommandRefStatusanzeige: Durchschnittstemperatur aller Temperatursensoren in der Gruppe "rooms":
define di_average_temp DOIF
attr di_average_temp state [#average:d2:":temperature":temperature:$group eq "rooms"]
und wärest Du schon fast zum Ziel gewesen...
Für deine Differenz, musst Du ein bischen genauer sein... Woher Vorlauf und Rücklauftemperatur? Sind das eigene Devices? Readings von einem Device?
Wenn Zentralheizung ein Device ist, der zwei Readings Ruecklauftemperatur und Vorlauftemperatur hat, kannst Du ein userReading auf Zentralheizung bauen.
attr Zentralheizung userReadings diffVorRueck {ReadingsVal("Zentralheizung","Vorlauftemperatur ",0)-ReadingsVal("Zentralheizung","Ruecklauftemperatur",0)}
Sonst geht es auch mit:
define difftemp DOIF (1)
attr difftemp state Diff: {([Zentralheizung:Vorlauftemperatur]-[Zentralheizung:Ruecklauftemperatur])}
aber da hast Du dann ein zusätzliches DOIF, der nur für eine Differenz steht. M.A. ist es besser mit einem userReading, der an die Heizung auch hängt.
Vielen Dank für Eure Informationen. Es passt jetzt so wie ich das haben wollte.... Danke
Eine Berechnung hätte ich aber noch gerne durchgeführt...
Ich bin ganz ehrlich, ich tue mir sehr schwer mit der Syntax. Ich komme zwar irgendwann auch alleine ans Ziel, dann ist es aber meistens ein Workaround und nicht so eine elegante Lösung wie von amenomade oder von Damian.
Also:
Ich möchte den mittleren Verbrauch über einen bestimmten Zeitraum, sagen wir mal 10 Minuten meiner Gasheizung errechnen:
Also...:
Jetzt Gaszählerstand = 7900,00
in 10 minuten Gaszählerstand = 7900,15
==> 7900,15 - 7900,00 = 0,15
Ergebnis= 0,15 m² Gas verbraucht innerhalb 10 Minuten.
Erstmal Danke