2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 04:36:02 +00:00

rereadcfg patches

git-svn-id: https://svn.fhem.de/fhem/trunk@283 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2008-12-09 14:11:12 +00:00
parent 1c265347ce
commit 1a16f8b12a
3 changed files with 64 additions and 13 deletions

View File

@ -87,21 +87,20 @@ FW_Define($$)
($global && $global ne "global")); ($global && $global ne "global"));
$hash->{STATE} = "Initialized"; $hash->{STATE} = "Initialized";
$hash->{PORT} = IO::Socket::INET->new( $hash->{SERVERSOCKET} = IO::Socket::INET->new(
Proto => 'tcp', Proto => 'tcp',
LocalHost => (($global && $global eq "global") ? undef : "localhost"), LocalHost => (($global && $global eq "global") ? undef : "localhost"),
LocalPort => $port, LocalPort => $port,
Listen => 10, Listen => 10,
ReuseAddr => 1); ReuseAddr => 1);
return "Can't open server port at $port: $!" if(!$hash->{PORT}); return "Can't open server port at $port: $!" if(!$hash->{SERVERSOCKET});
$hash->{FD} = $hash->{PORT}->fileno(); $hash->{FD} = $hash->{SERVERSOCKET}->fileno();
$hash->{PORT} = $port;
$selectlist{"$name.$port"} = $hash; $selectlist{"$name.$port"} = $hash;
$hash->{SERVERSOCKET} = 1;
Log(2, "FHEMWEB port $port opened"); Log(2, "FHEMWEB port $port opened");
return undef; return undef;
} }
@ -110,8 +109,19 @@ sub
FW_Undef($$) FW_Undef($$)
{ {
my ($hash, $arg) = @_; my ($hash, $arg) = @_;
close($hash->{CD}) if(defined($hash->{CD})); # Clients my $name = $hash->{NAME};
close($hash->{PORT}) if(defined($hash->{PORT})); # Server
return undef if($hash->{INUSE});
if(defined($hash->{CD})) { # Clients
close($hash->{CD});
delete($selectlist{$hash->{NAME}});
}
if(defined($hash->{SERVERSOCKET})) { # Server
close($hash->{SERVERSOCKET});
$name = $name . "." . $hash->{PORT};
delete($selectlist{$name});
}
return undef; return undef;
} }
@ -120,11 +130,11 @@ sub
FW_Read($) FW_Read($)
{ {
my ($hash) = @_; my ($hash) = @_;
my $name = $hash->{NAME};
if($hash->{SERVERSOCKET}) { # Accept and create a child if($hash->{SERVERSOCKET}) { # Accept and create a child
my @clientinfo = $hash->{PORT}->accept(); my @clientinfo = $hash->{SERVERSOCKET}->accept();
my $name = $hash->{NAME};
my $ll = GetLogLevel($name,4); my $ll = GetLogLevel($name,4);
if(!@clientinfo) { if(!@clientinfo) {
@ -162,8 +172,8 @@ FW_Read($)
my $ret = sysread($hash->{CD}, $buf, 1024); my $ret = sysread($hash->{CD}, $buf, 1024);
if(!defined($ret) || $ret <= 0) { if(!defined($ret) || $ret <= 0) {
my $r = CommandDelete(undef, $hash->{NAME}); my $r = CommandDelete(undef, $name);
Log($ll, "Connection closed for $hash->{NAME}"); Log($ll, "Connection closed for $name");
return; return;
} }
@ -175,9 +185,17 @@ FW_Read($)
my ($mode, $arg, $method) = split(" ", $lines[0]); my ($mode, $arg, $method) = split(" ", $lines[0]);
$hash->{BUF} = ""; $hash->{BUF} = "";
Log($ll, "HTTP $hash->{NAME} GET $arg"); Log($ll, "HTTP $name GET $arg");
$hash->{INUSE} = 1;
my $cacheable = FW_AnswerCall($arg); my $cacheable = FW_AnswerCall($arg);
delete($hash->{INUSE});
if(!$selectlist{$name}) { # removed by rereadcfg, reinsert
$selectlist{$name} = $hash;
$defs{$name} = $hash;
}
my $c = $hash->{CD}; my $c = $hash->{CD};
my $l = length($__RET); my $l = length($__RET);
my $e = ($cacheable? ("Expires: ".localtime(time()+900)." GMT\r\n") : ""); my $e = ($cacheable? ("Expires: ".localtime(time()+900)." GMT\r\n") : "");

View File

@ -1,7 +1,8 @@
############################ ############################
# Display the power reported by the EM1010 # Display the power reported by the EM1010
# Corresponding FileLog definition: # Corresponding FileLog definition:
# define ememlog FileLog /var/log/fhem/emem-%Y.log emem:power.* # define ememlog FileLog /var/log/fhem/em-%Y.log emem:power.*
# define emwzlog FileLog /var/log/fhem/em-%Y.log emwz:power.*
set terminal png transparent size <SIZE> crop set terminal png transparent size <SIZE> crop
set output '<OUT>.png' set output '<OUT>.png'

View File

@ -0,0 +1,32 @@
############################
# Display the power reported by the EM1000FM received bei CUL
#set terminal png transparent size <SIZE> crop
set terminal png size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel "Energiemonitor EM1000EM"
set title '<TL>'
set ylabel "Power (kW)"
set y2label "Power (kWh)"
set grid
set ytics
set y2tics
set logscale y
set logscale y2
set format y "%.1f"
set format y2 "%.1f"
#FileLog 8::0:
#FileLog 10::0:
plot \
"< awk '/5MIN:/ {print $1, $8}' <IN>"\
using 1:2 axes x1y2 title 'kWh' with lines lw 1,\
"< awk '/TOP:/ {print $1, $10}' <IN>"\
using 1:2 axes x1y1 title 'Spitze kW' with lines lw 2\