FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: schmodd am 31 Januar 2021, 17:54:13

Titel: KNX putCmd, woher bekommt man $gad?
Beitrag von: schmodd am 31 Januar 2021, 17:54:13
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
Titel: Aw: KNX putCmd, woher bekommt man $gad?
Beitrag von: Ned am 18 Mai 2023, 10:52:00
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 (https://wiki.fhem.de/wiki/KNX#Definitions-Felder_im_Detail)
Titel: Aw: KNX putCmd, woher bekommt man $gad?
Beitrag von: Ned am 18 Mai 2023, 11:00:09
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 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
Titel: Aw: KNX putCmd, woher bekommt man $gad?
Beitrag von: Ned am 18 Mai 2023, 11:05:01
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!!!