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?
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 (https://fhem.de/commandref_modular_DE.html#set) ;) :
set KNX_Sollwert {(maxNum(Value("HZ_EG_Anforderung"),Value("HZ_OG_Anforderung")))}
Gruß Otto
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
{(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?
<li><b>maxNum(num1, num2, ...)</b><br>returns the highest value from a
given list (sorted numeric)
@cooltux Was willst D uns damit sagen? ???
@elektro_rainer
Oder funktioniert sowas?set KNX_Sollwert {(maxNum(10,12))}
Ist der KNX Befehl richtig?
Hab zu spät gesehen das Du schon den Vorschlag gemacht hattest
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
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
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 :
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','')))}
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!