mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
01_FHEMWEB.pm: remove trailing spaces
git-svn-id: https://svn.fhem.de/fhem/trunk@23295 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b00dc521c9
commit
db0e89a370
@ -264,7 +264,7 @@ FHEMWEB_Initialize($)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$cmds{show} = {
|
$cmds{show} = {
|
||||||
Fn=>"FW_show", ClientFilter=>"FHEMWEB",
|
Fn=>"FW_show", ClientFilter=>"FHEMWEB",
|
||||||
Hlp=>"<devspec>, show temporary room with devices from <devspec>"
|
Hlp=>"<devspec>, show temporary room with devices from <devspec>"
|
||||||
};
|
};
|
||||||
@ -505,8 +505,8 @@ FW_Read($$)
|
|||||||
# Need to send set-cookie (if set) after succesful authentication
|
# Need to send set-cookie (if set) after succesful authentication
|
||||||
my $ah = $FW_chash->{".httpAuthHeader"};
|
my $ah = $FW_chash->{".httpAuthHeader"};
|
||||||
$FW_headerlines .= $ah if($ah);
|
$FW_headerlines .= $ah if($ah);
|
||||||
delete $FW_chash->{".httpAuthHeader"};
|
delete $FW_chash->{".httpAuthHeader"};
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
my $ah = $FW_chash->{".httpAuthHeader"};
|
my $ah = $FW_chash->{".httpAuthHeader"};
|
||||||
TcpServer_WriteBlocking($hash,
|
TcpServer_WriteBlocking($hash,
|
||||||
@ -534,7 +534,7 @@ FW_Read($$)
|
|||||||
$FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem");
|
$FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem");
|
||||||
$FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
|
$FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
|
||||||
"&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");
|
"&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");
|
||||||
|
|
||||||
if($FW_use{sha} && $method eq 'GET' &&
|
if($FW_use{sha} && $method eq 'GET' &&
|
||||||
$FW_httpheader{Connection} && $FW_httpheader{Connection} =~ /Upgrade/i &&
|
$FW_httpheader{Connection} && $FW_httpheader{Connection} =~ /Upgrade/i &&
|
||||||
$FW_httpheader{Upgrade} && $FW_httpheader{Upgrade} =~ /websocket/i &&
|
$FW_httpheader{Upgrade} && $FW_httpheader{Upgrade} =~ /websocket/i &&
|
||||||
@ -622,7 +622,7 @@ FW_finishRead($$$)
|
|||||||
|
|
||||||
my $length = length($FW_RET);
|
my $length = length($FW_RET);
|
||||||
my $expires = ($cacheable ?
|
my $expires = ($cacheable ?
|
||||||
"Expires: ".FmtDateTimeRFC1123($hash->{LASTACCESS}+900)."\r\n" :
|
"Expires: ".FmtDateTimeRFC1123($hash->{LASTACCESS}+900)."\r\n" :
|
||||||
"Cache-Control: no-cache, no-store, must-revalidate\r\n");
|
"Cache-Control: no-cache, no-store, must-revalidate\r\n");
|
||||||
FW_log($arg, $length) if(AttrVal($FW_wname, "logDevice", undef));
|
FW_log($arg, $length) if(AttrVal($FW_wname, "logDevice", undef));
|
||||||
Log3 $FW_wname, 4,
|
Log3 $FW_wname, 4,
|
||||||
@ -637,7 +637,7 @@ FW_finishRead($$$)
|
|||||||
if(!$hash->{isChild});
|
if(!$hash->{isChild});
|
||||||
FW_closeConn($hash);
|
FW_closeConn($hash);
|
||||||
TcpServer_Close($hash, 1);
|
TcpServer_Close($hash, 1);
|
||||||
}
|
}
|
||||||
$FW_RET="";
|
$FW_RET="";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -938,7 +938,7 @@ FW_answerCall($)
|
|||||||
delete $me->{BUF};
|
delete $me->{BUF};
|
||||||
$me->{isChild} = 1;
|
$me->{isChild} = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$FW_cmdret = $docmd ? FW_fC($cmd, $cmddev) : undef;
|
$FW_cmdret = $docmd ? FW_fC($cmd, $cmddev) : undef;
|
||||||
@ -1168,7 +1168,7 @@ FW_answerCall($)
|
|||||||
|
|
||||||
$FW_room = AttrVal($FW_wname, "defaultRoom", '');
|
$FW_room = AttrVal($FW_wname, "defaultRoom", '');
|
||||||
if($FW_room ne '') {
|
if($FW_room ne '') {
|
||||||
$srVal = FW_showRoom();
|
$srVal = FW_showRoom();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
my $motd = AttrVal("global", "motd", "");
|
my $motd = AttrVal("global", "motd", "");
|
||||||
@ -1324,7 +1324,7 @@ FW_updateHashes()
|
|||||||
|
|
||||||
if(AttrVal($FW_wname, "sortRooms", "")) { # Slow!
|
if(AttrVal($FW_wname, "sortRooms", "")) { # Slow!
|
||||||
my @sortBy = split( " ", AttrVal( $FW_wname, "sortRooms", "" ) );
|
my @sortBy = split( " ", AttrVal( $FW_wname, "sortRooms", "" ) );
|
||||||
my %sHash;
|
my %sHash;
|
||||||
map { $sHash{$_} = FW_roomIdx(\@sortBy,$_) } keys %FW_rooms;
|
map { $sHash{$_} = FW_roomIdx(\@sortBy,$_) } keys %FW_rooms;
|
||||||
@FW_roomsArr = sort { $sHash{$a} cmp $sHash{$b} } @FW_roomsArr;
|
@FW_roomsArr = sort { $sHash{$a} cmp $sHash{$b} } @FW_roomsArr;
|
||||||
}
|
}
|
||||||
@ -1531,12 +1531,13 @@ FW_doDetail($)
|
|||||||
FW_makeTable("Readings", $d, $h->{READINGS});
|
FW_makeTable("Readings", $d, $h->{READINGS});
|
||||||
|
|
||||||
my $attrList = getAllAttr($d);
|
my $attrList = getAllAttr($d);
|
||||||
my $roomList = "multiple,".join(",",
|
my $roomList = "multiple,".join(",",
|
||||||
sort map { $_ =~ s/ /#/g ;$_} keys %FW_rooms);
|
sort map { $_ =~ s/ /#/g ;$_} keys %FW_rooms);
|
||||||
my $groupList = "multiple,".join(",",
|
my $groupList = "multiple,".join(",",
|
||||||
sort map { $_ =~ s/ /#/g ;$_} keys %FW_groups);
|
sort map { $_ =~ s/ /#/g ;$_} keys %FW_groups);
|
||||||
$attrList =~ s/\broom\b/room:$roomList/;
|
$attrList =~ s/\broom\b/room:$roomList/;
|
||||||
$attrList =~ s/\bgroup\b/group:$groupList/;
|
$attrList =~ s/\bgroup\b/group:$groupList/;
|
||||||
|
|
||||||
$attrList = FW_widgetOverride($d, $attrList);
|
$attrList = FW_widgetOverride($d, $attrList);
|
||||||
$attrList =~ s/\\/\\\\/g;
|
$attrList =~ s/\\/\\\\/g;
|
||||||
$attrList =~ s/'/\\'/g;
|
$attrList =~ s/'/\\'/g;
|
||||||
@ -1556,7 +1557,7 @@ FW_doDetail($)
|
|||||||
if($d ne "global");
|
if($d ne "global");
|
||||||
my $sfx = AttrVal("global", "language", "EN");
|
my $sfx = AttrVal("global", "language", "EN");
|
||||||
$sfx = ($sfx eq "EN" ? "" : "_$sfx");
|
$sfx = ($sfx eq "EN" ? "" : "_$sfx");
|
||||||
FW_pH "$FW_ME/docs/commandref${sfx}.html#${t}", "Device specific help",
|
FW_pH "$FW_ME/docs/commandref${sfx}.html#${t}", "Device specific help",
|
||||||
undef, "detLink devSpecHelp";
|
undef, "detLink devSpecHelp";
|
||||||
FW_pO "<br><br>";
|
FW_pO "<br><br>";
|
||||||
FW_pO "</div>";
|
FW_pO "</div>";
|
||||||
@ -1591,15 +1592,15 @@ FW_makeTableFromArray($$@) {
|
|||||||
sub
|
sub
|
||||||
FW_roomIdx($$)
|
FW_roomIdx($$)
|
||||||
{
|
{
|
||||||
my ($arr,$v) = @_;
|
my ($arr,$v) = @_;
|
||||||
my ($index) = grep { $v =~ /^$arr->[$_]$/ } 0..$#$arr;
|
my ($index) = grep { $v =~ /^$arr->[$_]$/ } 0..$#$arr;
|
||||||
|
|
||||||
if( !defined($index) ) {
|
if( !defined($index) ) {
|
||||||
$index = 9999;
|
$index = 9999;
|
||||||
} else {
|
} else {
|
||||||
$index = sprintf( "%03i", $index );
|
$index = sprintf( "%03i", $index );
|
||||||
}
|
}
|
||||||
|
|
||||||
return "$index-$v";
|
return "$index-$v";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1788,7 +1789,7 @@ FW_roomOverview($)
|
|||||||
FW_pO FW_hidden("fw_id", $FW_id) if($FW_id);
|
FW_pO FW_hidden("fw_id", $FW_id) if($FW_id);
|
||||||
FW_pO FW_hidden("room", $FW_room) if($FW_room);
|
FW_pO FW_hidden("room", $FW_room) if($FW_room);
|
||||||
FW_pO FW_hidden("fwcsrf", $defs{$FW_wname}{CSRFTOKEN}) if($FW_CSRF);
|
FW_pO FW_hidden("fwcsrf", $defs{$FW_wname}{CSRFTOKEN}) if($FW_CSRF);
|
||||||
FW_pO FW_textfield("cmd",
|
FW_pO FW_textfield("cmd",
|
||||||
AttrVal($FW_wname, "mainInputLength", $FW_ss ? 25 : 40), "maininput");
|
AttrVal($FW_wname, "mainInputLength", $FW_ss ? 25 : 40), "maininput");
|
||||||
FW_pO "</form>";
|
FW_pO "</form>";
|
||||||
FW_pO "</td></tr></table>";
|
FW_pO "</td></tr></table>";
|
||||||
@ -1842,7 +1843,7 @@ FW_makeDeviceLine($$$$$)
|
|||||||
# Commands, slider, dropdown
|
# Commands, slider, dropdown
|
||||||
my $smallscreenCommands = AttrVal($FW_wname, "smallscreenCommands", "");
|
my $smallscreenCommands = AttrVal($FW_wname, "smallscreenCommands", "");
|
||||||
if((!$FW_ss || $smallscreenCommands) && $cmdlist) {
|
if((!$FW_ss || $smallscreenCommands) && $cmdlist) {
|
||||||
my @a = split("[: ]", AttrVal($d, "cmdIcon",
|
my @a = split("[: ]", AttrVal($d, "cmdIcon",
|
||||||
$defs{$d}{cmdIcon} ? $defs{$d}{cmdIcon} : ""));
|
$defs{$d}{cmdIcon} ? $defs{$d}{cmdIcon} : ""));
|
||||||
Log 1, "ERROR: bad cmdIcon definition for $d" if(@a % 2);
|
Log 1, "ERROR: bad cmdIcon definition for $d" if(@a % 2);
|
||||||
my %cmdIcon = @a;
|
my %cmdIcon = @a;
|
||||||
@ -1872,7 +1873,7 @@ FW_makeDeviceLine($$$$$)
|
|||||||
if($htmlTxt) {
|
if($htmlTxt) {
|
||||||
$htmlTxt =~ s,^<td[^>]*>(.*)</td>$,$1,;
|
$htmlTxt =~ s,^<td[^>]*>(.*)</td>$,$1,;
|
||||||
} else {
|
} else {
|
||||||
my $nCmd = $cmdIcon{$cmd} ?
|
my $nCmd = $cmdIcon{$cmd} ?
|
||||||
FW_makeImage($cmdIcon{$cmd},$cmd,"webCmd") : $cmd;
|
FW_makeImage($cmdIcon{$cmd},$cmd,"webCmd") : $cmd;
|
||||||
$htmlTxt = FW_pH "cmd.$d=set $d $cmd$rf", $nCmd, 0, "", 1, 1;
|
$htmlTxt = FW_pH "cmd.$d=set $d $cmd$rf", $nCmd, 0, "", 1, 1;
|
||||||
}
|
}
|
||||||
@ -1929,7 +1930,7 @@ FW_showRoom()
|
|||||||
{
|
{
|
||||||
return 0 if(!$FW_room ||
|
return 0 if(!$FW_room ||
|
||||||
AttrVal($FW_wname,"forbiddenroom","") =~ m/\b$FW_room\b/);
|
AttrVal($FW_wname,"forbiddenroom","") =~ m/\b$FW_room\b/);
|
||||||
|
|
||||||
%FW_hiddengroup = ();
|
%FW_hiddengroup = ();
|
||||||
foreach my $r (split(",",AttrVal($FW_wname, "hiddengroup", ""))) {
|
foreach my $r (split(",",AttrVal($FW_wname, "hiddengroup", ""))) {
|
||||||
$FW_hiddengroup{$r} = 1;
|
$FW_hiddengroup{$r} = 1;
|
||||||
@ -1965,7 +1966,7 @@ FW_showRoom()
|
|||||||
}
|
}
|
||||||
next if(!$FW_types{$dev}); # FHEMWEB connection, missed due to caching
|
next if(!$FW_types{$dev}); # FHEMWEB connection, missed due to caching
|
||||||
foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) {
|
foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) {
|
||||||
next if($FW_hiddengroup{$grp});
|
next if($FW_hiddengroup{$grp});
|
||||||
next if($hge && $grp =~ m/$hge/);
|
next if($hge && $grp =~ m/$hge/);
|
||||||
$sortIndex{$dev} = FW_sortIndex($dev);
|
$sortIndex{$dev} = FW_sortIndex($dev);
|
||||||
$group{$grp}{$dev} = 1;
|
$group{$grp}{$dev} = 1;
|
||||||
@ -1983,7 +1984,7 @@ FW_showRoom()
|
|||||||
for(my $col=1; $col < ($maxc==-1 ? 2 : $maxc); $col++) {
|
for(my $col=1; $col < ($maxc==-1 ? 2 : $maxc); $col++) {
|
||||||
FW_pO "<td><table class=\"column tblcol_$col\">" if($maxc != -1);
|
FW_pO "<td><table class=\"column tblcol_$col\">" if($maxc != -1);
|
||||||
|
|
||||||
# iterate over the distinct groups
|
# iterate over the distinct groups
|
||||||
foreach my $g (sort { $maxc==-1 ?
|
foreach my $g (sort { $maxc==-1 ?
|
||||||
$a cmp $b :
|
$a cmp $b :
|
||||||
($columns->{$a} ? $columns->{$a}->[0] : 99) <=>
|
($columns->{$a} ? $columns->{$a}->[0] : 99) <=>
|
||||||
@ -2187,7 +2188,7 @@ FW_returnFileAsStream($$$$$)
|
|||||||
|
|
||||||
if(!open(FH, $path)) {
|
if(!open(FH, $path)) {
|
||||||
Log3 $FW_wname, 4, "FHEMWEB $FW_wname $path: $!";
|
Log3 $FW_wname, 4, "FHEMWEB $FW_wname $path: $!";
|
||||||
TcpServer_WriteBlocking($FW_chash,
|
TcpServer_WriteBlocking($FW_chash,
|
||||||
"HTTP/1.1 404 Not Found\r\n".
|
"HTTP/1.1 404 Not Found\r\n".
|
||||||
"Content-Length:0\r\n\r\n");
|
"Content-Length:0\r\n\r\n");
|
||||||
FW_closeConn($FW_chash);
|
FW_closeConn($FW_chash);
|
||||||
@ -2377,7 +2378,7 @@ FW_style($$)
|
|||||||
|
|
||||||
my $start = '><table><tr><td';
|
my $start = '><table><tr><td';
|
||||||
my $end = "</td></tr></table></div>";
|
my $end = "</td></tr></table></div>";
|
||||||
|
|
||||||
if($a[1] eq "list") {
|
if($a[1] eq "list") {
|
||||||
FW_addContent($start);
|
FW_addContent($start);
|
||||||
FW_pO "$msg<br><br>" if($msg);
|
FW_pO "$msg<br><br>" if($msg);
|
||||||
@ -2436,7 +2437,7 @@ FW_style($$)
|
|||||||
FW_pO "Reload the page in the browser.$end";
|
FW_pO "Reload the page in the browser.$end";
|
||||||
|
|
||||||
} elsif($a[1] eq "edit") {
|
} elsif($a[1] eq "edit") {
|
||||||
my $fileName = $a[2];
|
my $fileName = $a[2];
|
||||||
my $data = "";
|
my $data = "";
|
||||||
my $cfgDB = defined($a[3]) ? $a[3] : "";
|
my $cfgDB = defined($a[3]) ? $a[3] : "";
|
||||||
my $forceType = ($cfgDB eq 'configDB') ? $cfgDB : "file";
|
my $forceType = ($cfgDB eq 'configDB') ? $cfgDB : "file";
|
||||||
@ -2596,10 +2597,10 @@ FW_pH(@)
|
|||||||
$link .= $FW_CSRF if($link =~ m/cmd/ &&
|
$link .= $FW_CSRF if($link =~ m/cmd/ &&
|
||||||
$link !~m/cmd=style%20(list|select|eventMonitor)/);
|
$link !~m/cmd=style%20(list|select|eventMonitor)/);
|
||||||
$link = ($link =~ m,^/,) ? $link : "$FW_ME$FW_subdir?$link";
|
$link = ($link =~ m,^/,) ? $link : "$FW_ME$FW_subdir?$link";
|
||||||
|
|
||||||
# Using onclick, as href starts safari in a webapp.
|
# Using onclick, as href starts safari in a webapp.
|
||||||
# Known issue: the pointer won't change
|
# Known issue: the pointer won't change
|
||||||
if($FW_ss || $FW_tp) {
|
if($FW_ss || $FW_tp) {
|
||||||
$ret = "<a onClick=\"location.href='$link'\">$txt</a>";
|
$ret = "<a onClick=\"location.href='$link'\">$txt</a>";
|
||||||
} else {
|
} else {
|
||||||
$ret = "<a href=\"$link\">$txt</a>";
|
$ret = "<a href=\"$link\">$txt</a>";
|
||||||
@ -2689,7 +2690,7 @@ FW_makeImage(@)
|
|||||||
|
|
||||||
####
|
####
|
||||||
sub
|
sub
|
||||||
FW_IconURL($)
|
FW_IconURL($)
|
||||||
{
|
{
|
||||||
my ($name)= @_;
|
my ($name)= @_;
|
||||||
return "$FW_ME/icons/$name";
|
return "$FW_ME/icons/$name";
|
||||||
@ -3147,7 +3148,7 @@ FW_Notify($$)
|
|||||||
for(my $i = 0; $i < $max; $i++) {
|
for(my $i = 0; $i < $max; $i++) {
|
||||||
my $t = (($ct && $ct->[$i]) ? $ct->[$i] : $tn);
|
my $t = (($ct && $ct->[$i]) ? $ct->[$i] : $tn);
|
||||||
my $line = "$t $dt $dn ".$events->[$i]."<br>";
|
my $line = "$t $dt $dn ".$events->[$i]."<br>";
|
||||||
eval {
|
eval {
|
||||||
my $ok;
|
my $ok;
|
||||||
if($h->{filterType} && $h->{filterType} eq "notify") {
|
if($h->{filterType} && $h->{filterType} eq "notify") {
|
||||||
$ok = ($dn =~ m/^$h->{filter}$/ ||
|
$ok = ($dn =~ m/^$h->{filter}$/ ||
|
||||||
@ -3189,7 +3190,7 @@ FW_directNotify($@) # Notify without the event overhead (Forum #31293)
|
|||||||
!$ntfy->{inform}{devices}{$dev} ||
|
!$ntfy->{inform}{devices}{$dev} ||
|
||||||
$ntfy->{inform}{type} ne "status");
|
$ntfy->{inform}{type} ne "status");
|
||||||
next if($filter && $ntfy->{inform}{filter} !~ m/$filter/);
|
next if($filter && $ntfy->{inform}{filter} !~ m/$filter/);
|
||||||
if(!FW_addToWritebuffer($ntfy,
|
if(!FW_addToWritebuffer($ntfy,
|
||||||
FW_longpollInfo($ntfy->{inform}{fmt}, @_)."\n")) {
|
FW_longpollInfo($ntfy->{inform}{fmt}, @_)."\n")) {
|
||||||
my $name = $ntfy->{NAME};
|
my $name = $ntfy->{NAME};
|
||||||
Log3 $name, 4, "Closing connection $name due to full buffer in FW_Notify";
|
Log3 $name, 4, "Closing connection $name due to full buffer in FW_Notify";
|
||||||
@ -3231,7 +3232,7 @@ FW_devState($$@)
|
|||||||
$cmdList = "desired-temp" if(!$cmdList);
|
$cmdList = "desired-temp" if(!$cmdList);
|
||||||
|
|
||||||
} elsif(!$dsi && $allSets =~ m/\bdesiredTemperature:/) {
|
} elsif(!$dsi && $allSets =~ m/\bdesiredTemperature:/) {
|
||||||
$txt = ReadingsVal($d, "temperature", "");
|
$txt = ReadingsVal($d, "temperature", "");
|
||||||
$txt =~ s/ .*//;
|
$txt =~ s/ .*//;
|
||||||
$txt .= "°C";
|
$txt .= "°C";
|
||||||
$cmdList = "desiredTemperature" if(!$cmdList);
|
$cmdList = "desiredTemperature" if(!$cmdList);
|
||||||
@ -3414,7 +3415,7 @@ FW_htmlEscape($)
|
|||||||
|
|
||||||
###########################
|
###########################
|
||||||
# Widgets START
|
# Widgets START
|
||||||
sub
|
sub
|
||||||
FW_widgetFallbackFn()
|
FW_widgetFallbackFn()
|
||||||
{
|
{
|
||||||
my ($FW_wname, $d, $FW_room, $cmd, $values) = @_;
|
my ($FW_wname, $d, $FW_room, $cmd, $values) = @_;
|
||||||
@ -3447,25 +3448,25 @@ FW_widgetFallbackFn()
|
|||||||
sub
|
sub
|
||||||
FW_visibleDevices(;$)
|
FW_visibleDevices(;$)
|
||||||
{
|
{
|
||||||
my($FW_wname) = @_;
|
my($FW_wname) = @_;
|
||||||
|
|
||||||
my %devices = ();
|
my %devices = ();
|
||||||
foreach my $d (sort keys %defs) {
|
foreach my $d (sort keys %defs) {
|
||||||
next if(!defined($defs{$d}));
|
next if(!defined($defs{$d}));
|
||||||
my $h = $defs{$d};
|
my $h = $defs{$d};
|
||||||
next if(!$h->{TEMPORARY});
|
next if(!$h->{TEMPORARY});
|
||||||
next if($h->{TYPE} ne "FHEMWEB");
|
next if($h->{TYPE} ne "FHEMWEB");
|
||||||
next if(defined($FW_wname) && $h->{SNAME} ne $FW_wname);
|
next if(defined($FW_wname) && $h->{SNAME} ne $FW_wname);
|
||||||
|
|
||||||
next if(!defined($h->{inform}));
|
next if(!defined($h->{inform}));
|
||||||
|
|
||||||
@devices{ keys %{$h->{inform}->{devices}} } =
|
@devices{ keys %{$h->{inform}->{devices}} } =
|
||||||
values %{$h->{inform}->{devices}};
|
values %{$h->{inform}->{devices}};
|
||||||
}
|
}
|
||||||
return %devices;
|
return %devices;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
FW_ActivateInform($;$)
|
FW_ActivateInform($;$)
|
||||||
{
|
{
|
||||||
my ($cl, $arg) = @_;
|
my ($cl, $arg) = @_;
|
||||||
@ -3665,14 +3666,14 @@ FW_log($$)
|
|||||||
confirm delete actions with a dialog. Default is 1, set it to 0 to
|
confirm delete actions with a dialog. Default is 1, set it to 0 to
|
||||||
disable the feature.
|
disable the feature.
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a name="confirmJSError"></a>
|
<a name="confirmJSError"></a>
|
||||||
<li>confirmJSError<br>
|
<li>confirmJSError<br>
|
||||||
JavaScript errors are reported in a dialog as default.
|
JavaScript errors are reported in a dialog as default.
|
||||||
Set this attribute to 0 to disable the reporting.
|
Set this attribute to 0 to disable the reporting.
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a name="CORS"></a>
|
<a name="CORS"></a>
|
||||||
<li>CORS<br>
|
<li>CORS<br>
|
||||||
@ -3713,7 +3714,7 @@ FW_log($$)
|
|||||||
<a name="cmdIcon"></a>
|
<a name="cmdIcon"></a>
|
||||||
<li>cmdIcon<br>
|
<li>cmdIcon<br>
|
||||||
Space separated list of cmd:iconName pairs. If set, the webCmd text is
|
Space separated list of cmd:iconName pairs. If set, the webCmd text is
|
||||||
replaced with the icon. An easy method to set this value is to use
|
replaced with the icon. An easy method to set this value is to use
|
||||||
"Extend devStateIcon" in the detail-view, and copy its value.<br>
|
"Extend devStateIcon" in the detail-view, and copy its value.<br>
|
||||||
Example:<ul>
|
Example:<ul>
|
||||||
attr lamp cmdIcon on:control_centr_arrow_up off:control_centr_arrow_down
|
attr lamp cmdIcon on:control_centr_arrow_up off:control_centr_arrow_down
|
||||||
@ -3726,7 +3727,7 @@ FW_log($$)
|
|||||||
commands. If set hides the <a href="#motd">motd</a>. Example:<br>
|
commands. If set hides the <a href="#motd">motd</a>. Example:<br>
|
||||||
attr WEB defaultRoom Zentrale
|
attr WEB defaultRoom Zentrale
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a name="devStateIcon"></a>
|
<a name="devStateIcon"></a>
|
||||||
<li>devStateIcon<br>
|
<li>devStateIcon<br>
|
||||||
@ -3737,7 +3738,7 @@ FW_log($$)
|
|||||||
If the STATE of the device matches regexp, then icon-name will be
|
If the STATE of the device matches regexp, then icon-name will be
|
||||||
displayed as the status icon in the room, and (if specified) clicking
|
displayed as the status icon in the room, and (if specified) clicking
|
||||||
on the icon executes cmd. If FHEM cannot find icon-name, then the
|
on the icon executes cmd. If FHEM cannot find icon-name, then the
|
||||||
STATE text will be displayed.
|
STATE text will be displayed.
|
||||||
Example:<br>
|
Example:<br>
|
||||||
<ul>
|
<ul>
|
||||||
attr lamp devStateIcon on:closed off:open<br>
|
attr lamp devStateIcon on:closed off:open<br>
|
||||||
@ -3976,7 +3977,7 @@ FW_log($$)
|
|||||||
|
|
||||||
<a name="longpollSVG"></a>
|
<a name="longpollSVG"></a>
|
||||||
<li>longpollSVG<br>
|
<li>longpollSVG<br>
|
||||||
Reloads an SVG weblink, if an event should modify its content. Since
|
Reloads an SVG weblink, if an event should modify its content. Since
|
||||||
an exact determination of the affected events is too complicated, we
|
an exact determination of the affected events is too complicated, we
|
||||||
need some help from the definition in the .gplot file: the filter used
|
need some help from the definition in the .gplot file: the filter used
|
||||||
there (second parameter if the source is FileLog) must either contain
|
there (second parameter if the source is FileLog) must either contain
|
||||||
@ -4061,8 +4062,8 @@ FW_log($$)
|
|||||||
The plots are created with the <a href="#SVG">SVG</a> module.
|
The plots are created with the <a href="#SVG">SVG</a> module.
|
||||||
This is the default.</li>
|
This is the default.</li>
|
||||||
<li>gnuplot-scroll<br>
|
<li>gnuplot-scroll<br>
|
||||||
The plots are created with the gnuplot program. The gnuplot
|
The plots are created with the gnuplot program. The gnuplot
|
||||||
output terminal PNG is assumed. Scrolling to historical values
|
output terminal PNG is assumed. Scrolling to historical values
|
||||||
is also possible, just like with SVG.</li>
|
is also possible, just like with SVG.</li>
|
||||||
<li>gnuplot-scroll-svg<br>
|
<li>gnuplot-scroll-svg<br>
|
||||||
Like gnuplot-scroll, but the output terminal SVG is assumed.</li>
|
Like gnuplot-scroll, but the output terminal SVG is assumed.</li>
|
||||||
@ -4153,7 +4154,7 @@ FW_log($$)
|
|||||||
attr WEB sortRooms DG OG EG Keller
|
attr WEB sortRooms DG OG EG Keller
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<li>sslVersion<br>
|
<li>sslVersion<br>
|
||||||
See the global attribute sslVersion.
|
See the global attribute sslVersion.
|
||||||
</li><br>
|
</li><br>
|
||||||
@ -4232,7 +4233,7 @@ FW_log($$)
|
|||||||
attr lamp webCmd on:off:on-for-timer 10<br>
|
attr lamp webCmd on:off:on-for-timer 10<br>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
The first specified command is looked up in the "set device ?" list
|
The first specified command is looked up in the "set device ?" list
|
||||||
(see the <a href="#setList">setList</a> attribute for dummy devices).
|
(see the <a href="#setList">setList</a> attribute for dummy devices).
|
||||||
If <b>there</b> it contains some known modifiers (colon, followed
|
If <b>there</b> it contains some known modifiers (colon, followed
|
||||||
@ -4243,12 +4244,12 @@ FW_log($$)
|
|||||||
attr d1 webCmd state<br>
|
attr d1 webCmd state<br>
|
||||||
attr d1 readingList state<br>
|
attr d1 readingList state<br>
|
||||||
attr d1 setList state:on,off<br><br>
|
attr d1 setList state:on,off<br><br>
|
||||||
|
|
||||||
define d2 dummy<br>
|
define d2 dummy<br>
|
||||||
attr d2 webCmd state<br>
|
attr d2 webCmd state<br>
|
||||||
attr d2 readingList state<br>
|
attr d2 readingList state<br>
|
||||||
attr d2 setList state:slider,0,1,10<br><br>
|
attr d2 setList state:slider,0,1,10<br><br>
|
||||||
|
|
||||||
define d3 dummy<br>
|
define d3 dummy<br>
|
||||||
attr d3 webCmd state<br>
|
attr d3 webCmd state<br>
|
||||||
attr d3 readingList state<br>
|
attr d3 readingList state<br>
|
||||||
@ -4412,11 +4413,11 @@ FW_log($$)
|
|||||||
<ul><code>
|
<ul><code>
|
||||||
attr WEB column LivingRoom:FS20,notify|FHZ,notify DiningRoom:FS20|FHZ
|
attr WEB column LivingRoom:FS20,notify|FHZ,notify DiningRoom:FS20|FHZ
|
||||||
</code></ul>
|
</code></ul>
|
||||||
|
|
||||||
In diesem Beispiel werden im Raum LivingRoom die FS20 sowie die notify
|
In diesem Beispiel werden im Raum LivingRoom die FS20 sowie die notify
|
||||||
Gruppe in der ersten Spalte, die FHZ und das notify in der zweiten
|
Gruppe in der ersten Spalte, die FHZ und das notify in der zweiten
|
||||||
Spalte angezeigt.<br>
|
Spalte angezeigt.<br>
|
||||||
|
|
||||||
Anmerkungen: einige Elemente, wie SVG Plots und readingsGroup
|
Anmerkungen: einige Elemente, wie SVG Plots und readingsGroup
|
||||||
können nur dann Teil einer Spalte sein wenn sie in <a
|
können nur dann Teil einer Spalte sein wenn sie in <a
|
||||||
href="#group">group</a> stehen. Dieses Attribut kann man zum sortieren
|
href="#group">group</a> stehen. Dieses Attribut kann man zum sortieren
|
||||||
@ -4431,15 +4432,15 @@ FW_log($$)
|
|||||||
Löschaktionen weden mit einem Dialog bestätigt.
|
Löschaktionen weden mit einem Dialog bestätigt.
|
||||||
Falls dieses Attribut auf 0 gesetzt ist, entfällt das.
|
Falls dieses Attribut auf 0 gesetzt ist, entfällt das.
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a name="confirmJSError"></a>
|
<a name="confirmJSError"></a>
|
||||||
<li>confirmJSError<br>
|
<li>confirmJSError<br>
|
||||||
JavaScript Fehler werden per Voreinstellung in einem Dialog gemeldet.
|
JavaScript Fehler werden per Voreinstellung in einem Dialog gemeldet.
|
||||||
Durch setzen dieses Attributes auf 0 werden solche Fehler nicht
|
Durch setzen dieses Attributes auf 0 werden solche Fehler nicht
|
||||||
gemeldet.
|
gemeldet.
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a name="CORS"></a>
|
<a name="CORS"></a>
|
||||||
<li>CORS<br>
|
<li>CORS<br>
|
||||||
@ -4485,7 +4486,7 @@ FW_log($$)
|
|||||||
wurde. Achtung: falls gesetzt, wird motd nicht mehr angezeigt.
|
wurde. Achtung: falls gesetzt, wird motd nicht mehr angezeigt.
|
||||||
Beispiel:<br>
|
Beispiel:<br>
|
||||||
attr WEB defaultRoom Zentrale
|
attr WEB defaultRoom Zentrale
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<a name="devStateIcon"></a>
|
<a name="devStateIcon"></a>
|
||||||
<li>devStateIcon<br>
|
<li>devStateIcon<br>
|
||||||
@ -4498,7 +4499,7 @@ FW_log($$)
|
|||||||
wird als icon-name das entsprechende Status Icon angezeigt, und (falls
|
wird als icon-name das entsprechende Status Icon angezeigt, und (falls
|
||||||
definiert), löst ein Klick auf das Icon das entsprechende cmd aus.
|
definiert), löst ein Klick auf das Icon das entsprechende cmd aus.
|
||||||
Wenn FHEM icon-name nicht finden kann, wird STATE als Text
|
Wenn FHEM icon-name nicht finden kann, wird STATE als Text
|
||||||
angezeigt.
|
angezeigt.
|
||||||
Beispiel:<br>
|
Beispiel:<br>
|
||||||
<ul>
|
<ul>
|
||||||
attr lamp devStateIcon on:closed off:open<br>
|
attr lamp devStateIcon on:closed off:open<br>
|
||||||
@ -4624,7 +4625,7 @@ FW_log($$)
|
|||||||
|
|
||||||
<a name="hiddenroom"></a>
|
<a name="hiddenroom"></a>
|
||||||
<li>hiddenroom<br>
|
<li>hiddenroom<br>
|
||||||
Eine Komma getrennte Liste, um Räume zu verstecken, d.h. nicht
|
Eine Komma getrennte Liste, um Räume zu verstecken, d.h. nicht
|
||||||
anzuzeigen. Besondere Werte sind input, detail und save. In diesem
|
anzuzeigen. Besondere Werte sind input, detail und save. In diesem
|
||||||
Fall werden diverse Eingabefelder ausgeblendent. Durch direktes Aufrufen
|
Fall werden diverse Eingabefelder ausgeblendent. Durch direktes Aufrufen
|
||||||
der URL sind diese Räume weiterhin erreichbar!<br>
|
der URL sind diese Räume weiterhin erreichbar!<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user