KNX putCmd, woher bekommt man $gad?

Begonnen von schmodd, 31 Januar 2021, 17:54:13

Vorheriges Thema - Nächstes Thema

schmodd

Hi,

wir versuchen uns gerade in KNX mit FHEM einzuarbeiten.
In der Doku steht zum putCmd Folgendes:

ZitatEach device only knows one putCmd, so you have to take care about the different GAD's in the perl string.
...
f requested, fhem answers content of GAD refVal to GAD temp, answer nothing to GAD humidity:

define demo KNX 1/0/30:dpt9.001:temp 1/0/31:dpt9.001:humidity 1/0/32:dpt9:refVal
attr demo putCmd {$value= ReadingsNum("demo","temp",0,1) if ($gad =~ /temp/);;}

Wenn ich das aber probiere, bekomme ich:

Zitatset name: Eval error - Global symbol "$gad" requires explicit package name (did you forget to declare "my $gad"?) at (eval 1606) line 1.

Wie komme ich den an den Wert für gad aus dem putCmd heraus? Wo ist hier der Denkfehler?

Besten Dank

Ned

Hi schmodd
Deine Frage ist zwar schon etwas älter aber ich beschäftige mich gerade mit putcmd und versuche mal meine neuen Erkenntnisse zu teilen:

Das GAD ist der Aliasname der bei der Definition des Geräts zu einer Gruppenadresse mit angegeben werden kann.
Siehe hier:
WIKI-KNX
FHEM auf PI3B + Bullseye, KNXD, EBUSD & eBus V5 Adapter an Vailant Heizung, Alexa-Connector

Ned

wenn Dein Gerät nur ein GA enthält, dann brauchst Du Dich um die GAD auch nicht zu kümmern, siehe dieses einfache Beispiel:
defmod Solltemp_PlusMinus KNX 2/3/211:dpt1.007:SollTempAendern:set:nosuffix
attr Josefine_Solltemp_PlusMinus putCmd {$state}

wenn die GA 2/3/211 abgefragt wird, dann wird der aktuelle Wert aus dem Readings "state" auf dem KNX-Bus zurückgeliefert (0 oder 1 für decrease oder increase)
die GAD "Solltemp_PlusMinus" wird bei putCmd nicht benötigt
FHEM auf PI3B + Bullseye, KNXD, EBUSD & eBus V5 Adapter an Vailant Heizung, Alexa-Connector

Ned

dies ist ein Beispiel für ein KNX Gerät mit drei GAs:
defmod knxDatumUhrzeit KNX 0/0/7:dpt10:time:set:nosuffix  0/0/8:dpt11:date:set:nosuffix 0/0/9:dpt19:datetime:set:nosuffix
attr knxDatumUhrzeit putCmd {"now" if ($gadName eq 'time');;}

Da verwende ich die GAD "time" in der if-Abfrage, um genau anzugeben welche GA abgefragt werden darf
ich hoffe ich konnte Dir noch etwas helfen

Schönen Feiertag noch!!!
FHEM auf PI3B + Bullseye, KNXD, EBUSD & eBus V5 Adapter an Vailant Heizung, Alexa-Connector