2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 17:26:34 +00:00

UNDEFINED changes

git-svn-id: https://svn.fhem.de/fhem/trunk@519 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2009-12-21 18:03:56 +00:00
parent 41bc867c8a
commit db2efd2cd4
20 changed files with 101 additions and 64 deletions

View File

@ -552,7 +552,8 @@
- bugfix: Path in the examples fixed (got corrupted) - bugfix: Path in the examples fixed (got corrupted)
- bugfix: PachLog fixes from Axel - bugfix: PachLog fixes from Axel
- bugfix: HOWTO/Examples revisited for correctness - bugfix: HOWTO/Examples revisited for correctness
- bugfix: DEFINED & INITIALIZED triggers. - bugfix: INITIALIZED, DEFINED, RENAMED, DELETED triggers
- feature: image weblinks from Stefan
- feature: 20_OWFS.pm support for passive Devices e.g. DS9097 (see commandref.html) - feature: 20_OWFS.pm support for passive Devices e.g. DS9097 (see commandref.html)
- bugfix: 20_OWFS.pm crash fhem with PGM2/3, xmllist (M.Fischer) - bugfix: 20_OWFS.pm crash fhem with PGM2/3, xmllist (M.Fischer)
- bugfix: 21_OWTEMP.pm Defining a device now fail when no OWFS device was defined (M.Fischer) - bugfix: 21_OWTEMP.pm Defining a device now fail when no OWFS device was defined (M.Fischer)
@ -562,4 +563,3 @@
- bugfix: 21_OWTEMP.pm missing space within state logging (M.Fischer) - bugfix: 21_OWTEMP.pm missing space within state logging (M.Fischer)
- bugfix: 21_OWTEMP.pm interval fixed (M.Fischer) - bugfix: 21_OWTEMP.pm interval fixed (M.Fischer)
- bugfix: 21_OWTEMP.pm complete rewrite with errorcontrol and demo mode (M.Fischer) - bugfix: 21_OWTEMP.pm complete rewrite with errorcontrol and demo mode (M.Fischer)

View File

@ -808,7 +808,7 @@ CUL_Ready($)
if($hash->{STATE} eq "disconnected"); if($hash->{STATE} eq "disconnected");
# This is relevant for windows/USB only # This is relevant for windows/USB only
my $po=$hash->{USBDev}; my $po = $hash->{USBDev};
my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status; my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
return ($InBytes>0); return ($InBytes>0);
} }

View File

@ -83,8 +83,9 @@ BS_Parse($$)
my $def= $defptr{$dev}; my $def= $defptr{$dev};
if(!defined($def)) { if(!defined($def)) {
Log 3, sprintf("BS Unknown device %s, please define it", $sensor); $sensor =~ s/^0//;
return "UNDEFINED BS"; Log 3, "BS Unknown device $sensor, please define it";
return "UNDEFINED BS_$sensor BS $sensor";
} }
my $name= $def->{NAME}; my $name= $def->{NAME};

View File

@ -129,8 +129,8 @@ CUL_FHTTK_Define($$)
my $name = $a[0]; my $name = $a[0];
my $sensor = lc($a[2]); my $sensor = lc($a[2]);
if($sensor !~ /[0123456789abcdef]/) { if($sensor !~ /^[0-9a-f]{6}$/) {
return "erroneous sensor specification $sensor, use one of 0..9..f"; return "wrong sensor specification $sensor, need a 6 digit hex number";
} }
# $hash->{SENSOR}= "$sensor"; # $hash->{SENSOR}= "$sensor";
@ -164,8 +164,8 @@ CUL_FHTTK_Parse($$)
my $def = $defptr{$sensor}; my $def = $defptr{$sensor};
my $self = $def->{NAME}; my $self = $def->{NAME};
if(!defined($def)) { if(!defined($def)) {
Log 3, sprintf("FHTTK Unknown device %s, please define it", $sensor); Log 3, "FHTTK Unknown device $sensor, please define it";
return "UNDEFINED FHTTK"; return "UNDEFINED CUL_FHTTK_$sensor CUL_FHTTK $sensor";
} }
# if it's not our device # if it's not our device

View File

@ -92,7 +92,7 @@ USF1000_Parse($$)
if(!defined($defptr{$dev})) { if(!defined($defptr{$dev})) {
Log 3, "USF1000 Unknown device, please define it"; Log 3, "USF1000 Unknown device, please define it";
return "UNDEFINED USF1000"; return "UNDEFINED USF1000 USF1000 cylv 1 1 0.5";
} }
my $def= $defptr{$dev}; my $def= $defptr{$dev};

View File

@ -354,6 +354,8 @@ FS20_Parse($$)
my @list; my @list;
foreach my $n (keys %{ $def }) { foreach my $n (keys %{ $def }) {
my $lh = $def->{$n}; my $lh = $def->{$n};
$n = $lh->{NAME}; # It may be renamed
$lh->{CHANGED}[0] = $v; $lh->{CHANGED}[0] = $v;
$lh->{STATE} = $v; $lh->{STATE} = $v;
$lh->{READINGS}{state}{TIME} = TimeNow(); $lh->{READINGS}{state}{TIME} = TimeNow();
@ -386,7 +388,7 @@ FS20_Parse($$)
my $btn_four = hex2four($btn); my $btn_four = hex2four($btn);
Log 3, "FS20 Unknown device $dev ($dev_four), " . Log 3, "FS20 Unknown device $dev ($dev_four), " .
"Button $btn ($btn_four) Code $cde ($v), please define it"; "Button $btn ($btn_four) Code $cde ($v), please define it";
return "UNDEFINED FS20: $dev/$btn/$cde"; return "UNDEFINED FS20_$dev$btn FS20 $dev $btn";
} }
} }

View File

@ -156,7 +156,6 @@ FHT_Set($@)
my $ret = ""; my $ret = "";
return "\"set $a[0]\" needs at least two parameters" if(@a < 2); return "\"set $a[0]\" needs at least two parameters" if(@a < 2);
my $name = shift(@a); my $name = shift(@a);
# Replace refreshvalues with report1 and report2, and time with hour/minute # Replace refreshvalues with report1 and report2, and time with hour/minute
@ -340,7 +339,7 @@ FHT_Parse($$)
if(!defined($defptr{$dev})) { if(!defined($defptr{$dev})) {
Log 3, "FHT Unknown device $dev, please define it"; Log 3, "FHT Unknown device $dev, please define it";
return "UNDEFINED FHT $dev"; return "UNDEFINED FHT_$dev FHT $dev";
} }
my $def = $defptr{$dev}; my $def = $defptr{$dev};
@ -415,14 +414,15 @@ FHT_Parse($$)
$def->{READINGS}{$cmd}{TIME} = $tn; $def->{READINGS}{$cmd}{TIME} = $tn;
$def->{READINGS}{$cmd}{VAL} = $val; $def->{READINGS}{$cmd}{VAL} = $val;
if(defined($def->{READINGS}{"measured-low"}{VAL})) { if(defined($def->{READINGS}{"measured-low"}) &&
defined($def->{READINGS}{"measured-low"}{VAL})) {
my $off = ($attr{$name} && $attr{$name}{tmpcorr}) ? my $off = ($attr{$name} && $attr{$name}{tmpcorr}) ?
$attr{$name}{tmpcorr} : 0; $attr{$name}{tmpcorr} : 0;
$val = $val*256 + $def->{READINGS}{"measured-low"}{VAL}; $val = $val*256 + $def->{READINGS}{"measured-low"}{VAL};
$val /= 10; $val /= 10;
$val = sprintf("%.1f (Celsius)", $val+$off); $val = sprintf("%.1f (Celsius)", $val+$off);
$cmd = "measured-temp" $cmd = "measured-temp";
} else { } else {
return ""; return "";

View File

@ -102,7 +102,8 @@ HMS_Parse($$)
if(!defined($defptr{$dev})) { if(!defined($defptr{$dev})) {
Log 3, "Unknown HMS device $dev/$odev, please define it"; Log 3, "Unknown HMS device $dev/$odev, please define it";
$type = "HMS" if(!$type); $type = "HMS" if(!$type);
return "UNDEFINED $type $odev"; $type =~ s/-//; # RM100-2, - is special in fhem names
return "UNDEFINED ${type}_$odev HMS $odev";
} }
my $def = $defptr{$dev}; my $def = $defptr{$dev};

View File

@ -322,10 +322,10 @@ KS300_Parse($$)
} else { } else {
Log 4, "KS300 detected: $msg"; Log 4, "KS300 detected: $msg";
return "UNDEFINED KS300 KS300 1234";
} }
return "";
} }
1; 1;

View File

@ -39,7 +39,6 @@ CUL_WS_Define($$)
return "wrong syntax: define <name> CUL_WS <code> [corr1...corr4]" return "wrong syntax: define <name> CUL_WS <code> [corr1...corr4]"
if(int(@a) < 3 || int(@a) > 7); if(int(@a) < 3 || int(@a) > 7);
$a[2] = lc($a[2]);
return "Define $a[0]: wrong CODE format: valid is 1-8" return "Define $a[0]: wrong CODE format: valid is 1-8"
if($a[2] !~ m/^[1-8]$/); if($a[2] !~ m/^[1-8]$/);
@ -92,7 +91,7 @@ CUL_WS_Parse($$)
$def = $defptr{$cde} if(!$def); $def = $defptr{$cde} if(!$def);
if(!$def) { if(!$def) {
Log 1, "CUL_WS UNDEFINED $type sensor detected, code $cde"; Log 1, "CUL_WS UNDEFINED $type sensor detected, code $cde";
return "UNDEFINED CUL_WS: $cde"; return "UNDEFINED CUL_WS_$cde CUL_WS $cde";
} }
my $tm=TimeNow(); my $tm=TimeNow();

View File

@ -32,7 +32,8 @@ CUL_EM_Define($$)
my ($hash, $def) = @_; my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def); my @a = split("[ \t][ \t]*", $def);
return "wrong syntax: define <name> CUL_EM <code> [corr1 corr2 CostPerUnit BasicFeePerMonth]" return "wrong syntax: define <name> CUL_EM <code> ".
"[corr1 corr2 CostPerUnit BasicFeePerMonth]"
if(int(@a) < 3 || int(@a) > 7); if(int(@a) < 3 || int(@a) > 7);
return "Define $a[0]: wrong CODE format: valid is 1-12" return "Define $a[0]: wrong CODE format: valid is 1-12"
if($a[2] !~ m/^\d$/ || $a[2] < 1 || $a[2] > 12); if($a[2] !~ m/^\d$/ || $a[2] < 1 || $a[2] > 12);
@ -235,10 +236,10 @@ CUL_EM_Parse($$)
} else { } else {
Log 1, "CUL_EM detected, Code $cde $val"; Log 1, "CUL_EM detected, Code $cde $val";
return "UNDEFINED CUL_EM_$cde CUL_EM $cde";
} }
return "";
} }
1; 1;

View File

@ -85,7 +85,7 @@ CUL_RFR_Parse($$)
if(!$defptr{$cde}) { if(!$defptr{$cde}) {
Log 1, "CUL_RFR detected, Id $id, Router $rid, MSG $smsg"; Log 1, "CUL_RFR detected, Id $id, Router $rid, MSG $smsg";
return; return "UNDEFINED CUL_RFR_$id CUL_RFR $id $rid";
} }
my $hash = $defptr{$cde}; my $hash = $defptr{$cde};
my $name = $hash->{NAME}; my $name = $hash->{NAME};

View File

@ -315,7 +315,7 @@ X10_Parse($$)
Log 3, "X10 No units with housecode $housecode, command $command, " . Log 3, "X10 No units with housecode $housecode, command $command, " .
"please define one"; "please define one";
push(@list, push(@list,
"UNDEFINED X10 device $housecode ?, command $command"); "UNDEFINED X10_$housecode X10 lm15 $housecode ?");
return @list; return @list;
} }
} }
@ -328,7 +328,7 @@ X10_Parse($$)
# but no unit was previously selected # but no unit was previously selected
Log 3, "X10 No unit selected for housecode $housecode, command $command"; Log 3, "X10 No unit selected for housecode $housecode, command $command";
push(@list, push(@list,
"UNDEFINED X10 device $housecode ?, command $command"); "UNDEFINED X10_$housecode X10 lm15 $housecode ?");
return @list; return @list;
} }
@ -359,7 +359,7 @@ X10_Parse($$)
Log 3, "X10 Unknown device $housecode $unitcode, command $command, " . Log 3, "X10 Unknown device $housecode $unitcode, command $command, " .
"please define it"; "please define it";
push(@list, push(@list,
"UNDEFINED X10 device $housecode $unitcode, command $command"); "UNDEFINED X10_$housecode X10 lm15 $housecode $unitcode");
} }
} }
return @list; return @list;

View File

@ -255,7 +255,8 @@ WS300_Parse($$)
Log $ll,"Sensor $s vorhanden"; Log $ll,"Sensor $s vorhanden";
if(!defined($defptr{$s})) if(!defined($defptr{$s}))
{ {
Log(3,"WS300 $s: undefined"); Log 3, "WS300 Unknown device $s, please define it";
return "UNDEFINED WS300_$s WS300 $s";
} }
else else
{ {
@ -446,7 +447,8 @@ WS300_Parse($$)
} }
if(!defined($defptr{9})) if(!defined($defptr{9}))
{ {
Log(3,"WS300 9: undefined"); Log 3, "WS300 Unknown device 9, please define it";
return "UNDEFINED WS300_9 WS300 9";
} }
else else
{ {

View File

@ -288,7 +288,7 @@ FileLog_Get($@)
} }
next if(!defined($val)); next if(!defined($val) || $val !~ m/^[-\.\d]+$/o);
$min[$i] = $val if($val < $min[$i]); $min[$i] = $val if($val < $min[$i]);
$max[$i] = $val if($val > $max[$i]); $max[$i] = $val if($val > $max[$i]);
$sum[$i] += $val; $sum[$i] += $val;

View File

@ -58,6 +58,7 @@ sub HandleArchiving($);
sub HandleTimeout(); sub HandleTimeout();
sub IOWrite($@); sub IOWrite($@);
sub InternalTimer($$$$); sub InternalTimer($$$$);
sub LoadModule($);
sub Log($$); sub Log($$);
sub OpenLogfile($); sub OpenLogfile($);
sub PrintHash($$); sub PrintHash($$);
@ -156,7 +157,7 @@ my $nextat; # Time when next timer will be triggered.
my $intAtCnt=0; my $intAtCnt=0;
my %duplicate; # Pool of received msg for multi-fhz/cul setups my %duplicate; # Pool of received msg for multi-fhz/cul setups
my $duplidx=0; # helper for the above pool my $duplidx=0; # helper for the above pool
my $cvsid = '$Id: fhem.pl,v 1.91 2009-12-09 13:29:47 rudolfkoenig Exp $'; my $cvsid = '$Id: fhem.pl,v 1.92 2009-12-21 18:03:56 rudolfkoenig Exp $';
my $namedef = my $namedef =
"where <name> is either:\n" . "where <name> is either:\n" .
"- a single device name\n" . "- a single device name\n" .
@ -172,7 +173,8 @@ $modules{_internal_}{LOADED} = 1;
$modules{_internal_}{AttrList} = $modules{_internal_}{AttrList} =
"archivecmd allowfrom archivedir configfile lastinclude logfile " . "archivecmd allowfrom archivedir configfile lastinclude logfile " .
"modpath nrarchive pidfilename port statefile title userattr " . "modpath nrarchive pidfilename port statefile title userattr " .
"verbose:1,2,3,4,5 mseclog version nofork logdir holiday2we"; "verbose:1,2,3,4,5 mseclog version nofork logdir holiday2we " .
"autoload_undefined_devices";
$modules{_internal_}{AttrFn} = "GlobalAttr"; $modules{_internal_}{AttrFn} = "GlobalAttr";
@ -638,7 +640,7 @@ devspec2array($)
eval { # a bad regexp may shut down fhem.pl eval { # a bad regexp may shut down fhem.pl
foreach my $l (sort keys %defs) { foreach my $l (sort keys %defs) {
push @ret, $l push @ret, $l
if($defs{$l}{$lattr} && (!$re || $defs{$l}{$lattr} =~ m/$re/)); if($defs{$l}{$lattr} && (!$re || $defs{$l}{$lattr}=~m/^$re$/));
} }
}; };
if($@) { if($@) {
@ -658,7 +660,7 @@ devspec2array($)
my $regok; my $regok;
eval { # a bad regexp may shut down fhem.pl eval { # a bad regexp may shut down fhem.pl
if($l =~ m/[*\[\]^\$]/) { # Regexp if($l =~ m/[*\[\]^\$]/) { # Regexp
push @ret, grep($_ =~ m/$l/, sort keys %defs); push @ret, grep($_ =~ m/^$l$/, sort keys %defs);
$regok = 1; $regok = 1;
} }
}; };
@ -978,6 +980,29 @@ CommandGet($$)
return join("\n", @rets); return join("\n", @rets);
} }
#####################################
sub
LoadModule($)
{
my ($m) = @_;
if($modules{$m} && !$modules{$m}{LOADED}) { # autoload
my $o = $modules{$m}{ORDER};
CommandReload(undef, "${o}_$m");
if(!$modules{$m}{LOADED}) { # Case corrected by reload?
foreach my $i (keys %modules) {
if(uc($m) eq uc($i) && $modules{$i}{LOADED}) {
delete($modules{$m});
$m = $i;
last;
}
}
}
}
return $m;
}
##################################### #####################################
sub sub
CommandDefine($$) CommandDefine($$)
@ -1001,20 +1026,7 @@ CommandDefine($$)
} }
} }
if($modules{$m} && !$modules{$m}{LOADED}) { # autoload $m = LoadModule($m);
my $o = $modules{$m}{ORDER};
CommandReload($cl, "${o}_$m");
if(!$modules{$m}{LOADED}) { # Case corrected by reload?
foreach my $i (keys %modules) {
if(uc($m) eq uc($i) && $modules{$i}{LOADED}) {
delete($modules{$m});
$m = $i;
last;
}
}
}
}
if(!$modules{$m} || !$modules{$m}{DefFn}) { if(!$modules{$m} || !$modules{$m}{DefFn}) {
my @m = grep { $modules{$_}{DefFn} || !$modules{$_}{LOADED} } my @m = grep { $modules{$_}{DefFn} || !$modules{$_}{LOADED} }
@ -1043,7 +1055,7 @@ CommandDefine($$)
CommandAttr($cl, "$a[0] $da $defaultattr{$da}"); CommandAttr($cl, "$a[0] $da $defaultattr{$da}");
} }
} }
DoTrigger($a[0], "DEFINED"); DoTrigger("global", "DEFINED $a[0]");
return $ret; return $ret;
} }
@ -1121,6 +1133,7 @@ CommandDelete($$)
delete($attr{$sdev}); delete($attr{$sdev});
delete($defs{$sdev}); # Remove the main entry delete($defs{$sdev}); # Remove the main entry
DoTrigger("global", "DELETED $sdev");
} }
return join("\n", @rets); return join("\n", @rets);
@ -1330,6 +1343,7 @@ CommandRename($$)
$oldvalue{$new} = $oldvalue{$old} if(defined($oldvalue{$old})); $oldvalue{$new} = $oldvalue{$old} if(defined($oldvalue{$old}));
delete($oldvalue{$old}); delete($oldvalue{$old});
DoTrigger("global", "RENAMED $old $new");
return undef; return undef;
} }
@ -1877,7 +1891,6 @@ DoTrigger($$)
my $ret = ""; my $ret = "";
foreach my $n (sort keys %defs) { foreach my $n (sort keys %defs) {
next if(!defined($defs{$n})); # Was deleted in a previous notify next if(!defined($defs{$n})); # Was deleted in a previous notify
next if($n eq $dev && defined($ns) && $ns eq "DEFINED");
if(defined($modules{$defs{$n}{TYPE}})) { if(defined($modules{$defs{$n}{TYPE}})) {
if($modules{$defs{$n}{TYPE}}{NotifyFn}) { if($modules{$defs{$n}{TYPE}}{NotifyFn}) {
Log 5, "$dev trigger: Checking $n for notify"; Log 5, "$dev trigger: Checking $n for notify";
@ -2081,30 +2094,41 @@ Dispatch($$$)
my $h = $iohash->{MatchList}; my $h = $iohash->{MatchList};
if(defined($h)) { if(defined($h)) {
foreach my $m (sort keys %{$h}) { foreach my $m (sort keys %{$h}) {
if($dmsg =~ m/$h->{$m}/) { if($dmsg =~ m/$h->{$m}/) {
my (undef, $mname) = split(":", $m); my ($order, $mname) = split(":", $m);
Log GetLogLevel($name,3),
if($attr{global}{autoload_undefined_devices}) {
$mname = LoadModule($mname);
no strict "refs";
@found = &{$modules{$mname}{ParseFn}}($hash,$dmsg);
use strict "refs";
$last_module = $mname;
} else {
Log GetLogLevel($name,3),
"$name: Unknown $mname device detected, " . "$name: Unknown $mname device detected, " .
"define one to get detailed information."; "define one to get detailed information.";
return undef; return undef;
}
} }
} }
} }
Log GetLogLevel($name,3), "$name: Unknown code $dmsg, help me!"; if(!int(@found)) {
return undef; Log GetLogLevel($name,3), "$name: Unknown code $dmsg, help me!";
return undef;
}
} }
return undef if($found[0] eq ""); # Special return: Do not notify return undef if($found[0] eq ""); # Special return: Do not notify
foreach my $found (@found) { foreach my $found (@found) {
if($found =~ m/^(UNDEFINED) ([^ ]*) (.*)$/) {
# The trigger needs a device: we create a minimal temporary one if($found =~ m/^(UNDEFINED.*)/) {
my $d = $1; DoTrigger("global", $1);
$defs{$d}{NAME} = $1;
$defs{$d}{TYPE} = $last_module;
DoTrigger($d, "$2 $3");
CommandDelete(undef, $d); # Remove the device
return undef; return undef;
} else { } else {
if($defs{$found}) { if($defs{$found}) {
$defs{$found}{MSGCNT}++; $defs{$found}{MSGCNT}++;

View File

@ -148,8 +148,9 @@ FW_Read($)
my @clientsock = sockaddr_in($clientinfo[1]); my @clientsock = sockaddr_in($clientinfo[1]);
my %nhash; my %nhash;
my $cname = "FHEMWEB:". inet_ntoa($clientsock[1]) .":".$clientsock[0];
$nhash{NR} = $devcount++; $nhash{NR} = $devcount++;
$nhash{NAME} = "FHEMWEB:". inet_ntoa($clientsock[1]) .":".$clientsock[0]; $nhash{NAME} = $cname;
$nhash{FD} = $clientinfo[0]->fileno(); $nhash{FD} = $clientinfo[0]->fileno();
$nhash{CD} = $clientinfo[0]; # sysread / close won't work on fileno $nhash{CD} = $clientinfo[0]; # sysread / close won't work on fileno
$nhash{TYPE} = "FHEMWEB"; $nhash{TYPE} = "FHEMWEB";
@ -157,6 +158,7 @@ FW_Read($)
$nhash{SNAME} = $name; $nhash{SNAME} = $name;
$nhash{TEMPORARY} = 1; # Don't want to save it $nhash{TEMPORARY} = 1; # Don't want to save it
$nhash{BUF} = ""; $nhash{BUF} = "";
$attr{$cname}{room} = "hidden";
$defs{$nhash{NAME}} = \%nhash; $defs{$nhash{NAME}} = \%nhash;
$selectlist{$nhash{NAME}} = \%nhash; $selectlist{$nhash{NAME}} = \%nhash;
@ -1391,6 +1393,10 @@ FW_showWeblink($$$)
if($t eq "link") { if($t eq "link") {
pO "<td><a href=\"$v\">$d</a></td>\n"; pO "<td><a href=\"$v\">$d</a></td>\n";
} elsif($t eq "image") {
pO "<td><img src=\"$v\"><br><a href=\"$__ME?detail=$d\">$d</a></td>\n";
} elsif($t eq "fileplot") { } elsif($t eq "fileplot") {
my @va = split(":", $v, 3); my @va = split(":", $v, 3);
if(@va != 3 || !$defs{$va[0]} || !$defs{$va[0]}{currentlogfile}) { if(@va != 3 || !$defs{$va[0]} || !$defs{$va[0]}{currentlogfile}) {

View File

@ -21,10 +21,11 @@ weblink_Define($$)
{ {
my ($hash, $def) = @_; my ($hash, $def) = @_;
my ($type, $name, $wltype, $link) = split("[ \t]+", $def, 4); my ($type, $name, $wltype, $link) = split("[ \t]+", $def, 4);
my %thash = ( link=>1, fileplot=>1 ); my %thash = ( link=>1, fileplot=>1, image=>1 );
if(!$link || !$thash{$wltype}) { if(!$link || !$thash{$wltype}) {
return "Usage: define <name> weblink [" . join("|",sort keys %thash) . "] <httplink>"; return "Usage: define <name> weblink [" .
join("|",sort keys %thash) . "] <arg>";
} }
$hash->{WLTYPE} = $wltype; $hash->{WLTYPE} = $wltype;
$hash->{LINK} = $link; $hash->{LINK} = $link;

View File

@ -28,7 +28,7 @@ set y2label "Temperature in C"
set ylabel "Humidity (%)" set ylabel "Humidity (%)"
#FileLog 4:T:0: #FileLog 4:T:0:
#FileLog 6:T:0: #FileLog 6:H:0:
plot \ plot \
"< awk '/T:/ {print $1, $4}' <IN>"\ "< awk '/T:/ {print $1, $4}' <IN>"\