Höchster Wert von DeviceReadings in Dummy schreiben

Begonnen von NoMercy, 05 August 2016, 14:07:21

Vorheriges Thema - Nächstes Thema

NoMercy

Hallo Zusammen,

ich beschäftige mich jetzt seit kurzem mit fhem, um meine bestehende (KNX/Enocean)-Steuerung und- visualisierung (eibPort) abzulösen. Lieder tue ich mich mit einigen vermeintlichen "Trivialitäten" etwas schwer.

Meine erste Frage, an der ich mir jetzt schon die Zähne ausbeiße :-(

Ich habe KNX-Raumthermostate im Einsatz, die über zwei KNX-Gruppenadressen ihre Betriebsart steuern lassen. Die eine Adresse schaltet die generelle Betriebsart (1 = Komfort, 2 = Standby, 3 = Nacht, 4 = Frostschutz). Die zweite Adresse kann die erste Adresse kurzfristig "überschreiben".

Beispiel:  Die erste Gruppenadresse ist auf 1 (=Komfort) eingestellt. Wenn jetzt z.B. ein Fenster geöffnet wird, wird auf der zweiten Gruppenadresse eine 4 (=Frostschutz) gesendet und das Raumthermostat schaltet auf Frostschutz. Wird das Fenster wieder geschlossen, wird auf der zweiten Adresse eine 0 geschrieben und das Raumthermostat schaltet automatisch wieder auf den letzten Wert der ersten Gruppenadresse (hier im Beispiel also 1).

In meiner alten Visualisierung habe ich zur Anzeige des tatsächlichen Status einfach den höchsten Wert aus beiden Gruppenadressen angezeigt. Allerdings finde ich bei fhem keine entsprechende Funktion. Mein Wunsch, wenn ich das fhem-Konzept richtig verstanden habe, wäre:

- die beiden Readings aus den KNX-GA lösen, egal welche der beiden geändert wird, ein Event aus (das habe ich auch schon hinbekommen)
- Über ein notify o.ä. werte ich aus, welches der höchste Wert von beiden GA ist und schreibe diesen dann in ein Dummy-Device (DAS IST MEIN PROBLEM)
- den Wert des Dummy-Devices zeige ich in einer Visualisierung an (das bekomme ich auch hin)

Gibt es für notify eine Funktion/Vergleich (so wie z.B. MAXVAL (Reading1, Reading2, ...)? Wenn nein, irgendeine Idee, wie das geht? Leider fehlen mir die Perl-Grundlagen, um ein eigenes Modul zuschreiben ... heul

Danke und Gruß,
Michael
 

Hans Franz

Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

justme1968

besser maxNum. und notfy oder wenn beides im gleichen device steht userReadings. und man kann das ganze auch ins orginal device schreiben. dummys sind nicht nötig.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

NoMercy

Hi Andre, Hi Franz,

danke für die schnelle Rückmeldung  :)

Leider stehe ich noch mit den ganzen Perl-Funktionen, und welche Klammer kommt wann wohin, wenn es etwas komplexer wird, auf dem Kriegsfuß. Dürfte ich nochmal um Hilfe bitten?

So sieht mein (nicht funktionierendes) Konstrukt aus:

define OG.Buero.RTR.BetriebsartAkt notify (OG.Buero.RTR.BetriebsartKurzfrist|OG.Buero.RTR.Betriebsart) set OG.Buero.RTR.BetriebsartVisu {maxNum(value(OG.Buero.RTR.BetriebsartKurzfrist),value(OG.Buero.RTR.Betriebsart))}

Wobei das triggern des Notify grundsätzlich zu funzen scheint...

- OG.Buero.RTR.BetriebsartKurzfrist hält den Wert 0 ("nicht genutzt") oder Wert 4 ("Frostschutz") aus einer KNX-Gruppenadresse (hier sind die Readings "state" bzw. "GetG1" entsprechend gesetzt)
- OG.Buero.RTR.Betriebsart hält den Wert 1-4 ("Komfort, Standby, Nacht, Frostschutz") aus einer KNX-Gruppenadresse (auch hier sind die Readings "state" bzw. "GetG1" entsprechend gesetzt)
- in OG.Buero.RTR.BetriebsartVisu soll der Maximalwert aus beiden rein (dies ist ein Dummy Device, welche sich zur Visualisierung nutzen möchte)

Vielen Dank im Voraus und Gruß,
Michael


justme1968

die fhem und perl eben sind noch lassen sich nicht so mischen und es muss Value heißen. nicht value.

der body des notify muss entweder so: {fhem("set OG... ". maxNum(Value(...), Value(...)) )}

oder so: set OG... {( maxNum(...) )}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

NoMercy

Großartig !!!! Danke!!!
So hat es jetzt funktioniert!!

Gruß,
Michael