diff --git a/fhem/CHANGED b/fhem/CHANGED
index a86040d27..91a43e3fa 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -24,7 +24,7 @@
- feature: dummy got a setList attribute
- feature: new module 02_RSS.pm
- feature: at attribute alignTime added
- - feature: FHEMWEB attribute values via dropdown
+ - feature: FHEMWEB attribute values via dropdown, slider for dimmer
- 2011-12-31 (5.2)
- bugfix: applying smallscreen attributes to firefox/opera
diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm
index cc3a59cd9..ee2ebb22b 100755
--- a/fhem/FHEM/10_CUL_HM.pm
+++ b/fhem/FHEM/10_CUL_HM.pm
@@ -949,16 +949,13 @@ CUL_HM_Set($@)
$cmd = "pct";
} elsif(!defined($h)) {
- my $usg = "Unknown argument $cmd, choose one of " .
- join(" ",sort keys %culHmGlobalSets);
- $usg .= " ". join(" ",sort keys %{$culHmSubTypeSets{$st}})
- if($culHmSubTypeSets{$st});
- $usg .= " ". join(" ",sort keys %{$culHmModelSets{$md}})
- if($culHmModelSets{$md});
+ my @arr = keys %culHmGlobalSets;
+ push @arr, keys %{$culHmSubTypeSets{$st}} if($culHmSubTypeSets{$st});
+ push @arr, keys %{$culHmModelSets{$md}} if($culHmModelSets{$md});
+ my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr);
if($usg =~ m/ pct/) {
- my $pct = join(" ", (0..100));
- $usg =~ s/ pct/ $pct/;
+ $usg =~ s/ pct/ pct:slider,0,1,100/;
} elsif($md eq "HM-CC-TC") {
my @list = map { ($_.".0", $_+0.5) } (6..30);
@@ -969,6 +966,9 @@ CUL_HM_Set($@)
return $usg;
+ } elsif($cmd eq "pct") {
+ splice @a, 1, 1;
+
} elsif($h eq "" && @a != 2) {
return "$cmd requires no parameters";
diff --git a/fhem/FHEM/10_FS20.pm b/fhem/FHEM/10_FS20.pm
index 8109636c4..df9b5bca1 100755
--- a/fhem/FHEM/10_FS20.pm
+++ b/fhem/FHEM/10_FS20.pm
@@ -184,6 +184,12 @@ FS20_Set($@)
return "no set value specified" if($na < 2 || $na > 3);
return "Readonly value $a[1]" if(defined($readonly{$a[1]}));
+ if($na > 2 && $a[1] eq "dim") {
+ $a[1] = ($a[2] eq "0" ? "off" : "dim$a[2]%");
+ splice @a, 2, 1;
+ $na = int(@a);
+ }
+
my $c = $fs20_c2b{$a[1]};
my $name = $a[0];
if(!defined($c)) {
@@ -197,7 +203,8 @@ FS20_Set($@)
if($mt && $mt eq "simple");
}
return "Unknown argument $a[1], choose one of " .
- join(" ", sort keys %fs20_c2b);
+ join(" ", sort keys %fs20_c2b) .
+ " dim:slider,0,6.25,100";
}
diff --git a/fhem/TODO b/fhem/TODO
index eeb1734a6..a4700ea87 100644
--- a/fhem/TODO
+++ b/fhem/TODO
@@ -1,9 +1,6 @@
FHEM:
- FHEM2FHEM reconnect
- HomeMatic set log 2
-
-- autodetect physical hardware
-- RFR: Error message for uncomplete last message
- implement wiki decisions
Webpgm2
diff --git a/fhem/webfrontend/pgm2/01_FHEMWEB.pm b/fhem/webfrontend/pgm2/01_FHEMWEB.pm
index ad4715761..a7afe5087 100755
--- a/fhem/webfrontend/pgm2/01_FHEMWEB.pm
+++ b/fhem/webfrontend/pgm2/01_FHEMWEB.pm
@@ -26,7 +26,7 @@ sub FW_showLog($);
sub FW_showRoom();
sub FW_showWeblink($$$$);
sub FW_style($$);
-sub FW_submit($$);
+sub FW_submit($$@);
sub FW_substcfg($$$$$$);
sub FW_textfield($$$);
sub FW_updateHashes();
@@ -668,13 +668,22 @@ FW_makeSelect($$$$)
return if(!$list || $FW_hiddenroom{input});
my @al = sort map { s/:.*//;$_ } split(" ", $list);
+ my $selEl = $al[0];
+ $selEl = $1 if($list =~ m/([^ ]*):slider,/); # if available
+ $selEl = "room" if($list =~ m/room:/);
+
FW_pO "
";
}
@@ -696,7 +705,8 @@ FW_doDetail($)
FW_pO "";
foreach my $cmd (split(":", $webCmd)) {
FW_pO "";
- FW_pH "cmd.$d=set $d $cmd&detail=$d", ReplaceEventMap($d,$cmd,1), 1, "col1";
+ FW_pH "cmd.$d=set $d $cmd&detail=$d",
+ ReplaceEventMap($d,$cmd,1), 1, "col1";
FW_pO "
";
}
FW_pO "
";
@@ -707,10 +717,12 @@ FW_doDetail($)
FW_makeTable($d, $defs{$d});
FW_pO "Readings" if($defs{$d}{READINGS});
FW_makeTable($d, $defs{$d}{READINGS});
+
my $attrList = getAllAttr($d);
my $roomList = join(",", sort keys %FW_rooms);
$roomList=~s/ /\ /g;
$attrList =~ s/room /room:$roomList /;
+
FW_makeSelect($d, "attr", $attrList,"attr");
FW_makeTable($d, $attr{$d}, "deleteattr");
@@ -1282,9 +1294,9 @@ FW_hidden($$)
sub
FW_select($$$$@)
{
- my ($n, $va, $def,$class,$jfn) = @_;
- $jfn = ($jfn ? "onchange=\"$jfn\"" : "");
- my $s = "