2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

Fixing DEF, error for devspec listing of FileLog

Fixing multiple room listing.
Adding allSets/allAttrs


git-svn-id: https://svn.fhem.de/fhem/trunk@1817 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2012-08-29 20:00:23 +00:00
parent ab612451b9
commit 8a6577b861

View File

@ -75,13 +75,12 @@ PrintHashJson($$)
{ {
my ($h, $lev) = @_; my ($h, $lev) = @_;
my ($str,$sstr) = ("","");
my $hc = keys %{$h}; my $hc = keys %{$h};
my $cc = 1; my @str;
foreach my $c (sort keys %{$h}) { foreach my $c (sort keys %{$h}) {
my $str = "";
if(ref($h->{$c})) { if(ref($h->{$c})) {
if(ref($h->{$c}) eq "HASH" && $c ne "PortObj") { if(ref($h->{$c}) eq "HASH" && $c ne "PortObj") {
if($c eq "IODev" || $c eq "HASH") { if($c eq "IODev" || $c eq "HASH") {
@ -89,7 +88,7 @@ PrintHashJson($$)
} else { } else {
$str .= sprintf("%*s\"%s\": {\n", $lev, " ", $c); $str .= sprintf("%*s\"%s\": {\n", $lev, " ", $c);
if(keys(%{$h->{$c}}) != 0) { if(keys(%{$h->{$c}}) != 0) {
$str .= PrintHashJson($h->{$c}, $lev+2); $str .= PrintHashJson($h->{$c}, $lev+2);
} else { } else {
$str .= sprintf("%*s\"null\": \"null\"\n", $lev+4, " "); $str .= sprintf("%*s\"null\": \"null\"\n", $lev+4, " ");
} }
@ -103,12 +102,10 @@ PrintHashJson($$)
} else { } else {
$str .= sprintf("%*s\"%s\": \"%s\"", $lev," ",$c, JsonEscape($h->{$c})); $str .= sprintf("%*s\"%s\": \"%s\"", $lev," ",$c, JsonEscape($h->{$c}));
} }
$str .= ",\n" if($cc != $hc); push @str, $str if($str);
$str .= "\n" if($cc == $hc);
$cc++;
} }
return $str; return join(",\n", @str) . "\n";
} }
##################################### #####################################
@ -157,17 +154,6 @@ CommandJsonList($$)
#$str .= sprintf("%*s},\n", $lev+6, " ") if($t eq $lt); #$str .= sprintf("%*s},\n", $lev+6, " ") if($t eq $lt);
my $a1 = JsonEscape($p->{STATE}); my $a1 = JsonEscape($p->{STATE});
my $a2 = JsonEscape(getAllSets($d));
my @sets;
foreach my $k2 (split(" ", $a2)) {
push @sets, $k2;
}
my $a3 = JsonEscape(getAllAttr($d));
my @attrs;
foreach my $k3 (split(" ", $a3)) {
push @attrs, $k3;
}
# close device object # close device object
$str .= sprintf("%*s},\n", $lev+6, " ") if($t eq $lt); $str .= sprintf("%*s},\n", $lev+6, " ") if($t eq $lt);
@ -260,44 +246,39 @@ CommandJsonList($$)
$str .= sprintf("%*s},\n", $lev+10, " ") if($cc != $ac); $str .= sprintf("%*s},\n", $lev+10, " ") if($cc != $ac);
$str .= sprintf("%*s}\n", $lev+10, " ") if($cc == $ac); $str .= sprintf("%*s}\n", $lev+10, " ") if($cc == $ac);
} }
$str .= sprintf("%*s]\n", $lev+8, " "); $str .= sprintf("%*s],\n", $lev+8, " ");
} else { } else {
$str .= sprintf("%*s\"READINGS\": []\n", $lev+8, " "); $str .= sprintf("%*s\"READINGS\": [],\n", $lev+8, " ");
} }
if($cc gt $ac) {
# corresponding set parameters # corresponding set parameters
$str .= sprintf("%*s\"sets\": [\n", $lev+6, " "); $str .= sprintf("%*s\"sets\": [\n", $lev+6, " ");
my $sets = getAllSets($d);
$ac = @sets; if($sets) {
$cc = 0; my @pSets;
foreach my $set (@sets) { foreach my $set (split(" ", JsonEscape($sets))) {
$str .= sprintf("%*s\"%s\"", $lev+8, " ", $set); push @pSets, sprintf("%*s\"%s\"", $lev+8, " ", $set);
$cc++; }
#$str .= ",\n" if($cc != $ac); $str .= join(",\n", @pSets);
$str .= ",\n" if($cc != $ac); }
#$str .= "\n" if($cc == $ac);
}
$str .= sprintf("\n%*s],\n", $lev+6, " "); $str .= sprintf("\n%*s],\n", $lev+6, " ");
# corresponding attributes # corresponding attributes
$str .= sprintf("%*s\"attrs\": [\n", $lev+6, " "); $str .= sprintf("%*s\"attrs\": [\n", $lev+6, " ");
$ac = @attrs; my $attrs = getAllAttr($d);
$cc = 0; if($attrs) {
foreach my $attr (@attrs) { my @aSets;
$str .= sprintf("%*s\"%s\"", $lev+8, " ", $attr); foreach my $attr (split(" ", JsonEscape($attrs))) {
$cc++; push @aSets, sprintf("%*s\"%s\"", $lev+8, " ", $attr);
#$str .= ",\n" if($cc != $ac); }
$str .= ",\n" if($cc != $ac); $str .= join(",\n", @aSets);
$str .= "\n" if($cc == $ac); }
} $str .= sprintf("\n%*s]\n", $lev+6, " ");
}
$tc++; $tc++;
$tr = $tc if($q eq ""); $tr = $tc if($q eq "");
$tr++ if($q ne "" && $p->{TYPE} eq $t); $tr++ if($q ne "" && $p->{TYPE} eq $t);
#$str .= sprintf("} ") if(($tc == $dc) || (!$lt));
#$str .= sprintf("+++}\n") if(($tc == $dc) || (!$lt));
$str .= sprintf("%*s}\n", $lev+6, " ") if(($tc == $dc) || (!$lt)); $str .= sprintf("%*s}\n", $lev+6, " ") if(($tc == $dc) || (!$lt));
} }
$str .= sprintf("%*s]\n", $lev+4, " ") if($lt); $str .= sprintf("%*s]\n", $lev+4, " ") if($lt);
@ -314,14 +295,12 @@ if($cc gt $ac) {
} else { } else {
if($param eq "ROOMS") { if($param eq "ROOMS") {
my @rooms; my %rooms;
foreach my $d (sort keys %defs) { foreach my $d (keys %attr) {
if($attr{$d}{"room"}) { my $r = $attr{$d}{room};
push(@rooms, $attr{$d}{"room"}) unless(grep($_ eq $attr{$d}{"room"}, @rooms)); map { $rooms{$_} = 1 } split(",", $r) if($r && $r ne "hidden");
next;
}
} }
@rooms = sort(@rooms); my @rooms = sort keys %rooms;
# Result counter # Result counter
my $c = 0; my $c = 0;
@ -349,18 +328,9 @@ if($cc gt $ac) {
} else { } else {
# Search for given device-type # Search for given device-type
my $listDev = ""; my @devs = grep { $param eq $defs{$_}{TYPE} } keys %defs;
foreach my $d (sort { my $x = $defs{$a}{TYPE} cmp
$defs{$b}{TYPE};
$x = ($a cmp $b) if($x == 0); $x; } keys %defs) {
if($param eq $defs{$d}{TYPE}) {
$listDev = $defs{$d}{TYPE};
next;
}
}
# List devices by type if(@devs) {
if($listDev ne "") {
my $lt = ""; my $lt = "";
my $ld = ""; my $ld = "";
# Result counter # Result counter
@ -368,7 +338,7 @@ if($cc gt $ac) {
# Open JSON object # Open JSON object
$str .= "{\n"; $str .= "{\n";
$str .= sprintf("%*s\"%s\": \"%s\",\n", $lev, " ", "ResultSet", "devices#$listDev"); $str .= sprintf("%*s\"%s\": \"%s\",\n", $lev, " ", "ResultSet", "devices#$param");
# Open JSON array # Open JSON array
$str .= sprintf("%*s\"%s\": [", $lev, " ", "Results"); $str .= sprintf("%*s\"%s\": [", $lev, " ", "Results");