mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-09 20:57:11 +00:00
Enable selectlist again. Thanks to sweetie-pie
git-svn-id: https://svn.fhem.de/fhem/trunk@360 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1b2a972f8a
commit
526dd5f2c4
@ -236,7 +236,7 @@ GOTBW:
|
||||
} else {
|
||||
|
||||
return "Expecting a 0-padded hex number"
|
||||
if((length($arg)&1) == 0 && $type ne "raw");
|
||||
if((length($arg)&1) == 1 && $type ne "raw");
|
||||
$initstr = "X$arg" if($type eq "verbose");
|
||||
Log GetLogLevel($name,4), "set $name $type $arg";
|
||||
CUL_SimpleWrite($hash, $sets{$type} . $arg);
|
||||
|
@ -4,7 +4,7 @@ package main;
|
||||
# Modul for FHEM
|
||||
#
|
||||
# contributed by thomas dressler 2008
|
||||
# $Id: 87_WS2000.pm,v 1.5 2008-09-21 17:55:28 rudolfkoenig Exp $
|
||||
# $Id: 87_WS2000.pm,v 1.6 2009-04-10 09:54:37 rudolfkoenig Exp $
|
||||
# corr. negativ temps / peterp
|
||||
###########################
|
||||
use strict;
|
||||
@ -82,7 +82,7 @@ WS2000_Define($$)
|
||||
return "Can't open Device $PortName: $^E\n";
|
||||
}
|
||||
#$hash->{FD}=$PortObj->{_HANDLE};
|
||||
# $readyfnlist{"$a[0].$a[2]"} = $hash;
|
||||
$readyfnlist{"$a[0].$a[2]"} = $hash;
|
||||
} else {
|
||||
eval ("use Device::SerialPort;");
|
||||
if ($@) {
|
||||
@ -97,7 +97,7 @@ WS2000_Define($$)
|
||||
return "Can't open Device $PortName: $^E\n";
|
||||
}
|
||||
$hash->{FD}=$PortObj->FILENO;
|
||||
# $selectlist{"$a[0].$a[2]"} = $hash;
|
||||
$selectlist{"$a[0].$a[2]"} = $hash;
|
||||
}
|
||||
#Parameter 19200,8,2,Odd,None
|
||||
$PortObj->baudrate(19200);
|
||||
@ -128,7 +128,7 @@ WS2000_Define($$)
|
||||
}
|
||||
$xport->autoflush(1);
|
||||
$hash->{FD}=$xport->fileno;
|
||||
# $selectlist{"$a[0].$a[2]"} = $hash;
|
||||
$selectlist{"$a[0].$a[2]"} = $hash;
|
||||
$hash->{socket}=$xport;
|
||||
|
||||
|
||||
|
@ -151,6 +151,10 @@ FileLog_Set($@)
|
||||
# Up till now following functions are impemented:
|
||||
# - int (to cut off % from a number, as for the actuator)
|
||||
# - delta-h / delta-d to get rain/h and rain/d values from continuous data.
|
||||
#
|
||||
# It will set the %data values
|
||||
# min<x>, max<x>, avg<x>, cnt<x>, lastd<x>, lastv<x>
|
||||
# for each requested column, beggining with <x> = 1
|
||||
|
||||
sub
|
||||
FileLog_Get($@)
|
||||
@ -194,6 +198,8 @@ FileLog_Get($@)
|
||||
# last2: last delta value recorded (for the very last entry)
|
||||
# last3: last delta timestamp (d or h)
|
||||
my (@d, @fname);
|
||||
my (@min, @max, @sum, @cnt, @lastv, @lastd);
|
||||
|
||||
for(my $i = 0; $i < int(@a); $i++) {
|
||||
my @fld = split(":", $a[$i], 4);
|
||||
|
||||
@ -202,11 +208,10 @@ FileLog_Get($@)
|
||||
$fname[$i] = "$outf.$i";
|
||||
$h{fh} = new IO::File "> $fname[$i]";
|
||||
}
|
||||
$h{re} = $fld[1];
|
||||
|
||||
$h{df} = defined($fld[2]) ? $fld[2] : "";
|
||||
$h{fn} = $fld[3];
|
||||
$h{didx} = 10 if($fld[3] && $fld[3] eq "delta-d");
|
||||
$h{re} = $fld[1]; # Filter: regexp
|
||||
$h{df} = defined($fld[2]) ? $fld[2] : ""; # default value
|
||||
$h{fn} = $fld[3]; # function
|
||||
$h{didx} = 10 if($fld[3] && $fld[3] eq "delta-d"); # delta idx, substr len
|
||||
$h{didx} = 13 if($fld[3] && $fld[3] eq "delta-h");
|
||||
|
||||
if($fld[0] =~ m/"(.*)"/) {
|
||||
@ -223,6 +228,12 @@ FileLog_Get($@)
|
||||
}
|
||||
$h{ret} = "";
|
||||
$d[$i] = \%h;
|
||||
$min[$i] = 999999;
|
||||
$max[$i] = -999999;
|
||||
$sum[$i] = 0;
|
||||
$cnt[$i] = 0;
|
||||
$lastv[$i] = 0;
|
||||
$lastd[$i] = "undef";
|
||||
}
|
||||
|
||||
my %lastdate;
|
||||
@ -238,14 +249,16 @@ FileLog_Get($@)
|
||||
|
||||
my $col = $h->{col};
|
||||
my $t = $h->{type};
|
||||
my $line;
|
||||
|
||||
|
||||
my $val = undef;
|
||||
my $dte = $fld[0];
|
||||
|
||||
if($t == 0) { # Fixed text
|
||||
$line = "$fld[0] $col\n";
|
||||
$val = $col;
|
||||
|
||||
} elsif($t == 1) { # The column
|
||||
$line = "$fld[0] $fld[$col]\n" if(defined($fld[$col]));
|
||||
$val = $fld[$col] if(defined($fld[$col]));
|
||||
|
||||
} elsif($t == 2) { # delta-h or delta-d
|
||||
|
||||
@ -258,7 +271,8 @@ FileLog_Get($@)
|
||||
$ts = "$lda[1]:30:00" if($hd == 13);
|
||||
my $v = $fld[$col]-$h->{last1};
|
||||
$v = 0 if($v < 0); # Skip negative delta
|
||||
$line = sprintf("%s_%s %0.1f\n", $lda[0],$ts, $v);
|
||||
$dte = "$lda[0]_$ts";
|
||||
$val = sprintf("%0.1f", $v);
|
||||
}
|
||||
$h->{last1} = $fld[$col];
|
||||
$h->{last3} = $ld;
|
||||
@ -267,19 +281,26 @@ FileLog_Get($@)
|
||||
$lastdate{$hd} = $fld[0];
|
||||
|
||||
} elsif($t == 3) { # int function
|
||||
my $val = $fld[$col];
|
||||
$line = "$fld[0] $1\n" if($val =~ m/^([0-9]+).*/);
|
||||
$val = $1 if($fld[$col] =~ m/^([0-9]+).*/);
|
||||
|
||||
} else { # evaluate
|
||||
$line = "$fld[0] " . eval($h->{fn}) . "\n";
|
||||
$val = eval($h->{fn});
|
||||
|
||||
}
|
||||
next if(!$line);
|
||||
|
||||
next if(!defined($val));
|
||||
$min[$i] = $val if($val < $min[$i]);
|
||||
$max[$i] = $val if($val > $max[$i]);
|
||||
$sum[$i] += $val;
|
||||
$cnt[$i]++;
|
||||
$lastv[$i] = $val;
|
||||
$lastd[$i] = $dte;
|
||||
|
||||
if($outf eq "-") {
|
||||
$h->{ret} .= $line;
|
||||
$h->{ret} .= "$dte $val\n";
|
||||
} else {
|
||||
my $fh = $h->{fh};
|
||||
print $fh $line;
|
||||
my $fh = $h->{fh}; # cannot use $h->{fh} in print directly
|
||||
print $fh "$dte $val\n";
|
||||
$h->{count}++;
|
||||
}
|
||||
}
|
||||
@ -317,6 +338,15 @@ FileLog_Get($@)
|
||||
}
|
||||
$fh->close();
|
||||
}
|
||||
|
||||
my $j = $i+1;
|
||||
$data{"min$j"} = $min[$i] == 999999 ? "undef" : $min[$i];
|
||||
$data{"max$j"} = $max[$i] == -999999 ? "undef" : $max[$i];
|
||||
$data{"avg$j"} = $cnt[$i] ? sprintf("%0.1f", $sum[$i]/$cnt[$i]) : "undef";
|
||||
$data{"cnt$j"} = $cnt[$i] ? $cnt[$i] : "undef";
|
||||
$data{"currval$j"} = $lastv[$i];
|
||||
$data{"currdate$j"} = $lastd[$i];
|
||||
|
||||
}
|
||||
if($internal) {
|
||||
$internal_data = \$ret;
|
||||
|
@ -138,7 +138,12 @@ structure_Set($@)
|
||||
Log 1, "ERROR: endless loop detected for $d in " . $hash->{NAME};
|
||||
next;
|
||||
}
|
||||
next if($attr{$d} && $attr{$d}{structexclude});
|
||||
|
||||
if($attr{$d} && $attr{$d}{structexclude}) {
|
||||
my $se = $attr{$d}{structexclude};
|
||||
next if($hash->{NAME} =~ m/$se/);
|
||||
}
|
||||
|
||||
$list[0] = $d;
|
||||
my $sret .= CommandSet(undef, join(" ", @list));
|
||||
if($sret) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user