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