Auf Stefans Wunsch in einem neuen Thread:
1. knx_read/write sollen überhaupt nur was schreiben, wenn die DPT/DPTSubId korrekt im /etc/wiregate/eibga.conf eingepflegt ist. Andernfalls soll einfach eine Fehlermeldung resultieren.
2. Der Parameter DPT bei knx_write soll komplett entfallen bzw. ignoriert werden.
3. Weiter sollen knx_read/write auch wahlweise statt der GA den GA-Namen (oder -Kurznamen) annehmen.
Das würde mE Fehler vermeiden und viele Plugins weniger kryptisch machen. Obendrein geht das mE sogar, ohne existierende Plugins zu "breaken", denn der dritte Parameter in knx_write würde von Perl einfach ignoriert, und die eibga.conf kann man ja auch nachträglich pflegen.
Die Tatsache, dass das Wiregate aktuell auch auf GAs schreibt, von denen es "nichts weiß" (=kein eibga.conf-Eintrag), finde ich "freaky", um mal dein Wort zu benutzen....
VG
Fry
EDIT: Ist natürlich letztlich alles eine Designentscheidung und damit die des WG-Maintainers (also deine Entscheidung), aber nur zur Diskussion gestellt - ich stelle mir das ungefähr so vor:
Allerdings fehlt hier noch die Fehlermeldung im Plugin-Log.
VG, Fry
1. knx_read/write sollen überhaupt nur was schreiben, wenn die DPT/DPTSubId korrekt im /etc/wiregate/eibga.conf eingepflegt ist. Andernfalls soll einfach eine Fehlermeldung resultieren.
2. Der Parameter DPT bei knx_write soll komplett entfallen bzw. ignoriert werden.
3. Weiter sollen knx_read/write auch wahlweise statt der GA den GA-Namen (oder -Kurznamen) annehmen.
Das würde mE Fehler vermeiden und viele Plugins weniger kryptisch machen. Obendrein geht das mE sogar, ohne existierende Plugins zu "breaken", denn der dritte Parameter in knx_write würde von Perl einfach ignoriert, und die eibga.conf kann man ja auch nachträglich pflegen.
Die Tatsache, dass das Wiregate aktuell auch auf GAs schreibt, von denen es "nichts weiß" (=kein eibga.conf-Eintrag), finde ich "freaky", um mal dein Wort zu benutzen....
VG
Fry
EDIT: Ist natürlich letztlich alles eine Designentscheidung und damit die des WG-Maintainers (also deine Entscheidung), aber nur zur Diskussion gestellt - ich stelle mir das ungefähr so vor:
Code:
--- wiregated.pl.orig 2012-05-15 10:23:09.000000000 +0200 +++ wiregated.pl 2012-05-15 10:31:54.000000000 +0200 @@ -368,7 +368,10 @@ sub knx_read { my $dst = $_[0]; my $age = $_[1] || 0; # read hot unless defined - my $dpt = $_[2]; +# my $dpt = $_[2]; + return unless defined $eibgaconf{$dst}{DPTSubId}; + $dst=$eibgaconf{$dst}{ga} if $dst!~/^[0-9\/]+$/; + my $dpt=$eibgaconf{$dst}{DPTSubId}; my $src=EIBConnection::EIBAddr(); my $buf=EIBConnection::EIBBuffer(); my $hexbytes; @@ -409,7 +412,9 @@ # DPT 14 (4 byte float value) = EIS 9 # DPT 15 (Entrance access) = EIS 12 # DPT 16 (Character string) = EIS 15 + $dst = $eibgaconf{$dst}{ga} if $dst!~/^[0-9\/]+$/ && defined $eibgaconf{$dst}{ga}; $dpt = $eibgaconf{$dst}{'DPTSubId'} unless $dpt; # read dpt from eibgaconf if existing + return unless defined $eibgaconf{$dst}{DPTSubId}; given ($dpt) { when (/^10/) { my %wd=(Mo=>1, Di=>2, Mi=>3, Do=>4, Fr=>5, Sa=>6, So=>7, Mon=>1, Tue=>2, Wed=>3, Thu=>4, Fri=>5, Sat=>6, Sun=>7);
VG, Fry
Kommentar