(gelöst) aus 2 werten den maximalwert auslesen?

Begonnen von elektro_rainer, 29 November 2022, 15:48:50

Vorheriges Thema - Nächstes Thema

elektro_rainer

servus,
ich versuche aus 2 verschiedenen devices den jeweils aktuellen maximalwert an ein neues device zu übergeben.
hintergrund: 2 etagenverteiler fbhz (HZ_EG_Anforderung und HZ_OG_Anforderung) und ich brauche jeweils den max wert um die heizung zu steuern (KNX_Sollwert (dpt5.001)).

meine idee das mit einem notify zu versuchen scheitert (das perl bringt mir zwar den richtigen wert).

define Summe_Heizung notify HZ_.* {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))} set KNX_Sollwert  $EVENT

irgendwie hab ich alle kombinationen durch und stehe auf dem schlauch.
kann mir bitte jemand helfen?

Otto123

#1
Hi,

gefährliches Suchmuster HZ_.*  - reagierst quasi auf alles was mit HZ_ beginnt.
Der Wert den Du suchst steht wirklich im STATE? Blöde Idee, nimm lieber ein Reading (temperature oder wenigstens state).

Mach den Eventmonitor auf und such den Event auf den Du triggern willst - als Anfang! Und leg ein leeres notify an.
https://wiki.fhem.de/wiki/Notify#Event_Monitor

Eventuell kann man das Suchmuster so relativ allgemein machen:
define Summe_Heizung notify HZ_.G_Anforderung:.* {}
oder so etwas spezieller:
define Summe_Heizung notify HZ_OG_Anforderung:.*|HZ_EG_Anforderung:.* {}
Aber besser wäre noch spezieller auf ein einzelnes Reading!

set ... $EVENT ist auch völlig falsch, Du willst ja den Inhalt des Perl Ausdruckes. Das geht mit set magic ;) :
set KNX_Sollwert {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elektro_rainer

servus,

also das suchmuster ist meines erachtens o.k., es gibt nur 2 devices im komplettem system die so anfangen....
hab das gerade so eingetragen,.. der verflixte wert aus dem perl will einfach nicht auf das neue device....

danke

Otto123

#3
{(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))} liefert den richtigen Wert in der FHEM Kommandozeile?

Die Zeile funktioniert nicht in der FHEM Kommandozeile?
set KNX_Sollwert {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))}

Ich sags mal noch anders: das Suchmuster HZ_.* ist nicht nur gefährlich sondern schlampig und im Zweifelsfall falsch! Hast Du im Eventmonitor mit diesem Suchmuster geschaut welche Events damit gefangen werden?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

<li><b>maxNum(num1, num2, ...)</b><br>returns the highest value from a
      given list (sorted numeric)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

@cooltux Was willst D uns damit sagen?  ???

@elektro_rainer
Oder funktioniert sowas?set KNX_Sollwert {(maxNum(10,12))}
Ist der KNX Befehl richtig?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

Hab zu spät gesehen das Du schon den Vorschlag gemacht hattest
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

elektro_rainer

servus,
also in der kommandozeile funktioniert das:
set KNX_Sollwert {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))}

dann muss ich also mein suchmuster anpassen.
wie mach ich das am geschicktesten bei meinen devices
- HZ_EG_Anforderung
- HZ_OG_Anforderung?

wenn ich denen einen neuen alias namen gebe, reagiert das suchmuster auf den realname oder den alias?

danke

Otto123

#8
alias geht gar nicht.
hast Du den Eventmonitor getestet?
Liefert das Device überhaupt Events?

Kannst Du mal bitte ein list HZ_EG_Anforderung posten?

@Cooltux Das hatte der TE schon so drin ;) nur verkehrt herum
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elektro_rainer

So schaut das device aus:

Internals:
   DEF        7/5/4:dpt5.001
   DEVNAME    HZ_EG_Anforderung
   FIRSTGADNAME g1
   FUUID      5c66c24b-f33f-4152-3a3e-605abf5d10a45794
   GETSTRING  g1:noArg
   IODev      KNX
   KNX_MSGCNT 2915
   KNX_RAWMSG C01108w0750468
   KNX_TIME   2022-11-29 16:52:24
   LASTInputDev KNX
   MSGCNT     2915
   NAME       HZ_EG_Anforderung
   NR         405
   SETSTRING  g1:slider,0,1,100
   STATE      41 %
   TYPE       KNX
   eventCount 2915
   model      dpt5
   GADDETAILS:
     g1:
       CODE       07504
       GROUP      7/5/4
       MODEL      dpt5.001
       NO         1
       OPTION     
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :slider,0,1,100
   GADTABLE:
     07504      g1
   READINGS:
     2022-11-10 13:17:29   IODev           KNX
     2022-11-29 16:52:24   getG1           41 %
     2022-11-29 16:52:24   last-sender     1.1.8
Attributes:
   IODev      KNX
   alias      Anforderung Heizung EG
   room       Heizung,Innentemperaturen
   webCmd     :


Otto123

Der Wert steht offenbar ursprünglich im Reading: getG1

Also ich erwähne jetzt letztmalig den Eventmonitor - ich weiß immer noch nicht ob das Device wirklich Events feuert.
Kannst Du also mal bitte im Eventmonitor schauen, ob mit dem Filter HZ_.G_Anforderung:getG1:.* irgendwelche Events kommen? Ich habe null Ahnung wie KNX tickt.

Das Prozentzeichen muss mit übergeben werden? Ok Du hast ja gesagt der Befehl funktioniert.

Den set Befehl würde ich dann so machen:
set KNX_Sollwert {(maxNum(ReadingsVal('HZ_EG_Anforderung','getG1',''),ReadingsVal('HZ_OG_Anforderung','getG1','')))}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elektro_rainer

#11
das sagt der event monitor:
Events (Filter: HZ_OG_Anforderung:.*|HZ_EG_Anforderung:.*)   FHEM log   
2022-11-30 09:06:29 KNX HZ_EG_Anforderung last-sender: 1.1.8
2022-11-30 09:06:29 KNX HZ_EG_Anforderung getG1: 17 %
2022-11-30 09:06:29 KNX HZ_EG_Anforderung 17 %
2022-11-30 09:08:12 KNX HZ_OG_Anforderung last-sender: 1.1.27
2022-11-30 09:08:12 KNX HZ_OG_Anforderung getG1: 36 %
2022-11-30 09:08:12 KNX HZ_OG_Anforderung 36 %

so habe ich das notify angelegt:  (das funktioniert!!!!!)
define Summe_Heizung notify HZ_OG_Anforderung|HZ_EG_Anforderung set KNX_Sollwert {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))}

hatte 2x notify geschrieben,... jetzt funzzt wie im code steht!

danke euch!