|
From: <e....@us...> - 2011-08-13 18:12:50
|
Revision: 405
http://openautomation.svn.sourceforge.net/openautomation/?rev=405&view=rev
Author: e.max
Date: 2011-08-13 18:12:44 +0000 (Sat, 13 Aug 2011)
Log Message:
-----------
Id property gesetzt
Property Changed:
----------------
wiregate/tools/knxquery/knxquery.pl
Property changes on: wiregate/tools/knxquery/knxquery.pl
___________________________________________________________________
Added: svn::keywords
+ Id
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <e....@us...> - 2011-08-14 11:06:21
|
Revision: 406
http://openautomation.svn.sourceforge.net/openautomation/?rev=406&view=rev
Author: e.max
Date: 2011-08-14 11:06:15 +0000 (Sun, 14 Aug 2011)
Log Message:
-----------
mehrfach GA Verarbeitung, siehe perldoc
Modified Paths:
--------------
wiregate/tools/knxquery/knxquery.pl
Modified: wiregate/tools/knxquery/knxquery.pl
===================================================================
--- wiregate/tools/knxquery/knxquery.pl 2011-08-13 18:12:44 UTC (rev 405)
+++ wiregate/tools/knxquery/knxquery.pl 2011-08-14 11:06:15 UTC (rev 406)
@@ -49,20 +49,12 @@
# koennte man mit dem Dumper machen ...
# print Dumper(%eibgaconf), "\n";
# ... soll aber schoener aussehen:
-
- my ($dptid, $dptsubid, $dptname, $gaName) = ('','','');
-
&printGaInfo($_) foreach (sort keys %eibgaconf);
} # dumpGa
sub printGaInfo
{
my $ga = shift || die "\n\n fehlender GA-paramater in printGaInfo()\n\n";
-
- # koennte man mit dem Dumper machen ...
- # print Dumper(%eibgaconf), "\n";
- # ... soll aber schoener aussehen:
-
my ($dptid, $dptsubid, $dptname, $gaName) = ('','','');
if (!exists $eibgaconf{$ga})
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <e....@us...> - 2012-03-26 14:43:31
|
Revision: 733
http://openautomation.svn.sourceforge.net/openautomation/?rev=733&view=rev
Author: e.max
Date: 2012-03-26 14:43:20 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Kleienerer Bugfix
Lesen der Konfiguration optimiert (Faktor 15)
Modified Paths:
--------------
wiregate/tools/knxquery/knxquery.pl
Modified: wiregate/tools/knxquery/knxquery.pl
===================================================================
--- wiregate/tools/knxquery/knxquery.pl 2012-03-26 09:21:07 UTC (rev 732)
+++ wiregate/tools/knxquery/knxquery.pl 2012-03-26 14:43:20 UTC (rev 733)
@@ -25,7 +25,6 @@
use strict;
use Getopt::Long;
-use Config::Std { def_sep => '=', read_config => 'my_read_cfg' };
use Switch;
use EIBConnection;
@@ -34,6 +33,8 @@
my $debug=0;
my %eibgaconf;
my $eib_url = "local:/tmp/eib";
+my @gas = ();
+my $eibgafile = '/etc/wiregate/eibga.conf';
my ($dump_arg, $read_arg, $ga_arg, $age_arg, $dpt_arg, $help);
@@ -49,12 +50,20 @@
# koennte man mit dem Dumper machen ...
# print Dumper(%eibgaconf), "\n";
# ... soll aber schoener aussehen:
+
+ my ($dptid, $dptsubid, $dptname, $gaName) = ('','','');
+
&printGaInfo($_) foreach (sort keys %eibgaconf);
} # dumpGa
sub printGaInfo
{
my $ga = shift || die "\n\n fehlender GA-paramater in printGaInfo()\n\n";
+
+ # koennte man mit dem Dumper machen ...
+ # print Dumper(%eibgaconf), "\n";
+ # ... soll aber schoener aussehen:
+
my ($dptid, $dptsubid, $dptname, $gaName) = ('','','');
if (!exists $eibgaconf{$ga})
@@ -280,6 +289,23 @@
}
}
+sub readCfg()
+{
+ my $file = shift or die "\n\nFEHLER: Dateiname für readCfg() fehlt\n\n";
+ open (IN, "< $file") or die "\n\nFEHLER: Kann Datei [$file] nicht öffnen: $!\n\n";
+ my $section;
+
+ while(<IN>)
+ {
+ chomp;
+ /^\s*$/ and next;
+
+ /^\s*\[\s*([\S]+)\]/ and $section = $1 and next;
+ $eibgaconf{$section}{$1} = $2 if ($section && /^\s*(\S+)\s*=\s*(.*)/);
+ }
+ close IN;
+} # readCfg
+
# ------------- main
usage() if ( ! GetOptions ('help|h|?' => \$help,
@@ -291,54 +317,71 @@
)
or defined $help );
-if (-e '/etc/wiregate/eibga.conf')
+
+
+if (-r $eibgafile)
{
- my_read_cfg '/etc/wiregate/eibga.conf' => %eibgaconf;
+ &readCfg($eibgafile);
+# my_read_cfg '/etc/wiregate/eibga.conf' => %eibgaconf;
}
else
{
- print "WARNUNG: unable to read config[/etc/wiregate/eibga.conf]\n";
+ print "WARNUNG: unable to read [$eibgafile]\n";
}
+!defined $ga_arg and $ga_arg='';
+
if ($dump_arg)
{
if ($ga_arg) {
- printGaInfo($ga_arg);
+ printGaInfo($_) foreach (@gas);
} else {
- dumpGa($ga_arg);
+ dumpGa();
}
exit;
}
+@gas = split(/,/, $ga_arg);
+
if ($read_arg)
{
if (!defined $ga_arg)
{
- print "FEHLER: Fuer READ bitte die Gruppenadresse angeben (EINGABETASTE druecken ...).";
+ print "FEHLER: Fuer READ bitte die Gruppenadresse(n) angeben (EINGABETASTE druecken ...) ";
getc(STDIN);
exit;
}
- if (!defined $dpt_arg && !exists $eibgaconf{$ga_arg})
+ if (!defined $dpt_arg)
{
- print "FEHLER: Unbekannte Gruppenadresse, bitte Datentyp angegeben (EINGABETASTE druecken ...).";
- getc(STDIN);
- exit;
+ foreach (@gas)
+ {
+ if (!exists $eibgaconf{$_})
+ {
+ print "FEHLER: Unbekannte GA[$_], bitte Datentyp angeben (EINGABETASTE druecken ...) ";
+ getc(STDIN);
+ exit;
+ }
+ }
}
-
+
(!$age_arg) and $age_arg = 1;
- my $res = knx_read($ga_arg, $age_arg, $dpt_arg);
- if ($res)
+ my ($res, $ga);
+ foreach $ga (@gas)
{
- print "GELESEN:ga[$ga_arg], res[$res]\n";
+ $res = knx_read($ga, $age_arg, $dpt_arg);
+ if (defined $res)
+ {
+ print "GELESEN:ga[$ga_arg], res[$res]\n";
+ }
+ else
+ {
+ print "FEHLER: READ ga[$ga_arg]\n";
+ }
}
- else
- {
- print "FEHLER: READ ga[$ga_arg]\n";
- }
exit;
}
@@ -354,7 +397,7 @@
B<knxquery.pl> -h
-B<knxquery.pl> -r -g GA [-a AGE] [-t DPT]
+B<knxquery.pl> -r -g GA[,GA ...] [-a AGE] [-t DPT]
B<knxquery.pl> -d [-g GA]
@@ -369,32 +412,35 @@
=item B<-h | --help> Anzeige dieser Hilfe.
-=item B<-r | --read> Liest einen Wert vom KNX-Bus. Die Gruppenandresse B<GA>
-muss angegeben werden. Wenn die Gruppenadresse nicht in der Konfiguration
-hinterlegt ist, muss ausserdem der datentyp B<DPT> angegeben werden.
+=item B<-r | --read> Liest einen Wert vom KNX-Bus. Der Parameter B-g <GA> fuer
+eine odere mehrere Gruppenandresse(n) muss/muessen angegeben werden. Wenn eine
+Gruppenadresse nicht in der Konfiguration hinterlegt ist, muss ausserdem der
+Datentyp Parameter B<-t DPT> angegeben werden.
-=item B<-d | --dump> Gibt Informationen zu einer oder zu allen Gruppenadressen
-aus. Wird eine B<GA> angegeben, werden Informationen nur zu dieser Adresse
-ausgegeben. Wird keine Gruppenadresse angegeben, werden Informationen zu allen
-konfigurierten Adressen ausgegeben.
+=item B<-d | --dump> Gibt Informationen zu einer, zu mehreren oder zu allen
+Gruppenadressen aus. Wird keine Gruppenadresse angegeben, werden Informationen
+zu allen konfigurierten Adressen ausgegeben, ansonsten nur zu den im B<-g GA>
+Parameter angegeben Adressen.
=item B<-g | --ga> Angabe der Gruppenadresse B<GA> deren Wert zu lesen ist
oder zu der Informationen ausgegeben werden sollen. Die Adresse muss im
Format B<H/M/U>, angegeben werden, wobei B<H> die Hauptgruppe, B<M> die
-Mittelgruppe und B<U> die Untergruppe ist.
+Mittelgruppe und B<U> die Untergruppe ist. Es koennen auch mehrere B<GA>
+angegeben werden. Diese muessen durch Kommata, ohne Leerzeichen, voneinander
+getrennt werden, z.B: B<-ga 1/20/130,4/50/160>.
-=item B<-a | --age> Maximales Cache-Alter B<AGE> des zu lesenden Wertes in Sekunden.
+=item B<-a | --age> Maximales Cache-Alter B<AGE> der zu lesenden Werte in Sekunden.
Unterlassungswert ist 1 Sekunde.
=item B<-t | --dpt> Angabe des Datentyps B<DPT>. Dieser Wert muss nur
angegeben werden, wenn die Gruppenadresse nicht in der Konfiguration
-erfasst ist. Es reicht der Haupttyp, also z.B. B<1, 2, 3> ... usw.
+erfasst ist. Es reicht der Haupttyp, also z.B. B<1, 2, 3> ... usw.
=back
=head1 VORAUSSETZUNGEN
-Das Script wurde f\xFCr das B<Wiregate> Gateway geschrieben, und erwartet eine
+Das Script wurde fuer das B<Wiregate> Gateway geschrieben, und erwartet eine
diesem Gateway entsprechende Konfiguration. Der Rechner muss an einen KNX-Bus
angeschlossen sein, und Zugriff auf diesen Bus haben, z.B. per EIB-TPUART.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <e....@us...> - 2012-03-30 14:10:37
|
Revision: 737
http://openautomation.svn.sourceforge.net/openautomation/?rev=737&view=rev
Author: e.max
Date: 2012-03-30 14:10:30 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
Neue query-Parameter:
-s text
Liste alle GA, deren Beschreibung 'text' enthaelt, ungeachtet Gross/Kleinschreibung
-S text
dto. Gross/Kleinschreibung beachtet
-H gruppe
listet alle GA inhauptgruppe 'gruppe'
-M listet alle GA dren Mittelgruppe 'gruppe' ist
-G listet alle GA dren Untergruppe 'gruppe' ist
Alle Suchkriterien werden in UND-Logik geprueft, d.h.: es muessen alle Kriterien uebereinstimmen.
Siehe auch 'perldoc knxquery.pl'
Modified Paths:
--------------
wiregate/tools/knxquery/knxquery.pl
Modified: wiregate/tools/knxquery/knxquery.pl
===================================================================
--- wiregate/tools/knxquery/knxquery.pl 2012-03-26 21:42:46 UTC (rev 736)
+++ wiregate/tools/knxquery/knxquery.pl 2012-03-30 14:10:30 UTC (rev 737)
@@ -24,7 +24,7 @@
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
use strict;
-use Getopt::Long;
+use Getopt::Long qw(:config no_ignore_case bundling);
use Switch;
use EIBConnection;
@@ -36,7 +36,8 @@
my @gas = ();
my $eibgafile = '/etc/wiregate/eibga.conf';
-my ($dump_arg, $read_arg, $ga_arg, $age_arg, $dpt_arg, $help);
+my ($dump_arg, $read_arg, $isearch_arg, $search_arg,
+ $hgroup_arg, $mgroup_arg, $group_arg, $ga_arg, $age_arg, $dpt_arg, $help);
sub usage
{
@@ -86,7 +87,26 @@
"$gaName";
} # printGaInfo
+sub doSearch()
+{
+ # prints all ga containing text and/or hgroup and/or mgroup and/or group
+ foreach my $ga (sort keys %eibgaconf)
+ {
+ ($search_arg && $eibgaconf{$ga}{name} !~ /$search_arg/) and next;
+ ($isearch_arg && $eibgaconf{$ga}{name} !~ /$isearch_arg/i) and next;
+
+ my ($hg, $mg, $g);
+ ($ga =~ /(\d+)\/(\d+)\/(\d+)/) and ($hg, $mg, $g) = ($1, $2, $3);
+
+ ($hgroup_arg && $hgroup_arg ne $hg) and next;
+ ($mgroup_arg && $mgroup_arg ne $mg) and next;
+ ($group_arg && $group_arg ne $g) and next;
+ &printGaInfo($ga)
+ }
+} # doSearch
+
+
# sub addr2str {
# my $a = $_[0];
# my $b = $_[1] || 0; # 1 if local (group) address, else physical address
@@ -298,8 +318,7 @@
while(<IN>)
{
chomp;
- /^\s*$/ and next;
-
+ /^\s*$/ and next;
/^\s*\[\s*([\S]+)\]/ and $section = $1 and next;
$eibgaconf{$section}{$1} = $2 if ($section && /^\s*(\S+)\s*=\s*(.*)/);
}
@@ -308,17 +327,21 @@
# ------------- main
-usage() if ( ! GetOptions ('help|h|?' => \$help,
- 'd|dump' => \$dump_arg,
- 'r|read' => \$read_arg,
- 'ga|g=s' => \$ga_arg,
- 'age|a=i' => \$age_arg,
- 'dpt|t=s' => \$dpt_arg
+usage() if ( ! GetOptions ('help|h|?' => \$help,
+ 'd|dump' => \$dump_arg,
+ 's|search=s' => \$isearch_arg,
+ 'S|Search=s' => \$search_arg,
+ 'H|hgroup=s' => \$hgroup_arg,
+ 'M|mgroup=s' => \$mgroup_arg,
+ 'G|group=s' => \$group_arg,
+ 'r|read' => \$read_arg,
+ 'ga|g=s' => \$ga_arg,
+ 'age|a=i' => \$age_arg,
+ 'dpt|t=s' => \$dpt_arg
)
or defined $help );
-
if (-r $eibgafile)
{
&readCfg($eibgafile);
@@ -343,6 +366,12 @@
exit;
}
+if ($isearch_arg || $search_arg || $hgroup_arg || $mgroup_arg || $group_arg)
+{
+ &doSearch();
+ exit;
+}
+
@gas = split(/,/, $ga_arg);
if ($read_arg)
@@ -401,48 +430,48 @@
B<knxquery.pl> -d [-g GA]
+B<knxquery.pl> [-[sS] SEARCHARG] [-H HGROUP] [-M MGROUP] [-G GROUP]
+
=head1 BESCHREIBUNG
-B<knxquery.pl> liest einen Wert vom KNX-Bus und gibt diesen auf stdout aus.
+B<knxquery.pl> liest einen Wert vom KNX-Bus und gibt diesen auf stdout aus, erstellt eine Liste aller Gruppenadressen, macht eine Textsuche ueber alle Gruppenadressen oder listet Gruppenadressen nach Haupt-, Mittel- und Untergruppen auf.
=head1 OPTIONEN
=over
-=item B<-h | --help> Anzeige dieser Hilfe.
+=item * B<-h | --help> Anzeige dieser Hilfe.
-=item B<-r | --read> Liest einen Wert vom KNX-Bus. Der Parameter B-g <GA> fuer
-eine odere mehrere Gruppenandresse(n) muss/muessen angegeben werden. Wenn eine
-Gruppenadresse nicht in der Konfiguration hinterlegt ist, muss ausserdem der
-Datentyp Parameter B<-t DPT> angegeben werden.
+=item * B<-d | --dump> Gibt Informationen zu einer, zu mehreren oder zu allen Gruppenadressen aus. Wird keine Gruppenadresse angegeben, werden Informationen zu allen konfigurierten Adressen ausgegeben, ansonsten nur zu den im B<-g GA> Parameter angegeben Adressen.
-=item B<-d | --dump> Gibt Informationen zu einer, zu mehreren oder zu allen
-Gruppenadressen aus. Wird keine Gruppenadresse angegeben, werden Informationen
-zu allen konfigurierten Adressen ausgegeben, ansonsten nur zu den im B<-g GA>
-Parameter angegeben Adressen.
+=item * B<-s | --search> Listet alle Gruppenadressen auf, deren Beschreibung B<SEARCHARG> enthaelt. Die Suche unterscheidet nicht nach Gross- und Kleinschreibung.
-=item B<-g | --ga> Angabe der Gruppenadresse B<GA> deren Wert zu lesen ist
-oder zu der Informationen ausgegeben werden sollen. Die Adresse muss im
-Format B<H/M/U>, angegeben werden, wobei B<H> die Hauptgruppe, B<M> die
-Mittelgruppe und B<U> die Untergruppe ist. Es koennen auch mehrere B<GA>
-angegeben werden. Diese muessen durch Kommata, ohne Leerzeichen, voneinander
-getrennt werden, z.B: B<-ga 1/20/130,4/50/160>.
+=item * B<-S | --Search> Listet alle Gruppenadressen auf, deren Beschreibung B<SEARCHARG> enthaelt. Die Suche unterscheidet nach Gross- und Kleinschreibung.
-=item B<-a | --age> Maximales Cache-Alter B<AGE> der zu lesenden Werte in Sekunden.
-Unterlassungswert ist 1 Sekunde.
+=item * B<-H | --hgroup> Listet alle Gruppenadressen auf, die Teil der Hauptgruppe B<HGROUP> sind.
-=item B<-t | --dpt> Angabe des Datentyps B<DPT>. Dieser Wert muss nur
-angegeben werden, wenn die Gruppenadresse nicht in der Konfiguration
-erfasst ist. Es reicht der Haupttyp, also z.B. B<1, 2, 3> ... usw.
+=item * B<-M | --mgroup> Listet alle Gruppenadressen auf, deren Mittelgruppe B<MGROUP> ist, auch wenn sie aus unterschiedlichen Hauptgruppen sind.
+=item * B<-G | --group> Listet alle Gruppenadressen auf, deren Gruppe B<GROUP> ist, auch wenn sie aus unterschiedlichen Haupt- oder Mittelgruppen sind.
+
+=item * B<-r | --read> Liest einen Wert vom KNX-Bus. Der Parameter B-g <GA> fuer eine odere mehrere Gruppenandresse(n) muss/muessen angegeben werden. Wenn eine Gruppenadresse nicht in der Konfiguration hinterlegt ist, muss ausserdem der Datentyp Parameter B<-t DPT> angegeben werden.
+
+=item * B<-g | --ga> Angabe der Gruppenadresse B<GA> deren Wert zu lesen ist oder zu der Informationen ausgegeben werden sollen. Die Adresse muss im Format B<H/M/U>, angegeben werden, wobei B<H> die Hauptgruppe, B<M> die Mittelgruppe und B<U> die Untergruppe ist. Es koennen auch mehrere B<GA> angegeben werden. Diese muessen durch Kommata, ohne Leerzeichen, voneinander getrennt werden, z.B: B<-ga 1/20/130,4/50/160>.
+
+=item * B<-a | --age> Maximales Cache-Alter B<AGE> der zu lesenden Werte in Sekunden. Unterlassungswert ist 1 Sekunde.
+
+=item * B<-t | --dpt> Angabe des Datentyps B<DPT>. Dieser Wert muss nur angegeben werden, wenn die Gruppenadresse nicht in der Konfiguration erfasst ist. Es reicht der Haupttyp, also z.B. B<1, 2, 3> ... usw.
+
=back
+=head1 ANMERKUNG
+
+Die Suchargumente -[sS], -H, -M und -G sind UND-Argumente. D.h.: Eine Gruppenadresse wird nur dann gelistet, wenn alle Suchkriterien zutreffen.
+
=head1 VORAUSSETZUNGEN
-Das Script wurde fuer das B<Wiregate> Gateway geschrieben, und erwartet eine
-diesem Gateway entsprechende Konfiguration. Der Rechner muss an einen KNX-Bus
-angeschlossen sein, und Zugriff auf diesen Bus haben, z.B. per EIB-TPUART.
+Das Script wurde fuer das B<Wiregate> Gateway geschrieben, und erwartet eine diesem Gateway entsprechende Konfiguration. Der Rechner muss an einen KNX-Bus angeschlossen sein, und Zugriff auf diesen Bus haben, z.B. per EIB-TPUART.
=head1 MITWIRKENDE
@@ -450,6 +479,6 @@
=head1 COPYRIGHT
-Copyright (c) 2011 Edgar <emax> Hermanns, <emax at berlios punkt de>
+Copyright (c) 2011 Edgar <emax> Hermanns, <emax at launchpad dot net>
=cut
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|