Hi Andre,
danke für die Erweiterung...
Ich habe das gerade mal angetestet, und ein paar Bemerkungen:
- Mit welchem Schlüssel kann ich denn z.B. diese valueStyle-Anweisungen verwenden? Ich versuche damit dann dem Ergebnis z.B. ein %-Zeichen anzuhängen oder eine rechtsbündige Ausgabe zu erreichen...
Irgendwie habe ich ja keinen Readings-Namen dazu

- Ich fände es super, wenn man den Perl-Code zum Umrechnen von Readings-Werten in rechenbare Werte direkt in der ReadingsGroup angeben könnte. Ich mag es nicht, wenn immer irgendeine Rechnung dann noch in meiner Utils rumfliegt

Man könnte ja z.B. ein Attribut valueConverter einführen, der für jede Spalte (Mechanik dabei wie bei allen andern value... Attributen auch) die Möglichkeit einer einfachen oder per Perl-Code angegebenen Umrechnung vornimmt.
Dieses Attribut wird dann immer erstmal auf den zu rechnenden ReadingsWert angewendet, und das Ergebnis dann an deine Aggregat-Funktion übergeben (bzw. in das Interne Array geschrieben).
Damit könnte man die Standard-Rechnungen noch schlanker und direkter in der ReadingsGroup selbst abwickeln...
- Irgendwie stimmt die Spaltenzählung nicht ganz, bzw. ist nicht konsistent.
Wenn ich z.B. in der Zeilen-Definition für die Summe o.ä. einen eigenen Titel verwenden möchte:
define rg readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> type=HeatingThermostat:mode,desiredTemperature,valveposition rg:<MaxVentil>,<>,<>,$max(:$COLUMN)
Dann aggregiert er irgendwas, und zeigt in meinem Fall kein Ergebnis an. Wenn ich eins von den leeren <> wegnehme, dann steht das Rechenergebnis eine Spalte zu weit links aber korrekt berechnet.
Wenn ich es so schreibe:
define rg readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> type=HeatingThermostat:mode,desiredTemperature,valveposition rg:<MaxVentil>,<>,<>,$max(:3)
Geht es (wobei 4 der logischere Wert wäre

)
Das liegt wohl daran, das die Zeilenausgabe der ersten Spalte (des Devices z.B.) nicht mitgezählt wird. Wenn ich diese Spalte aber selber beschreibe (mit der <>-Schreibweise), dann zählt sie wohl mit.
Mal konkret mein Beispiel zum Verdeutlichen:
Im Anhang mal ein Screenshot zu folgender Definition:
define heizung_Sammler_Stellventile readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> type=HeatingThermostat:mode,desiredTemperature,valveposition heizung_Sammler_Stellventile:<Max. Ventilstellung>,<>,<>,!calculatedValue heizung_Sammler_Stellventile:<Test1>,<>,$max(:$COLUMN) heizung_Sammler_Stellventile:<Test2>,<>,<>,$max(:3)
Die erste Max-Spalte ist das "alte" Format, ohne deine Aggregat-Funktionalität.
- Was ich mir für später noch vorstellen könnte, wäre diese Aggregat-Ergebnisse auch ausserhalb der ReadingsGroup verwenden zu können.
In meinem Beispiel berechne ich ja z.B. das Maximum der Öffnungsgrade aller Stellventile. Das ist als Info ja ganz nett, aber eigentlich würde ich den Wert später gerne dazu verwenden, z.B. die Heizungsumwälzpumpe bei einem Maximum von 0% nach kurzer Zeit abzuschalten, bzw. bei Bedarf über 0% wieder anzuschalten. Das wäre ja eine Super-Aufgabe für ein DOIF, aber dann muss ich mir das Maximum wieder selber berechnen... es sei denn, es gäbe eine Abfragemöglichkeit dieses Rechenergebnisses durch das DOIF (oder auch andere)-Module. Dann hätte man das an einer Stelle, sozusagen wie so ein ReadingsProxy, nur eben ein Readings-Aggregat-Proxy...
Aber eine Supersache das ganze... Das geht genau in die richtige Richtung, danke dafür

Grüße
Reiner