2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-07 12:58:13 +00:00

Version 0.9.0 Bugfixes ...

git-svn-id: https://svn.fhem.de/fhem/trunk@600 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parix 2010-03-21 12:45:27 +00:00
parent c788b3a86b
commit 638cd6567c

View File

@ -1,19 +1,22 @@
################################################################################ ################################################################################
#*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA
# 97 GROUP # 97 GROUP
# Feedback: http://groups.google.com/group/fhem-users # Feedback: http://groups.google.com/group/fhem-users
# Logging to RRDs # Logging to RRDs
# Autor: a[PUNKT]r[BEI]oo2p[PUNKT]net # Autor: a[PUNKT]r[BEI]oo2p[PUNKT]net
# Stand: 19.03.2010 # Stand: 21.03.2010
# Version: 0.9.5 # Version: 0.9.0
#*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA*BETA # ToDos:
# - Delete empty Categories in sub GRP_Undef
# - rebuild $hash->{defptr} and $hash->{conf} in sub GROUP_Initialize
################################################################################ ################################################################################
# Usage: # Usage:
# define <New-Group-Name> GROUP <CATEGORY> # define <New-Group-Name> GROUP <CATEGORY>
# set <New-Group-Name> ADD/DEL <NAME>:<DEVICENAME>:<READING> # set <New-Group-Name> ADD/DEL <NAME>:<DEVICENAME>:<READING>
# #
# Spezial Categories: # Spezial Categories:
# SHOWLEFT -> This cat shows Name und Value of READING on the Left-Side (DIV-Left) # SHOWLEFT -> DisplayName & Value are shown on the Left-Side (DIV-Left)
#
# Unkown RAEDINGS: ???
################################################################################ ################################################################################
package main; package main;
use strict; use strict;
@ -36,15 +39,15 @@ sub GROUP_Initialize($)
$data{FWEXT}{$fhem_url}{NAME} = $name; $data{FWEXT}{$fhem_url}{NAME} = $name;
# Rebuild # Rebuild
delete $hash->{defptr}; # delete $hash->{defptr};
delete $hash->{conf}; # delete $hash->{conf};
foreach my $d (sort keys %defs) { # foreach my $d (sort keys %defs) {
# # Log 0, "GROUP INIT $d:" . $defs{$d}{TYPE}; # # Log 0, "GROUP INIT $d:" . $defs{$d}{TYPE};
next if(!defined($defs{$d}{TYPE})); # next if(!defined($defs{$d}{TYPE}));
next if($defs{$d}{TYPE} ne "GROUP"); # next if($defs{$d}{TYPE} ne "GROUP");
my $cat = $defs{$d}{STATE}; # my $cat = $defs{$d}{STATE};
my $ret = &GRP_HANDLE_CAT($d,$cat); # my $ret = &GRP_HANDLE_CAT($d,$cat);
} # }
return undef; return undef;
} }
@ -52,18 +55,14 @@ sub GROUP_Initialize($)
sub GRP_Define(){ sub GRP_Define(){
# define <GROUP-NMAE> GROUP <CATEGORY-NAME> # define <GROUP-NMAE> GROUP <CATEGORY-NAME>
# If no Cat is defined:<GROUP-NMAE> = <CATEGORY-NAME> # If no Cat is defined:<GROUP-NMAE> = <CATEGORY-NAME>
# define <GROUP-NMAE> GROUP <CONF> SHOWLEFT
# Show this Values in DIV-Container LEFT
my ($self, $defs) = @_; my ($self, $defs) = @_;
# # Log 0, "GROUP DEFINE " . Dumper(@_); # # Log 0, "GROUP DEFINE " . Dumper(@_);
my $name = $self->{NAME}; my $name = $self->{NAME};
# defs = $a[0] <GROUP-NAME> $a[1] GROUP $a[2]<CATEGORY-NAME> $a[3] SHOWLEFT # defs = $a[0] <GROUP-DEVICE-NAME> $a[1] GROUP $a[2]<CATEGORY-NAME>;
# $VAR2 = 'L01 GROUP SHOWLEFT';
my @a = split(/ /, $defs); my @a = split(/ /, $defs);
# CATEGORY # CATEGORY
my $cat = $name; my $cat = $name;
if(int(@a) gt 2){$cat = $a[2];} if(int(@a) gt 2){$cat = $a[2];}
# Log 0, "GROUP DEFINE CAT:" . $cat;
my $ret = &GRP_HANDLE_CAT($name,$cat); my $ret = &GRP_HANDLE_CAT($name,$cat);
# Save cat to State # Save cat to State
$self->{STATE} = $cat; $self->{STATE} = $cat;
@ -97,21 +96,18 @@ sub GRP_Set()
# set <NAME> ADD/DEL <NAME>:<DEVICE-NAME>:<READING> # set <NAME> ADD/DEL <NAME>:<DEVICE-NAME>:<READING>
# @a => a[0]:<NAME>; a[1]=ADD; a[2]= <DEVICE-NAME>:<READING> # @a => a[0]:<NAME>; a[1]=ADD; a[2]= <DEVICE-NAME>:<READING>
my ($self, @a) = @_; my ($self, @a) = @_;
# FHEMWEB Frage....Auswahliste # FHEMWEB Question....select
# Log 0, "GROUP SET " . Dumper(@_);
return "GROUP Unknown argument $a[1], choose one of ". join(" ",sort keys %{$self->{READINGS}}) if($a[1] eq "?"); return "GROUP Unknown argument $a[1], choose one of ". join(" ",sort keys %{$self->{READINGS}}) if($a[1] eq "?");
# ADD # ADD
if($a[1] eq "ADD") { if($a[1] eq "ADD") {
my ($name,$dev,$reading) = split(/:/,$a[2]); my ($name,$dev,$reading) = split(/:/,$a[2]);
if(!defined($defs{$dev})){return "Device unkwon";} if(!defined($defs{$dev})){return "Device unkwon";}
# Log 0 , "GRP SET ". $a[0] . ":" . $a[1] . ":" . $dev . ":" . $reading;
$self->{READINGS}{$name}{VAL} = $dev . ":" . $reading; $self->{READINGS}{$name}{VAL} = $dev . ":" . $reading;
$self->{READINGS}{$name}{TIME} = TimeNow(); $self->{READINGS}{$name}{TIME} = TimeNow();
} }
if($a[1] eq "DEL") { if($a[1] eq "DEL") {
# @a => a[0]:<NAME>; a[1]=DEL; a[2]= <READING> delete $self->{READINGS}{$a[2]};
delete $self->{READINGS}{$a[2]}; }
}
# Set GROUP-CAT # Set GROUP-CAT
# set <NAME> CAT <CATEGORY-NAME> # set <NAME> CAT <CATEGORY-NAME>
if($a[1] eq "CAT") { if($a[1] eq "CAT") {
@ -150,8 +146,9 @@ sub GRP_CGI_CSS() {
my $css; my $css;
$css = "<style type=\"text/css\"><!--\n"; $css = "<style type=\"text/css\"><!--\n";
$css .= "\#left {float: left; width: 15%; height:100%;}\n"; $css .= "\#left {float: left; width: 15%; height:100%;}\n";
$css .= "table.GROUP { border:thin solid; background: #E0E0E0;}\n"; $css .= "table.GROUP { border:thin solid; background: #E0E0E0; text-align:left;}\n";
$css .= "table.GROUP tr.odd { background: #F0F0F0;}\n"; $css .= "table.GROUP tr.odd { background: #F0F0F0;}\n";
$css .= "table.GROUP td {nowrap;}";
$css .= "\/\/--><\/style>"; $css .= "\/\/--><\/style>";
# TEST # TEST
#$css = "<link href=\"$__ME/group.css\" rel=\"stylesheet\"/>\n"; #$css = "<link href=\"$__ME/group.css\" rel=\"stylesheet\"/>\n";
@ -197,13 +194,16 @@ sub GRP_CGI_LEFT(){
foreach my $r (sort keys %{$defs{$g}{READINGS}}){ foreach my $r (sort keys %{$defs{$g}{READINGS}}){
# Name | Value # Name | Value
my ($device,$reading) = split(/:/,$defs{$g}{READINGS}{$r}{VAL}); my ($device,$reading) = split(/:/,$defs{$g}{READINGS}{$r}{VAL});
my $value = $defs{$device}{READINGS}{$reading}{VAL}; if(defined($defs{$device}{READINGS}{$reading}{VAL})){
if($value =~ m/ /){ my $value = $defs{$device}{READINGS}{$reading}{VAL};
my @a = split(/ /, $value); if($value =~ m/ /){
$value = $a[0]; my @a = split(/ /, $value);
$value = $a[0];
}
$value = sprintf("%.2f", $value);
$rh .= "<tr><td>$r</td><td>$value</td></tr>\n"
} }
$value = sprintf("%.2f", $value); else{$rh .= "<tr><td>$r</td><td>???</td></tr>\n"}
$rh .= "<tr><td>$r</td><td>$value</td></tr>\n"
} }
} }
$rh .= "</table>\n"; $rh .= "</table>\n";
@ -223,15 +223,17 @@ sub GRP_CGI_RIGHT(){
# Category -> DEVICE # Category -> DEVICE
foreach my $c (sort keys %{$modules{GROUP}{defptr}{$CAT}}){ foreach my $c (sort keys %{$modules{GROUP}{defptr}{$CAT}}){
# Log 0,"GROUP CGI-RIGHT DEV: $c"; # Log 0,"GROUP CGI-RIGHT DEV: $c";
$rh .= "<table class=\"GROUP\">\n"; $rh .= "<table class=\"GROUP\" WIDTH=\"85%\">\n";
$rh .= "<tr>"; $rh .= "<tr>";
$rh .= "<th align=\"left\" WIDTH=\"10%\"><a href=\"$__ME?detail=$c\">$c</a></th>"; $rh .= "<th align=\"left\" WIDTH=\"10%\"><a href=\"$__ME?detail=$c\">$c</a></th>";
$rh .= "<th align=\"left\" WIDTH=\"10%\"></th>"; $rh .= "<th align=\"left\" WIDTH=\"8%\"></th>";
if(defined($attr{$c}{comment})){ if(defined($attr{$c}{comment})){
$comment = $attr{$c}{comment}; $comment = $attr{$c}{comment};
$rh .= "<th align=\"left\" WIDTH=\"10%\">$comment</th>";} $rh .= "<th align=\"left\" WIDTH=\"20%\" colspan=\"2\">$comment</th>";}
else {$rh .= "<th align=\"left\" WIDTH=\"10%\"></th>";} else {
$rh .= "<th align=\"left\" WIDTH=\"10%\"></th>"; $rh .= "<th align=\"left\" WIDTH=\"10%\"></th>";
$rh .= "<th align=\"left\" WIDTH=\"10%\"></th>";}
$rh .= "</tr>\n"; $rh .= "</tr>\n";
# GROUP -> READING # GROUP -> READING
foreach my $r (sort keys %{$defs{$c}{READINGS}}){ foreach my $r (sort keys %{$defs{$c}{READINGS}}){