http://wiki.fhem.de/w/api.php?action=feedcontributions&user=Nobby1805&feedformat=atomFHEMWiki - Benutzerbeiträge [de]2024-03-29T08:51:53ZBenutzerbeiträgeMediaWiki 1.39.3http://wiki.fhem.de/w/index.php?title=Gleitende_Mittelwerte_berechnen_und_loggen&diff=34272Gleitende Mittelwerte berechnen und loggen2020-11-23T18:27:44Z<p>Nobby1805: /* Funktion movingAverage() aufrufen und nutzen */ userReadings ... hinten ein s</p>
<hr />
<div>Für verschiedene Wettersensoren ist es oftmals wünschenswert, gleitende Mittelwerte (fälschlich auch als "relative" Mittelwerte bezeichnet) über ein bestimmtes Zeitfenster auszugeben oder in den Logs zu speichern und zu plotten. Beispiele:<br />
* Die momentanen Winddaten eines KS300 sind oft stark schwankend. Hier wäre ein Mittelwert z.B. der letzten 2-3 Stunden interessant. <br />
* Für die Außentemperatur ist anhand eines Mittelwertes der letzten 24 Stunden evtl. ein gewisser Trend der generellen Entwicklung der Temperatur ableitbar.<br />
<br />
Mit Modulen wie ''rain'' oder ''average'' ist konzeptbedingt nur ein Mittelwert von fixen Zeiträumen (aktueller Tag, Monat, etc.) möglich. <br />
<br />
Im Nachfolgenden werden deshalb zwei Programme vorgestellt, die solche gleitenden Mittelwerte bereitstellen. Beide Programme werden in die Datei [[99 myUtils anlegen|99_MyUtils.pm]] eingetragen und dann von FHEM aufgerufen. Das erste Programm macht dies für beliebige Readings beliebiger Devices, das zweite Programm greift auf beliebige [[FileLog|File-]] oder [[DbLog|DbLogs]] zurück.<br />
<br />
== Gleitender Mittelwert für beliebige Readings ==<br />
=== Subroutine movingAverage in 99_MyUtils anlegen ===<br />
Zuerst muss die Subroutine ''movingAverage'' in die 99_MyUtils übernommen werden. Wenn noch nicht vorhanden, sollte die Datei dann so aussehen:<br />
<br />
<nowiki>package main;<br />
use strict;<br />
use warnings;<br />
use POSIX;<br />
sub<br />
MyUtils_Initialize($$)<br />
{<br />
my ($hash) = @_;<br />
}<br />
###############################################################################<br />
#<br />
# Moving average <br />
#<br />
# Aufruf: movingAverage(devicename,readingname,zeitspanne in s)<br />
#<br />
###############################################################################<br />
<br />
sub movingAverage($$$){<br />
my ($name,$reading,$avtime) = @_;<br />
my $hash = $defs{$name};<br />
my @new = my ($val,$time) = ($hash->{READINGS}{$reading}{VAL},$hash->{READINGS}{$reading}{TIME});<br />
my ($cyear, $cmonth, $cday, $chour, $cmin, $csec) = $time =~ /(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)/;<br />
my $ctime = $csec+60*$cmin+3600*$chour;<br />
my $num;<br />
my $arr;<br />
#-- initialize if requested<br />
if( ($avtime eq "-1") ){<br />
$hash->{READINGS}{$reading}{"history"}=undef;<br />
}<br />
#-- test for existence<br />
if( !$hash->{READINGS}{$reading}{"history"}){<br />
#Log 1,"ARRAY CREATED";<br />
push(@{$hash->{READINGS}{$reading}{"history"}},\@new);<br />
$num = 1;<br />
$arr=\@{$hash->{READINGS}{$reading}{"history"}};<br />
} else {<br />
$num = int(@{$hash->{READINGS}{$reading}{"history"}});<br />
$arr=\@{$hash->{READINGS}{$reading}{"history"}};<br />
my $starttime = $arr->[0][1];<br />
my ($syear, $smonth, $sday, $shour, $smin, $ssec) = $starttime =~ /(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)/;<br />
my $stime = $ssec+60*$smin+3600*$shour;<br />
#-- correct for daybreak<br />
$stime-=86400 <br />
if( $stime > $ctime);<br />
if( ($num < 25)&&( ($ctime-$stime)<$avtime) ){<br />
#Log 1,"ARRAY has $num elements, adding another one";<br />
push(@{$hash->{READINGS}{$reading}{"history"}},\@new);<br />
}else{<br />
shift(@{$hash->{READINGS}{$reading}{"history"}});<br />
push(@{$hash->{READINGS}{$reading}{"history"}},\@new);<br />
}<br />
}<br />
#-- output and average<br />
my $average = 0;<br />
for(my $i=0;$i<$num;$i++){<br />
$average+=$arr->[$i][0];<br />
Log 4,"[$name moving average] Value = ".$arr->[$i][0]." Time = ".$arr->[$i][1]; <br />
}<br />
$average=sprintf( "%5.3f", $average/$num);<br />
#--average<br />
Log 4,"[$name moving average] calculated over $num values is $average"; <br />
return $average;<br />
}<br />
<br />
<br />
1;</nowiki><br />
<br />
=== Funktion movingAverage() aufrufen und nutzen ===<br />
Bei jedem Aufruf schiebt die obige Funktion den gegenwärtigen Wert sowie den Zeitpunkt eines Readings (zweiter Parameter) ans Ende eines Arrays (maximal 25 Einträge) und wirft dafür den ersten Eintrag heraus. Die Anzahl der Einträge im Array wird so gewählt, dass die Zeitpunkte der Readings größer oder gleich der gewünschten Zeitspanne für die Mittelung sind. Über diese Werte wird dann gemittelt und der Wert zurückgegeben.<br />
<br />
Zur Anwendung empfiehlt sich, dem gewünschten Device ein userReading zu geben:<br />
:<code>attr devicename userReadings readingname.av {movingAverage("devicename","readingname",zeitspanne)}</code><br />
<br />
Dieses wird dann automatisch bei jedem neuen Wert des Readings mit dem neuen gleitenden Mittelwert über die vergangene Zeitspanne gefüllt.<br />
<br />
Beispiel: Das Reading "pressure" des Devices "A.OWB" wird alle 5 Minuten aktualisiert. Das Device bekommt nun ein userReading:<br />
:<code>attr A.OWB userReadings pressure.av {movingAverage("A.OWB","pressure",1800)}</code><br />
<br />
Dieses schreibt bei jeder Aktualisierung von "pressure" einen neuen Eintrag in sein Array - allerdings maximal sechs Werte, dann wird immer der älteste Eintrag gelöscht. Damit ist sichergestellt, dass diese mindestens 1800 Sekunden abdecken - also sechs Einträge.<br />
<br />
== Gleitender Mittelwert aus Log-Dateien ==<br />
=== Subroutine myAverage() in 99_MyUtils anlegen ===<br />
Zuerst muss die Subroutine myAverage in die 99_MyUtils übernommen werden. Wenn noch nicht vorhanden, sollte die Datei dann so aussehen:<br />
<br />
<nowiki>package main;<br />
use strict;<br />
use warnings;<br />
use POSIX;<br />
sub<br />
MyUtils_Initialize($$)<br />
{<br />
my ($hash) = @_;<br />
}<br />
##########################################################<br />
# myAverage<br />
# berechnet den Mittelwert aus LogFiles über einen beliebigen Zeitraum<br />
sub<br />
myAverage($$$)<br />
{<br />
my ($offset,$logfile,$cspec) = @_;<br />
my $period_s = strftime &quot;%Y-%m-%d\x5f%H:%M:%S&quot;, localtime(time-$offset);<br />
my $period_e = strftime &quot;%Y-%m-%d\x5f%H:%M:%S&quot;, localtime;<br />
my $oll = $attr{global}{verbose};<br />
$attr{global}{verbose} = 0; <br />
my @logdata = split(&quot;\n&quot;, fhem(&quot;get $logfile - - $period_s $period_e $cspec&quot;));<br />
$attr{global}{verbose} = $oll; <br />
my ($cnt, $cum, $avg) = (0)x3;<br />
foreach (@logdata){<br />
my @line = split(&quot; &quot;, $_);<br />
if(defined $line[1] &amp;&amp; &quot;$line[1]&quot; ne &quot;&quot;){<br />
$cnt += 1;<br />
$cum += $line[1];<br />
}<br />
}<br />
if(&quot;$cnt&quot; &gt; 0){$avg = sprintf(&quot;%0.1f&quot;, $cum/$cnt)};<br />
Log 4, (&quot;myAverage: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Count: $cnt, Cum: $cum, Average: $avg&quot;);<br />
return $avg;<br />
}<br />
##########################################################<br />
1;</nowiki><br />
<br />
=== Funktion myAverage() aufrufen und nutzen ===<br />
Jetzt kann die Funktion <code>myAverage(&lt;offset&gt;, &lt;logfile&gt;, &lt;column-spec&gt;)</code> ganz normal auf der FHEM-Konsole (telnet localhost 7072) genutzt werden. Hier z.B. die Ausgabe des Mittelwertes des Windsensors, eines KS300, über die letzten drei Stunden (Angabe in 3*3600s) oder der Temperaturmittelwert der letzten 24 Stunden.<br />
<br />
Mit FileLog:<br />
<br />
<nowiki>fhem&gt; {myAverage(&quot;10800&quot;, &quot;FileLog_KS300&quot;, &quot;8:::&quot;)}<br />
6.3<br />
fhem&gt; {myAverage(&quot;86400&quot;, &quot;FileLog_KS300&quot;, &quot;4:::&quot;)}<br />
-2.7<br />
fhem&gt;</nowiki><br />
<br />
Mit DbLog:<br />
<br />
<nowiki>fhem&gt; {myAverage(&quot;10800&quot;, &quot;myDbLog&quot;, &quot;KS300:wind::&quot;)}<br />
5.9<br />
fhem&gt; {myAverage(&quot;86400&quot;, &quot;myDbLog&quot;, &quot;KS300:temperature::&quot;)}<br />
-2.7<br />
fhem&gt;</nowiki><br />
<br />
Ähnlich ist die Verwendung in perl-Code in der [[Konfiguration|fhem.cfg]]:<br />
<br />
<nowiki>my $avg = myAverage(&quot;10800&quot;, &quot;FileLog_KS300&quot;, &quot;8:::&quot;);;\</nowiki><br />
Ein [[notify]], welches bei jedem neuen Sensorwert die Mitteltemperatur der letzten 24 Stunden als Event "average-temp xy" ins Logfile schreibt, sieht dann wie folgt aus:<br />
<br />
<nowiki>define KS300_T_notify notify KS300:temperature.* {\<br />
fhem('trigger KS300 average-temp: '.myAverage(&quot;86400&quot;, &quot;FileLog_KS300&quot;, &quot;4:::&quot;));;\<br />
}</nowiki><br />
<!-- korrigiert lt. http://forum.fhem.de/index.php/topic,11622.msg170331.html#msg170331 --><br />
<br />
Analog dazu wäre mit den Winddaten zu verfahren.<br />
<br />
=== Eigenes Filelog und Plot ===<br />
==== Definitionen ====<br />
Ich schreibe ein komplett eigenes Logfile und lasse über eine spezielle gplot-Definition die Temperatur- und Winddaten loggen und plotten.<br />
<br />
<nowiki>define KS300_W dummy<br />
define KS300_W_notify notify KS300:wind.* {\<br />
my $avg = myAverage(&quot;10800&quot;, &quot;FileLog_KS300&quot;, &quot;8:::&quot;);;\<br />
my $event = sprintf(&quot;Wc:&#160;%0.1f Wd:&#160;%0.1f Wm:&#160;%0.1f Wlh:&#160;%0.1f&quot;, ReadingsVal(&quot;KS300&quot;,&quot;wind&quot;,&quot;0&quot;), ReadingsVal(&quot;KS300&quot;,&quot;W_avg_day&quot;,&quot;0&quot;), ReadingsVal(&quot;KS300&quot;,&quot;W_avg_month&quot;,&quot;0&quot;), $avg);;\<br />
Log 2, (&quot;K300_W: Event: $event&quot;);;\<br />
fhem(&quot;trigger KS300_W data: $event&quot;);;\<br />
fhem(&quot;trigger KS300 average-wind: $avg&quot;);;\<br />
}<br />
define FileLog_KS300_W FileLog ./log/KS300_W-%Y.log KS300_W.*<br />
attr FileLog_KS300_W logtype text<br />
attr FileLog_KS300_W room Logs<br />
define KS300_TH dummy<br />
define KS300_TH_notify notify KS300:temperature.* {\<br />
my $avg = myAverage(&quot;86400&quot;, &quot;FileLog_KS300&quot;, &quot;4:::&quot;);;\<br />
my $event = sprintf(&quot;Tc:&#160;%0.1f Hc:&#160;%0.1f Tavg:&#160;%0.1f&quot;, ReadingsVal(&quot;KS300&quot;,&quot;temperature&quot;,&quot;0&quot;), ReadingsVal(&quot;KS300&quot;,&quot;humidity&quot;,&quot;0&quot;), $avg);;\<br />
Log 2, (&quot;K300_TH: Event: $event&quot;);;\<br />
fhem(&quot;trigger KS300_TH data: $event&quot;);;\<br />
fhem('trigger KS300 average-temp: '.$avg);;\<br />
}<br />
define FileLog_KS300_TH FileLog ./log/KS300_TH-%Y.log KS300_TH.*<br />
attr FileLog_KS300_TH logtype text<br />
attr FileLog_KS300_TH room Logs</nowiki><br />
Die Definitionen für die Plots schauen so aus:<br />
<br />
<nowiki>define weblink_KS300_W weblink fileplot FileLog_KS300_W:ks300_wind:CURRENT<br />
attr weblink_KS300_W label &quot;Wind - Min: $data{min1}, Max: $data{max1}, Last: $data{currval1}&quot;<br />
attr weblink_KS300_W room Dachterasse<br />
define weblink_KS300_TH weblink fileplot FileLog_KS300_TH:ks300_temphum:CURRENT<br />
attr weblink_KS300_TH label &quot;Temperatur/Feuchte - Min: $data{min1}, Max: $data{max1}, Last: $data{currval1}&quot;<br />
attr weblink_KS300_TH room Dachterasse<br />
define weblink_KS300_R weblink fileplot FileLog_KS300:ks300_rain10:CURRENT<br />
attr weblink_KS300_R label &quot;Regen - Min: $data{min1}, Max: $data{max1}, Last: $data{currval1}&quot;<br />
attr weblink_KS300_R room Dachterasse</nowiki><br />
<br />
==== Angepasste gplot-Dateien ====<br />
Nun noch die speziellen gplot-Dateien.<br />
ks300_wind.gplot<br />
<br />
<nowiki>############################<br />
# Display the wind values of a KS300.<br />
# Corresponding FileLog definition:<br />
# define &lt;filelogname&gt; FileLog ./log/KS300_W-%Y.log KS300_W.*<br />
set terminal png transparent size &lt;SIZE&gt; crop<br />
set output '&lt;OUT&gt;.png'<br />
set xdata time<br />
set timefmt &quot;%Y-%m-%d_%H:%M:%S&quot;<br />
set xlabel &quot; &quot;<br />
set ytics nomirror<br />
#set y2tics<br />
set ytics<br />
set title '&lt;L1&gt;'<br />
set grid xtics ytics<br />
set yrange [0:]<br />
set y2range [0:]<br />
set ylabel &quot;Wind (aktuell) [km/h]&quot;<br />
set y2label &quot;Wind (gemittelt) [km/h]&quot;<br />
set format y2 &quot;%0.1f&quot;<br />
#FileLog 5:Wc\x3a:0:<br />
#FileLog 11:Wlh\x3a:0:<br />
plot &quot;&lt;IN&gt;&quot; using 1:5 ls l7fill axes x1y1 title 'Wind (aktuell)' with lines,\<br />
&quot;&lt;IN&gt;&quot; using 1:11 ls l5 axes x1y2 title 'Wind (3h-Mittel)' with steps,\</nowiki><br />
<br />
ks300_temphum.gplot<br />
<br />
<nowiki>############################<br />
# Display the Temperature und Humidity values of a KS300.<br />
# Corresponding FileLog definition:<br />
# define &lt;filelogname&gt; FileLog ./log/KS300_TH-%Y.log KS300_TH.*<br />
set terminal png transparent size &lt;SIZE&gt; crop<br />
set output '&lt;OUT&gt;.png'<br />
set xdata time<br />
set timefmt &quot;%Y-%m-%d_%H:%M:%S&quot;<br />
set xlabel &quot; &quot;<br />
set ytics nomirror<br />
set y2tics<br />
#set ytics<br />
set title '&lt;L1&gt;'<br />
set grid xtics y2tics<br />
set y2label &quot;Temperatur [°C]&quot;<br />
set ylabel &quot;Luftfeuchte [%]&quot;<br />
#FileLog 5:Tc\x3a:0:<br />
#FileLog 9:Tavg\x3a:0:<br />
#FileLog 7:Hc\x3a:0:<br />
plot &quot;&lt;IN&gt;&quot; using 1:5 axes x1y2 ls l0 title 'Temperatur' with lines,\<br />
&quot;&lt;IN&gt;&quot; using 1:9 axes x1y2 ls l10 title 'Temperatur (24h-Mittel)' with lines,\<br />
&quot;&lt;IN&gt;&quot; using 1:7 axes x1y1 ls l2fill title 'Luftfeuchte' with lines</nowiki><br />
Den Plot für den Regen habe ich noch um Punkt-Plots für den israining-Status erweitert, so dass Punkte bei "yes" geplottet werden.<br />
<br />
ks300_rain10.gplot<br />
<br />
<nowiki>############################<br />
# Display the Rain values of a KS300.<br />
# Corresponding FileLog definition:<br />
# define &lt;filelogname&gt; FileLog ./log/KS300-%Y.log KS300:T:.*<br />
set terminal png transparent size &lt;SIZE&gt; crop<br />
set output '&lt;OUT&gt;.png'<br />
set xdata time<br />
set timefmt &quot;%Y-%m-%d_%H:%M:%S&quot;<br />
set xlabel &quot; &quot;<br />
set ytics nomirror<br />
#set y2tics<br />
set ytics<br />
set title '&lt;L1&gt;'<br />
set grid xtics ytics<br />
set y2range [0.5:1.5]<br />
set y2tics (&quot;&quot; 0, &quot;Regen&quot; 1)<br />
set pointsize 7<br />
set ylabel &quot;Regen (l/m²)&quot;<br />
set yrange [0:]<br />
# Computing Rain/h and Rain/d values by accumulating the changes.<br />
#FileLog 10:IR\x3a:0:delta-h<br />
#FileLog 10:IR\x3a:0:delta-d<br />
#FileLog 12:IR:0:$fld[11]=~&quot;yes&quot;?1:0<br />
plot &quot;&lt;grep -v avg_ &lt;IN&gt; | perl -ane '\<br />
@a = split(\&quot;[_:]\&quot;, $F[0]);\<br />
if(defined($lh) &amp;&amp; $lh ne $a[1])\<br />
{ printf(\&quot;${ld}_$lh:30:00&#160;%f\n\&quot;, $hv); $hv = 0; }\<br />
if($lv) { $hv += ($F[9]-$lv); }\<br />
$lh = $a[1]; $ld = $a[0]; $lv = $F[9];\<br />
END { printf(\&quot;${ld}_$lh:30:00&#160;%f\n\&quot;, $hv) }'&quot;\<br />
using 1:2 axes x1y1 ls l1fill title 'Regen pro Stunde' with histeps,\<br />
&quot;&lt;grep -v avg_ &lt;IN&gt; | perl -ane '\<br />
@a = split(\&quot;[_]\&quot;, $F[0]);\<br />
if(defined($ld) &amp;&amp; $ld ne $a[0]) {\<br />
printf(\&quot;${ld}_12:00:00&#160;%f\n\&quot;, $dv); $dv = 0; }\<br />
if($lv) { $dv += ($F[9]-$lv); }\<br />
$ld = $a[0]; $lv = $F[9];\<br />
END {printf(\&quot;${ld}_12:00:00&#160;%f\n\&quot;, $dv)}'&quot;\<br />
using 1:2 axes x1y1 ls l7 title 'Regen pro Tag' with histeps<br />
&quot;&lt;grep -v avg_ &lt;IN&gt; | awk '{print $1, $12==\&quot;yes\&quot;? 1&#160;: 0; }'&quot;\<br />
using 1:2 axes x1y2 ls l11fill title 'Regen aktuell' with points</nowiki><br />
Eventuell müssen in den gplots noch die Linienstile/Farben den eigenen Bedürfnissen angepasst werden. Ich verwende hier eigene Farben und Füllungen.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Code Snippets]]<br />
[[Kategorie:Logging]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP&diff=31710HM-TC-IT-WM-W-EU Funk-Wandthermostat AP2019-11-16T19:51:55Z<p>Nobby1805: /* Bekannte Probleme */ Link ins ELV-Forum angepasst</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-TC-IT-WM-W-EU.jpg<br />
|Bildbeschreibung=HM-TC-IT-WM-W-EU mit Standard-Einstellungen<br />
|HWProtocol=[[HomeMatic]]<br />
|HWType=[[HomeMatic Type Thermostat|thermostat]]<br />
|HWCategory=[[:Kategorie:Temperatursensoren|Temperatursensoren]] [[:Kategorie:Feuchtesensoren|Feuchtesensoren]]<br />
|HWComm=868,3 MHz<br />
|HWChannels=7<br />
|HWVoltage=3 V<br />
|HWPowerConsumption=40 mA (max)<br />
|HWPoweredBy=2 x LR6/Mignon/AA<br />
|HWSize=ohne Rahmen: 55&#8239;x&#8239;55&#8239;x&#8239;20&nbsp;mm<br />mit Rahmen: 86&#8239;x&#8239;86&#8239;x&#8239;21,5&nbsp;mm<br />
|HWDeviceFHEM=[[CUL_HM]]<br />
<!-- |ModOwner= --><br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
'''HM-TC-IT-WM-W-EU Funk-Wandthermostat AP'''<br />
<br />
HomeMatic-Wandthermostat Aufputz. Verfügbar seit Februar 2014. Nachfolger des [[HM-CC-TC_Funk-Wandthermostat|HM-CC-TC]].<br />
<br />
== Vorbemerkungen ==<br />
: ''→ Allgemeine Informationen, die alle HomeMatic Thermostate betreffen, sind unter [[HomeMatic Type Thermostat]] zu finden.''<br />
<br />
Der '''HM-TC-IT-WM-W-EU Funk-Wandthermostat''' misst die Raumtemperatur und Luftfeuchtigkeit. Er verfügt über individuell einstellbare Wochenprogramme und Programmierung direkt am Gerät. Zusätzlich ist auch eine Boost-Funktion vorhanden (ermöglicht ein schnelles, kurzzeitiges Aufheizen des Heizkörpers). Er verfügt über ein eigenes Anzeigedisplay für Soll- und Isttemperatur sowie Luftfeuchtigkeit. Er kann mittels Klebestreifen irgendwo aufgeklebt werden, soll aber auch in Mehrfachrahmen von Berker, ELSO, Gira, Merten und JUNG passen.<br />
<br />
Der Hauptnutzen gegenüber den Heizkörperthermostaten besteht neben einer weitaus bequemeren Bedienung und der möglichen Anzeige von Istwerten von Temperatur und Luftfeuchte auch in einer Entkopplung der Raumtemperaturreglung aus der räumlichen Nähe des Heizkörpers. Zusätzlich oder alternativ zur Heizkörpersteuerung ist auch die Anbindung von Fußbodenheizung oder anderen Wärmequellen über einen funkgesteuerten Schaltaktor durch einen separaten Schaltkanal möglich.<br />
<br />
== Technische Daten ==<br />
<br />
'''Technische Daten:'''<br />
* Versorgungsspannung: 2 Stck. 1,5 V LR03/Micro/AAA<br />
* Stromaufnahme (max.): 40 mA<br />
* Schutzart: IP20<br />
* Schutzklasse: III<br />
* Abmessungen (BxHxT ohne Rahmen): 55 x 55 x 20 mm<br />
* Abmessungen (BxHxT mit Rahmen): 86 x 86 x 21,5 mm<br />
* Gewicht (ohne Batterien): 74 g<br />
* Temperaturwahl in Schritten von: 0,5 °C<br />
<br />
Im Gegensatz zum HM-CC-TC kann der HM-TC-IT-WM-W-EU auch andere HomeMatic-Schaltaktoren (z.B. [[HM-LC-SW1-FM_Schaltaktor_1-fach_UP|HM-LC-SW1-FM]]) über den Channel 07 SwitchTr direkt anlernen, womit z.B. die Steuerung elektrischer Heizungen möglich wird. Der HM-CC-TC konnte direkt nur die HM-CC-VD steuern.<br />
<br />
<br />
== Betrieb mit FHEM ==<br />
Grundsätzlich sind speziell bei der Ansteuerung von [[HM-CC-RT-DN Funk-Heizkörperthermostat]] zwei Betriebsarten mit FHEM denkbar.<br />
<br />
=== Steuerung nur über den Wandthermostat ===<br />
<br />
In diesem Fall werden zunächst alle [[HM-CC-RT-DN Funk-Heizkörperthermostat]]e mit dem HM-TC-IT-WM-W-EU Funk-Wandthermostat verbunden wie in den Handbüchern beschrieben (dort "verknüpfen" genannt, technisch handelt es sich um eine peering).<br />
Dazu muss die mittlere Taste der Heizkörper Ventile länger als 3 Sekunden gedrückt werden, ebenso das Einstellrad am Wandthermostat. Die "Verknüpfung" war erfolgreich, wenn beide Geräte "ACK" im Display zeigen. <br />
<br />
Wichtig ist, dass keines der Geräte vorher mit einer Zentrale (u.B. VCCU) gepairt sein darf. Im Zweifel vorher unpairen.<br />
<br />
Wenn alle Heizkörperthermostat gepeert ("verknüpft") sind, dann wird das HM-TC-IT-WM-W-EU Funk-Wandthermostat mit FHEM wie in [[HomeMatic Devices pairen]] beschrieben gepairt.<br />
<br />
Anschliessend kann per FHEM mit dem Befehl<br />
set myTC desired-temp 22<br />
die Zieltemperatur an den Wandthermostat übermittelt werden. Dieser verteilt diese Temperatur und seine gemessene Ist-Temperatur an die Heizkörperthermostate weiter, die dann entsprechend das Ventil öffnen oder schliessen. Die Wunschtemperatur kann auch lokal an '''allen''' Geräten (also auch an einem der Heizkörperthermostate) per Drehregler geändert werden und wird anschliessend an alle anderen Geräte und FHEM weiterübertragen. Kommunikationspartner für FHEM ist aber immer nur das gepairte HM-TC-IT-WM-W-EU Funk-Wandthermostat.<br />
<br />
Vorteile dieser Methode:<br />
* schnell eingerichtet - weniger Komplex, keine Channel peering notwendig.<br />
* weniger Geräte in FHEM, weniger Daten, weniger Defs, weniger Prozessorlast, geringer Verbrauch des Funkkontingents an FHEMs Funkschnittstelle etc. (Es ist allerdings fraglich, ob in normalen Installationen diese Effekte überhaupt spürbar sind)<br />
* Heizung kann am HM-TC-IT-WM-W-EU Funk-Wandthermostat auch bei Ausfall von FHEM eingestellt werden.<br />
* eventuelles Wochenprogramm muss nur an einer Stelle eingespielt werden (nämlich in den Wandthmermostaten)<br />
<br />
Nachteile dieser Methode:<br />
* keine direkte Kontrolle über die Heizkörperthermostate, weniger Daten. Z.B. ist der Valevöffnungsgrad FHEM unbekannt, ebenso Batteriewarnungen, auch lassen sich diverse Dinge nicht konfigurieren wie Button lock, boost-time, remote Kanal zur Abschaltung, temp-offset, maximale Ventilöffnung etc.<br />
* leichte Verzögerung in der Übermittlung der Zieltemperatur, da diese zuerst an den Wandthermostaten übermittelt wird und dieser erst mit etwas Verzögerung die Daten an die Heizkörperthermostaten weiterreicht.<br />
* eventuelles Wochenprogramm kann nur an einer Stelle eingespielt werden (nämlich in den Wandthmermostaten), man kann also nicht einzelnen Heizkörpern abweichende Programme geben. Da man einen Wandthermostat wohl in der Praxis nur mit Heizkörperthermostaten '''eines''' einzelnen Raumes peeren wird, ist dieser Nachteil ggf eher theoretischern Natur.<br />
<br />
=== Steuerung aller Komponenten durch FHEM ===<br />
<br />
Diese Methode wird zumindest von den meisten Nutzern des Forums favorisiert, weil sie mehr Kontrolle auch über Details und Geräte ermöglicht.<br />
<br />
In diesem Fall werden zunächst alle Geräte - also die Heizkörperthermostate und der Wandthermostat - wie in [[HomeMatic Devices pairen]] beschrieben mit FHEM (also i.d.R. der VCCU) gepairt.<br />
<br />
Danach kann das [[Peering (HomeMatic)|Peering]] mit den Heizkörperthermostaten des betreffenden Raumes stattfinden. Je nach Funktion sind dazu einer oder mehrer Channels zu peeren, Details weiter unten.<br />
<br />
Vorteile dieser Methode:<br />
* direkte Kontrolle über die Heizkörperthermostate, Verfügbarkeit Daten wie z.B Valevöffnungsgrad FHEM, Batteriestatus, am jedem Heizkörper gemessene Temperatur etc.; diverse Paramter am Heizkörperthermostat konfigurierbar, wie Button lock, boost-time, remote Kanal zur Abschaltung, temp-offset, maximale Ventilöffnung etc.<br />
* schneller Übermittlung der Zieltemperatur (und sonstiger Daten), da diese zugleich an alle gepeerten Thermostaten übermittelt wird.<br />
* Wochenprogramm frei in alle Geräte übertragbar, dadurch in grossen Räumen gezieltes Ansteuern einzelner Heizkörper möglich etc.<br />
<br />
<br />
Nachteile dieser Methode:<br />
* deutlich komplexer in der Einrichtung<br />
* mehr Geräte in FHEM, mehr Daten, mehr Defs notwendig, höhere Prozessorlast, höhere Auslastung des Funkkontingents an der HM Funkschnittstelle von FHEM (zumindest für ''normale'' Anzahl von Thermostaten eher theoretischer Natur)<br />
* Zieltemperatur kann ohne FHEM nicht mehr am HM-TC-IT-WM-W-EU Funk-Wandthermostat eingestellt werden, sondern müsste an jedem Heizkörper einzeln eingestellt werden.<br />
* Wochenprogramm muss ggf auf mehrere Geräte verteilt werden.<br />
<br />
Bei der Steuerung aller Komponenten über FHEM müssen je nach Anwendungsfall bestimmte Channels gepeert werden.<br />
<br />
==== Channels (Kanäle) ====<br />
<br />
===== Channel (Kanal) 01 _Weather =====<br />
Damit das [[HM-CC-RT-DN Funk-Heizkörperthermostat]] die Temperatur des Wandthermostats übernimmt, muss der Weather Kanal gepeert werden:<br />
<br />
set <HM-TC-IT-WM-W-EU-Gerät>_Weather peerChan 0 <HM-CC-RT-DN-Gerät>_Weather single set<br />
<br />
===== Channel (Kanal) 02 _Climate =====<br />
Damit der Heizkörperthermostat vom Wandthermostat auch eingestellt werden kann (Soll-Temperatur, Mode etc.), muss der Climate Kanal gepeert werden:<br />
<br />
set <HM-TC-IT-WM-W-EU-Gerät>_Climate peerChan 0 <HM-CC-RT-DN-Gerät>_Climate single set<br />
Dies muss für jedes zu steuernde Heizkörperthermostat wiederholt werden.<br />
<br />
===== Channel (Kanal) 03 _WindowRec =====<br />
Mit diesem Kanal lassen sich Fensterkontakte (HM-SEC-SC oder HM-SEC-RHS) peeren, die ihren Fensterstatus (geöffnet/gekippt) an ein oder mehrere Thermostate senden. Die Thermostate stellen anschließend die entsprechende (konfigurierbare) Temperatur ein. Der Temperaturwert kann je Fenster-Sensor unterschiedlich definiert werden. Sind mehrere Fenster gleichzeitig geöffnet, so wird der Thermostat auf die Temperatur des Sensors mit dem geringsten Temperaturwert eingestellt. <br />
<br />
Damit der Tür-Fensterkontakt den Thermostat aufwecken kann, muss zuerst der Burst-Modus aktiviert werden, siehe dazu [[HM-SEC-SC_Tür-Fensterkontakt#Problembehebung]].<br />
<br />
Das eigentliche Peering mit einem Tür-Fensterkontakt läuft wie folgt ab:<br />
<br />
set <HM-Sec-SC> peerChan 0 <HM-TC-IT-WM-W-EU-Gerät>_WindowRec single set<br />
<br />
Der Befehl zur Temperatureinstellung des Heizkörperthermostaten für den Zustand "Fenster offen" lautet, wobei <fensterSensor> die FHEM-Kanalbezeichnung für den Fensterkontakt ist und <tc_WindowRec> die Kanalbezeichnung für den entsprechenden Kanal des Heizkörperthermostates, sowie <Temp> die einzustellende Temperatur (ganzzahliger Wert):<br />
set <tc_WindowRec> regSet winOpnTemp <Temp> <fensterSensor><br />
<br />
===== Channel (Kanal) 06 _remote =====<br />
Dieser Kanal kann an eine Fernbedienung gekoppelt werden. Per Tastendruck kann man einen bestimmten Mode und/oder eine bestimmte Temperatur wählen. Dabei kann die Reaktion auf einen langen oder kurzen Tastendruck gesondert eingestellt werden.<br />
<br />
Der Befehl zum peeren lautet, wobei <button> die Kanalbezeichnung der Fernbedienung und <tc-remote> die Kanalbezeichnung des Heizkörperthermostates ist:<br />
<pre>set <button> peerChan 0 <rt-remote> single</pre><br />
<br />
===== Channel (Kanal) 07 _SwitchTr =====<br />
Dieser Kanal kann direkt mit einem HomeMatic-Schaltaktor verknüpft (gepeert) werden, um temperaturgesteuerte Schaltvorgänge auszulösen. Eine direkte Nutzung als Feuchtigkeitssensor zur Lüftungssteuerung ist hingegen nicht möglich. Geeignete Aktoren sind alle dauerhaft mit Klein- oder Netzspannung versorgten Aktoren, die zum Betrieb keinen sog. Burst benötigen (Hutschienen-, Unterputz- und Wandmontage). Nicht geeignet sind demnach die batterieversorgten ein- oder vierkanaligen HM-LC-Sw(x)-BA-PCB-Aktoren oder das Empfangsmodul HM-MOD-Re-8, weil der Thermostat den zum "Aufwecken" dieser Geräte nötigen Burst nicht senden kann. <br />
<br />
Das Peering mit einem Schaltaktor läuft z.B. wie folgt ab:<br />
<br />
set <HM-TC-IT-WM-W-EU_SwitchTr> peerChan 0 <HM-LC-SW1-FM> single set<br />
<br />
Dies allein ist nicht ausreichend, da der so gepeerte Aktor sich bei jedem Heizbefehl abwechselnd ein- und ausschaltet, da er die Ausschaltbefehle des Thermostaten (short trigger mit Wert 0) ignoriert. Um das zu korrigieren, wird er so programmiert, dass er, wenn eingeschaltet, auf den Ausschaltbefehl reagiert (und ihn ansonsten ignoriert):<br />
<br />
set <HM-LC-SW1-FM> regSet shCtOn ltLo <HM-TC-IT-WM-W-EU_SwitchTr><br />
<br />
Möchte man mit dem Aktor ein inverses Verhalten erreichen (etwa beim Einsatz als Kühlthermostat oder für stromlos offene Ventilsteuerköpfe von Fußbodenheizungen), so setzt man '''stattdessen'''<br />
<br />
set <HM-LC-SW1-FM> regSet shCtOff ltLo <HM-TC-IT-WM-W-EU_SwitchTr><br />
<br />
== Einstellungen ==<br />
<br />
Die folgenden Einstellungen werden in **Registern** des HM-TC-IT-WM-W-EU vorgenommen. Das heißt, dass diese Einstellungen im Gerät selbst gespeichert werden, nicht in der Konfigurations-Datei von FHEM.<br />
<br />
=== Anzeige ===<br />
<br />
Register im Kanal&nbsp;2 ''(_Climate)'' erlauben es zu konfigurieren, welche Daten der HM-TC-IT-WM-W-EU in seinem LC-Display anzeigt.<br />
<br />
==== showInfo time|date ====<br />
<br />
Wählt aus, ob die ''Uhrzeit'' (<code>time</code>, Standard-Einstellung) oder das ''Datum'' (<code>date</code>) angezeigt wird. Der folgende Befehl erlaubt es das Datum anzeigen zu lassen:<br />
<br />
set <HM-TC-IT-WM-W-EU>_Climate regSet showInfo date<br />
<br />
==== showSetTemp actTemp|setTemp ====<br />
<br />
Wählt aus, ob die ''Ist-Temperatur'' (<code>actTemp</code>, Standard-Einstellung) oder die ''Soll-Temperatur'' (<code>setTemp</code>) im Display angezeigt wird.<br />
<br />
set <HM-TC-IT-WM-W-EU>_Climate regSet showSetTemp setTemp<br />
<br />
==== showHumidity temp|tempHum ====<br />
<br />
Wählt aus, ob dauerhaft die ''Temperatur'' (<code>temp</code>, Standard-Einstellung) oder ''Temperatur und Luftfeuchtigkeit'' im Wechsel (<code>tempHum</code>) im Display angezeigt werden.<br />
<br />
set <HM-TC-IT-WM-W-EU>_Climate regSet showHumidity tempHum<br />
<br />
=== Tastensperre ===<br />
<br />
Um zu verhindern, dass der Modus oder die Temperatur per Tasten bzw. Drehrad am HM-TC-IT-WM-W-EU verändert wird, kann eine Tastensperre gesetzt werden. Dies erfolgt mittels des Befehls:<br />
<br />
set <HM-TC-IT-WM-W-EU> regSet btnLock on<br />
<br />
Rückgängig machen geht per:<br />
<br />
set <HM-TC-IT-WM-W-EU> regSet btnLock off<br />
<br />
Diese Tastensperre kann man aber am Thermostat durch eine Tastenkombination wieder zurücksetzen. Um sie nur per FHEM rücksetzen zu können, muss<br />
<br />
set <HM-TC-IT-WM-W-EU> regSet globalBtnLock on<br />
<br />
abgesetzt werden. Rückgängig wieder per:<br />
<br />
set <HM-TC-IT-WM-W-EU> regSet globalBtnLock off<br />
<br />
=== Temperaturlisten ===<br />
<br />
Die Temperaturlisten des HM-TC-IT-WM-W-EU werden identisch zu anderern HomeMatic Thermostaten verwaltet, siehe [[HomeMatic Type Thermostat#Temperaturlisten|HomeMatic Type Thermostat]]. Beim HM-TC-IT-WM-W-EU ist der Kanal&nbsp;2 ''(_Climate)'' für die Temperaturlisten zuständig.<br />
<br />
=== Luftfeuchtigkeit in SVG Plot ===<br />
<br />
Um die Luftfeuchtigkeit im Plot darzustellen benötigt man im Logfile folgenden Eintrag:<br />
<br />
2017-10-24_22:03:12 WANDTHERMOSTAT_Weather humidity: 61<br />
<br />
Um diesen zu erhalten muss man in der Logfile Konfiguration evtl. das DEF um die Weather Information erweitern:<br />
<br />
Standardbeispiel:<br />
./log/WANDTHERMOSTAT-%Y.log WANDTHERMOSTAT<br />
<br />
Erweiterung:<br />
./log/WANDTHERMOSTAT-%Y.log WANDTHERMOSTAT|WANDTHERMOSTAT_Weather:.*<br />
<br />
<br />
Nach einer Weile, sollte der Eintrag "WANDTHERMOSTAT_Weather humidity:" im SVG Plot zur Auswahl zur Verfügung stehen.<br />
<br />
== FHEM-Log ==<br />
=== Event monitor ===<br />
<br />
Hier habe ich einmal die Wunschtemperatur erhöht, damit auch was passiert:<br />
<br />
2014-04-09 09:35:11 CUL_HM KH_Bad_Therm CMDs_pending<br />
2014-04-09 09:35:11 CUL_HM KH_Bad_Therm_Climate set_desired-temp 18.0<br />
2014-04-09 09:35:11 CUL_HM KH_Bad_Therm CMDs_done<br />
<br />
Bei mir ist es so, das der SwitchTr Kanal nur mit dem gepeerten Device spricht, hier ein HM-LC-SW1-FM:<br />
<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung trig_KH_Bad_Therm_SwitchTr: 200<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung trigLast: KH_Bad_Therm_SwitchTr :200<br />
<br />
Der hat auch prompt reagiert und die Heizung eingeschaltet:<br />
<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung level: 100<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung pct: 100<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung deviceMsg: on (to KH_Bad_Therm)<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung on<br />
2014-04-09 09:35:17 CUL_HM KH_Bad_Heizung timedOn: off<br />
<br />
und noch ein wenig Geplauder der vorhandenen Kanäle:<br />
<br />
2014-04-09 09:36:39 CUL_HM KH_Bad_Therm_Climate measured-temp: 16.0<br />
2014-04-09 09:36:39 CUL_HM KH_Bad_Therm_Climate desired-temp: 18.0<br />
2014-04-09 09:36:39 CUL_HM KH_Bad_Therm_Climate humidity: 50<br />
2014-04-09 09:36:39 CUL_HM KH_Bad_Therm_Climate T: 16.0 desired: 18.0<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm battery: ok<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm batteryLevel: 3<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm measured-temp: 16.0<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm desired-temp: 18.0<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm_Climate measured-temp: 16.0<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm_Climate desired-temp: 18.0<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm_Climate mode: auto<br />
2014-04-09 09:36:49 CUL_HM KH_Bad_Therm_Climate T: 16.0 desired: 18.0<br />
2014-04-09 09:36:59 CUL_HM KH_Bad_Therm_Weather temperature: 16.0<br />
2014-04-09 09:36:59 CUL_HM KH_Bad_Therm_Weather humidity: 50<br />
2014-04-09 09:36:59 CUL_HM KH_Bad_Therm_Weather T: 16.0 H: 50<br />
<br />
<br />
== Firmware Update ==<br />
Updates für den HM-TC-IT-WM-W-EU können von der eQ-3 Webseite heruntergeladen werden. Genauere Informationen gibt es unter [[HomeMatic_Firmware_Update]]. Das Thermostat wird in den Updatemodus gebracht, indem beide äußeren Tasten gedrückt werden, während die Batterien eingesetzt werden. Das Display zeigt "FUP" an.<br />
<br />
== Bekannte Probleme ==<br />
* Bei der Firmware 1.2 und dem Kanal Climate funktioniert die Einstellung der Hysterese über das Register hyst2point nicht. Der Eintrag wird ignoriert. <br />
<br />
Siehe auch Bericht im [https://de.elv.com/forum/hm-tc-it-wm-w-eu-hystereseeinstellung-hat-keine-funktion-10076 Forum von ELV]<br />
<br />
* Der Sensor sollte nur innerhalb seiner Spezifikationen (0° - 50°C) betrieben werden; bei kleineren Temperaturen werden überhöhte Temperaturen gesendet, siehe {{Link2Forum|Topic=80383|LinkText=dieser Forumsbeitrag}}.<br />
<br />
== Links ==<br />
* [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-TC-IT-WM-W-EU_UM_GE_eQ-3_web.pdf Manual]<br />
* [http://www.eq-3.de/Downloads/eq3/pdf_produkte/Funk-Wandthermostat_132030A0_Produktdatenblatt_V1.2.pdf Produktdatenblatt] <br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Feuchtesensoren]]<br />
[[Kategorie:Temperatursensoren]]<br />
[[Kategorie:868MHz]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=25109HM-CFG-LAN LAN Konfigurations-Adapter2018-02-03T23:02:10Z<p>Nobby1805: /* Verbesserung der Antennenleistung */ typo</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-CFG-LAN.jpg<br />
|Bildbeschreibung=HM-CFG-LAN, Draufsicht und Seitenansicht<br />
|HWProtocol=HomeMatic<br />
|HWType=[[Interface]]<br />
|HWCategory=<br />
|HWComm=868,3&nbsp;MHz<br />
|HWChannels=n/a<br />
|HWVoltage=7,5&nbsp;VDC<br />
|HWPowerConsumption=ca.&nbsp;100&nbsp;mA<br />
|HWPoweredBy=Steckernetzteil<br />
|HWSize=100x30mm (ø&nbsp;x&nbsp;H)<br />
|HWDeviceFHEM= {{Link2CmdRef|Anker=HMLAN|Label= 00_HMLAN.pm}}<br />
|ModOwner={{Link2FU|251|Martin / martinp876}}<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
Der [[HM-CFG-LAN LAN Konfigurations-Adapter]] ([http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/hm-cfg-lan.html HM-CFG-LAN]), kurz HMLAN Konfigurator, ist ein [[Interface|Schnittstellengerät]] (IO) ohne wesentliche Intelligenz. Die Aufgabe ist, ein Interface von der Zentrale zu den Geräten bereitzustellen. Ein HMLAN Konfigurator selbst steuert keine Geräte, er überträgt nur Nachrichten in beide Richtungen.<br />
<br />
== Alternativen ==<br />
Alternativen zu einem HMLAN Konfigurator sind [[HM-CFG-USB USB Konfigurations-Adapter]], [[CUN]], [[CUNO]] und [[CUL]].<br />
<br />
;HMUSB<br />
:Ein HMUSB hat nahezu identische Eigenschaften wie ein HMLAN Konfigurator. Der wesentliche Unterschied ist die Anbindung über USB anstatt Ethernet. Es hat sich erwiesen, dass USB eine bessere Latenz hat als LAN - also eine kürzere Verzögerung. Damit hat ein HMUSB leichte Vorteile zu HMLAN Konfigurator, was aber in den bei Weitem meisten Fällen durch die interne Timing Kalkulation abgefangen wird. Zudem können über den HMUSB (ab Version 2) auch Firmware-Updates OTA (over-the-air, also per Funkverbindung) auf entsprechende HM-Geräte (z.B. den HM-CC-RT-DN) durchgeführt werden.<br />
:Dafür bietet der HMLAN Konfigurator mit seinem Netzwerkanschluss Vorteile bei der Platzierung und bei der Ansteuerung (teilweise Timing-Probleme beim Anschluss von USB-Geräten an langsamere Raspberries und beim Durchschleifen von USB an FHEM in einer virtuellen Maschine).<br />
<br />
; CUL/CUN(O)<br />
* Die Devices liefern keine eigenen Zeitstempel, wodurch eine Timingkorrektur durch FHEM nicht möglich ist. Je nach Systemgeschwindigkeit kann dies zu Problemen, Nachrichtenwiederholung und ggf. auch Nachrichtenverlust führen<br />
* Da USB kurze Reaktionszeiten und geringe Timingschwankungen hat, ist der Einsatz von [[CUL]] und [[CUNO]] mit HM möglich. <br>Die Timingschwankungen der Ethernet-schnittstelle hingegen können in FHEM nicht ausgeglichen werden. Daher kann der Einsatz der [[CUNO]] über Ethernet '''nicht empfohlen''' werden.<br />
* Der Übertragungsmodus ''lazyConfig'' wird nicht unterstützt<br />
<br />
== Funktionen ==<br />
=== AES ===<br />
siehe [[AES Encryption]].<br />
<br />
=== Übertragungsmodus ===<br />
Es werden alle HM-Modi unterstützt. Diese sind Always, Burst, Wakeup und Config. Weiter gibt es lazyConfig und conditionalBurst. Siehe [[HomeMatic]] für Details.<br />
<br />
=== KeepAlive ===<br />
Der HMLAN Konfigurator baut eine Verbindung zur Zentrale über das LAN Interface auf. Der HMLAN Konfigurator erwartet alle 30 Sekunden eine keep-alive Nachricht von der Zentrale. Sollte diese ausbleiben, baut der HMLAN Konfigurator die LAN-Verbindung ab. Das führt zu einem Disconnect, der in State gemeldet wird. Die Verbindung wird automatisch wieder aufgebaut. <br />
FHEM sendet den keep-alive alle 25 Sekunden, was einen 5 Sekunden Puffer einräumt. In Internals '''msgKeepAlive''' kann man sehen, wie hoch die maximale Verzögerung der Zentrale beim Senden war und wie viel Puffer (in Sekunden) noch verfügbar war. <br />
Die Wiederholrate von 25 Sekunden des keep-alive kann mit dem Attribut '''wdTimer''' reduziert werden, was den Puffer erhöhen. Es wird jedoch dringend geraten, im Problemfall die Ursache der Verzögerung zu suchen und zu eliminieren.<br />
<br />
=== Nachrichtenübertragung - Performance ===<br />
* Mit Internal ''msgParseDly'' kann man ablesen, welche Verzögerung eine Nachricht vom Empfang im HMLAN Konfigurator bis zur Verarbeitung in der Zentrale hat.<br />
* Der HMLAN Konfigurator hält sich an den Funkstandard, der einem Sender maximal 36 Sekunden Sendezeit je Stunde erlaubt ([[1%25_Regel]]). Wird dieser Wert überschritten, stellt der HMLAN Konfigurator das Senden ein. Empfangen wird weiter. Ist eine Nutzung des Zeitslots zu 90% erreicht, wird im Reading ''cond'' ''Warning-HighLoad'' gemeldet. Bei cond ''ERROR-Overload'' wird das Senden eingestellt.<br />
<br />
=== Loggen/Mitschneiden ===<br />
Es stehen die üblichen Funktionen des Attribute [[verbose]] zu Verfügung. Darüber hinaus gibt es die Attribute ''hmProtocolEvents'' und ''logIDs''. Siehe auch [[Homematic Nachrichten sniffen]].<br />
<br />
== Vorbereitung ==<br />
{{Randnotiz|RNText='''"Usersoftware"/Firmware'''<br />
* V1.512 / 19.12.2013 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_512.zip Download]<br />
* V1.515 / 12.08.2014 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_515.zip Download]<br />
* V1.520 / 10.12.2015 / [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Download]<br />
'''Firmware Update Tool / Firmware / Datum'''<br />
* V1.2 / 0.965 / 11.02.2016 / [http://www.eq-3.de/Downloads/Software/Firmware%20Update%20Tool/HM-Firmware-Update-Tool_V1_2_eQ-3_160211.zip Download]<br />
<br />
}}<br />
[[Datei:HMLAN_CONFIG_IP_AES.png|300px|thumb|right|HomeMatic Lan-Interface Configurator]][[Datei:HMLAN_CONFIG_AES.png|300px|thumb|right|HomeMatic Konfigurator]]<br />
Bevor man den HMLAN mit FHEM nutzen kann, müssen noch Einstellungen vorgenommen werden. Dazu braucht man Software die bei [http://www.eq-3.de/software.html HomeMatic] in der Version 1.512 (Stand 19. Dezember 2013) herunter zu laden ist und nach der Installation mit der Verknüpfung "HomeMatic-Lan-Interface konfigurieren" oder "HomeMatic-Komponenten konfigurieren" gestartet wird und unter Windows läuft. Für andere Betriebssysteme (siehe Anhang im Beitrag {{Link2Forum|Topic=11506|Message=67417|LinkText=Anleitung für OS X}}) braucht man eine Windows-Emulation. Dem HMLAN liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das richtige zu verwenden. Wenn das Konfigurationsprogramm den HMLAN-Konfigurator nicht findet, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe {{Link2Forum|Topic=10933|Message=62960|LinkText=Beitrag im FHEM Forum}} und [[HM-CFG-LAN_LAN_Konfigurations-Adapter#Bekannte_Probleme|bekannte Probleme]].<br />
<br />
=== Firmware ===<br />
Die aktuelle Firmware Version des HMLAN Konfigurators ist 0.965 (Stand Februar 2016). Ein Update ist mit dem ''"Firmware Update Tool"'' möglich, die Firmware ist Bestandteil des Tools.<br />
<br />
Um einen mit FHEM benutzten HM-LAN zu aktualisieren, reicht es,<br />
# im HMLAN-Device mit <code>attr <myHMLAN> dummy 1</code> den Adapter vorübergehend zu deaktivieren,<br />
# mit dem (Windows) Firmware Update Tool die Firmware auf den HM-LAN aufzuspielen<br />
# nach dem Stoppen des Update Tools mit <code>deleteattr <myHMLAN> dummy</code> das Device in FHEM wieder zu aktivieren.<br />
Version 1.2 des Firmware Update Tools läuft auch unter Windows 10.<br />
<br />
=== IP Adresse ===<br />
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Server von diesem eine IP-Adresse. Da FHEM zwecks Kommunikation die IP-Adresse wissen muss, ist es sinnvoll, dem HMLAN Konfigurator eine statische (feste) Adresse zuzuweisen. <br />
* mit der auf der CD mitgelieferten ''"HomeMatic Lan-Interface Configurator"'' Software unter ''"Change IP Settings"'' oder<br />
* im DHCP-Server (sofern dies vom gegebenen DHCP Server als Konfigurationsoption unterstützt wird).<br />
<br />
=== AES Encrypted LAN Communication ===<br />
Wichtig ist, dass vor Verwendung die "AES Encrypted LAN Communication" abgeschaltet wird, da diese von FHEM nicht unterstützt wird. Dies ist unter ''"Change IP Settings"'' der ''"HomeMatic Lan-Interface Configurator"'' Software möglich. AES auf dem LAN ist zu unterscheiden von HMLAN auf der Funkschnittstelle. siehe [[AES Encryption]].<br />
<br />
== Einbindung in FHEM ==<br />
Der HMLAN-Konfigurator muss in FHEM [[Konfiguration|konfiguriert]] werden. Das erfolgt mit diesen Befehlen:<br />
:<code>define HMLAN1 HMLAN <IP Adresse>:1000</code><br />
Der Name (im obigen Beispiel ''HMLAN1'') kann frei vergeben werden. Standard IP-Port des HMLAN-Konfigurators ist 1000.<br />
<br />
HMLAN kennt mehrere Attribute ({{Link2CmdRef|Anker=HMLAN}}). <br />
Äußerst wichtig ('''''Sicherheit!!''''') ist es außerdem, die '''hmId''' zu vergeben, siehe [[HomeMatic_Devices_pairen#hmId]]. <br />
<br />
Ein '''gleichzeitiger''' Zugriff von FHEM und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine einzige Verbindung zulässt. Wollen Sie temporär z.B. mit der Windows-Software von HomeMatic zugreifen, ist FHEM zu deaktivieren.<br />
Sinnvoll ist es, die hmId mit der der PC-Software gleichzusetzen. Dann kann man von beiden Zentralen alternativ zugreifen ohne pairen zu müssen.<br />
<br />
=== Nutzung mehrere IOs ===<br />
==== Empfangen ====<br />
Man kann an einem FHEM mehrere IOs (HMLAN/USB, CUL/CUNO) betreiben. Generell empfangen alle IOs von allen Geräten in ihrem Empfangsbereich - unabhängig von der hmId. <br />
<br />
==== Senden ====<br />
An ein Gerät wird nur über das IO gesendet, das in Internals->IODev angezeigt wird. Nutzt man mehrere IOs sollte man im HM Device das Attribut IODev auf das gewünschte IO setzen. Ansonsten sucht FHEM zufällig ein IO aus.<br />
<br />
==== hmId bei mehreren IOs ====<br />
Man kann allen IOs die gleiche hmId setzen. Das erlaubt die wahlfreie Umschaltung des Sende-IOs für das Device. Sollte man unterschiedliche hmIds wählen, simuliert dies mehrere Zentralen. Das Device, an das man sendet, muss über ein IO angesprochen werden, mit einer hmId, auf die das Device gepairt ist. <br />
<br />
<br />
=== Virtueller Controller VCCU ===<br />
Speziell wenn mehrere IOs verwendet werden sollen, empfiehlt sich die Verwendung einer [[Virtueller Controller VCCU|VCCU]], da eine redundante Nutzung mehrerer Schnittstellen dann wesentlich einfacher einzurichten ist. Das Einrichten einer VCCU lohnt sich aber schon bei der Benutzung nur eines HomeMatic I/O, also wenn man z.B. nur einen HMLAN Konfigurator einsetzen will. Zum Einen ist es wesentlich einfacher ggf. später weitere Schnittstellen dazu zu konfigurieren, zum Anderen adressiert die VCCU die auch bereits bei einer Schnittstelle auftauchende Probleme wie die "<code>Unknown code</code>" Meldungen im Log.<br />
<br />
Die Einrichtung einer VCCU ist nicht sehr aufwändig und wird dringend empfohlen.<br />
<br />
=== Attribute ===<br />
* '''hmId''': Adresse, die das IO auf der Funkstrecke nutzt. Siehe [[HomeMatic_Devices_pairen#hmId]].<br />
* '''hmKey, hmKey2..3''': bis zu 3 AES keys, die auf der Funkstrecke genutzt werden. Siehe [[AES Encryption]]<br />
* '''hmLanQlen''' legt fest, wie viele Nachrichten parallel gesendet werden dürfen, also auf wie viele Antworten die Zentrale parallel warten darf. Ein Wert von 1 ist max defensiv, erzeugt aber eine höhere Verzögerung. Wählt man einen höheren Wert kann es zu Nachrichten-Wiederholungen kommen. <br />
* '''hmProtocolEvents''': alle Nachrichten werden dekodiert ausgegeben. Diese Einstellung benötigt einige Performance insbesondere bei höherem Level. Man sollte es vorsichtig nutzen. <br />
* '''logIDs''': zeichnet Rohmessages auf und bietet die genaueste Methode bei der Fehlersuche. Da Nachrichten undekodiert ausgegeben werden, ist es im Wesentlichen für Spezialisten von Bedeutung. Man gibt eine Komma-getrennte Liste von IDs an, die geloggt werden sollen. Mit '''all''' werden alle IDs aufgezeichnet. '''sys''' zeichnet zusätzlich Systemmessages auf. '''sys,all''' somit alles.<br />
* '''respTime''': Antwortzeit des HMLAN auf ein keep-alive kann hier eingestellt werden. Normalerweise sollte das HMLAN in einer Sekunde der Zentrale antworten. Sollte dies nicht passieren, wird die Message wiederholt. Der Wert sollte nur in Ausnahmefällen verändert werden.<br />
<br />
=== Readings ===<br />
* '''Xmit-Events''': Anzahl der Ereignisse <br />
* '''cond''': aktueller Zustand des IO. <br />
** ok<br />
** Warning-HighLoad: 90% der 1h sendekapazität sind erreicht<br />
** ERROR-Overload: 100% der sendekapazität sind erreicht, '''das IO sendet nicht mehr'''<br />
** timeout<br />
** disconnected: die Verbindung FHEM /IO ist unterbrochen<br />
** Overload-released: das IO ist aus ERROR-Overload zurück im Sendebetrieb<br />
** init: Das IO wurde neu initialisiert. <br />
* '''prot_ERROR-Overload''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_Warning-HighLoad''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_disconnected''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_init''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_ok''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_timeout''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
<br />
=== Internals ===<br />
* '''XmitOpen''': 1 = HMLAN ist sendebereit<br />
* '''assignedIDs''': HMIDs der HM Devices, die über dieses IO bedient werden<br />
* '''assignedIDsCnt''': Anzahl der zugewiesenen HMIds von FHEM<br />
* '''assignedIDsReport''': Anzahl der HMIds, die das HMLAN angibt zu bedienen. Die Zahl sollte identisch sein mit assignedIDsCnt<br />
* '''msgKeepAlive''': dlyMax: maximale Verzögerung, die ein keep-alive hatte. bufferMin: der minimale Zeitpuffer, der übrig blieb, bis das keep-alive zu spät gekommen wäre. Der Puffer sollte 2 oder größer sein, sonst könnte man gelegentlich disconnects bekommen. <br />
* '''msgLoadEst''': Funkbelastung des HMLAN. Der Wert wird über 1 Stunde akkumuliert. Sollten 100% erreicht sein, wird das HMLAN den Sendebetrieb einstellen. Der Wert ist eine Hochrechnung in FHEM. Es ist möglich, dass das HMLAN mehr belastet ist. Die 10 min werte zeigen die Belastung in den letzten 10min Perioden an.<br />
* '''msgParseDly''': Verzögerung der Message Verarbeitung vom Empfang im IO bis zur Verarbeitung in FHEM, gemessen in Millisekunden. Eine Verzögerung kann durch Prozesse an LAN, durch FHEM Prozesse oder sonstige Prozesse/Applikationen der CPU hervorgerufen werden.<br />
<br />
== Pairen von Geräten ==<br />
Jedes HM Gerät muss vor Verwendung mit der HM-Zentrale [[Pairing (HomeMatic)|gepairt]] werden. Hierfür ist Wahl einer hmId nötig (alle Details siehe [[HomeMatic_Devices_pairen#hmId]]).<br />
Alle Geräte haben eine eigene Seriennummer, die nicht änderbar ist. Details zum Pairen auf der Seite [[HomeMatic Devices pairen]].<br />
<br />
== Bekannte Probleme ==<br />
=== Verbindung wird abgelehnt ===<br />
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreiem Betrieb die Verbindung ab:<br />
<pre style="width:400px;"><br />
Opening HMLAN1 device 192.168.168.60:1000<br />
192.168.168.60:1000 connection refused<br />
</pre><br />
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder FHEM) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurators, selbst wenn die installierte Version aktuell ist.<br />
<br />
Wenn das Konfigurationsprogramm Probleme hat, den HM-CFG-LAN LAN Konfigurations-Adapter zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden. Vereinzelt gibt es Hinweise darauf, dass es unter Windows 7 eventuell nicht reicht, die Netzwerkverbindungen im "Netzwerk- und Freigabecenter" zu deaktivieren, sondern eine Deaktivierung der Netzwerkadapter im Gerätemanager erforderlich ist.<br />
<br />
=== Häufiger automatischer Neustart ("Reboot") ===<br />
Der HMLAN Adapter startet ohne erkennbaren äußeren Anlass häufig neu. Das Problem ist auch im Forum unter der Überschrift {{Link2Forum|Topic=20776|LinkText=HMLAN Adapter wechselt permanent zwischen disconnected / connected}} beschrieben. Im FHEM Log erscheinen in diesem Fall folgende Meldungen:<br />
<pre style="width:600px;"><br />
... HMLAN_Parse: myHMLAN new condition timeout (je nach Timing, manchmal)<br />
... HMLanHostname:1000 disconnected, waiting to reappear (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition disconnected<br />
... HMLanHostname:1000 reappeared (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition init<br />
... HMLAN_Parse: myHMLAN new condition ok<br />
</pre><br />
Dieses Problem ist bei ELV [http://www.elv.de/topic/hm-lan-reboots.html bekannt] und soll mit der [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Konfigurationsadapter LAN Usersoftware V1.520 (10.12.2015)], bzw. der darin enthaltenen Firmware Version, behoben sein. Stand 05.08.2016 12:32 Auch mit der aktuellen Firmware (v0.965 - Link siehe oben) und der aktuellen Version von HMLAN (Rev 11645 vom 2016-06-11) tritt der Fehler noch auf.<br />
<br />
=== Kompletter und/oder sporadischer Totalausfall ===<br />
Sollten die oben genannten softwareseitigen Problemlösungen zu keinem erwünschten Ergebnis führen, kann gegebenenfalls ein Austausch der verbauten Elektrolytkondensatoren (Elkos) Abhilfe schaffen.<BR><br />
Zumindest ist dies eine Alternative zur Verschrottung. <BR><br />
Siehe Forumsbeitrag https://forum.fhem.de/index.php/topic,62442.msg538982.html#msg538982<BR><br />
<br />
== Verbesserung der Antennenleistung ==<br />
Die Sende- und Empfangsleistung kann man verbessern. <br />
<br />
Ein relativ einfache Methode ist, die Antenne aus dem Gehäuse herauszuführen. Dies bringt in der Regel bereits einen spürbar verbesserten RSSI und eine verminderte Einstrahlung der Elektronik in die Antenne. Also Kosten fallen der Kaufpreis des 5er TORX an, der üblicherweise nicht vorhanden ist und ca 6 € kostet.<br />
<br />
* HM-CFG-LAN aufschrauben. Innen sieht er so aus:<br />
<br />
[[Datei:HM-CFG-LAN Innen.jpeg]]<br />
<br />
Der schwarze Draht im oberen Bereich unter den Lichtleitern ist die Antenne.<br />
<br />
* Lichtleiter entfernen (Bleibt machmal auch im Deckel hängen)<br />
<br />
[[Datei:HMLAN Antenne.JPG]]<br />
<br />
Rechts ist das Funkmodull zu erkennen, der scharze Draht ist die Antenne. Es ist gut zu sehen, dass die Antenne sehr nahe an der Elektronik ist, die HF-Signale in die Antenne einstrahlt und die Empfangsleistung dadurch vermindert.<br />
<br />
* Das Gehäuse an passender Stelle mit einer kleinen Feile oder einem Drehmel oder ähnlich einkerben.<br />
<br />
[[Datei:HMLAN schlitz.JPG]]<br />
<br />
<br />
<br />
* Die Antenne einfach nach aussen biegen. Der Winkel ist egal, und kann später durch die Positionierung des HM-CFG-LAN optimal eingestellt werden. Der Draht sollte aber gerade sein, also keinen Knick oder keine Krümmung haben.<br />
<br />
[[Datei:Antenne nach aussen.JPG]]<br />
<br />
Man kann die Antenne auch verlängern, sinnvoll ist aber nur eine Verdopplung (von L/4 auf L/2). Geringere Verlängerungen verschlechtern die Leistung.<br />
<br />
<br />
* Gehäuse wieder zusammenbauen und zuschrauben, fertig.<br />
<br />
[[Datei:HMLANAntenneextern.JPG]]<br />
<br />
<br />
Dieser Umbau (ohne Antennenverlängerung) bringt in der Regel einen um 4-5 Zähler verbesserten RSSI und verringert die Einstrahlung der Elektronik. Dies ist nur der einfachste Schritt eines Antennenumbaus. Mit nur wenig mehr Aufwand lassen sich wesentlich bessere Ergebnisse erzielen.<br />
<br />
Links zu weitergehnden Maßnahmen [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|hier]].<br />
<br />
== Wechsel von CUL zu HMLAN ==<br />
{{Randnotiz|RNTyp=y|RNText=Der hier beschriebene Wechsel sollte mittlerweile einfacher über die [[Virtueller Controller VCCU|VCCU]] realisierbar sein, indem erst ein weiteres IO-Device hinzugefügt und anschließend das zu ersetzende entfernt wird.}}<br />
Sollten ein [[CUL]] als IO für HomeMatic-Geräte dienen und ein Wechsel auf den HMLAN Konfigurator geplant sein, kann die folgende Vorgehensweise gewählt werden:<br />
<br />
* deaktivieren Sie das CUL in der ''fhem.cfg''.<br />
* konfigurieren Sie den HMLAN Konfigurator '''von Hand''' <br />
* Ändern Sie das Attribut IODev aller HM-Devices vom Namen der CUL auf den Namen des HMLAN<br />
* sollten Sie das Attribut IODev nicht nutzen (nicht empfohlen), achten Sie darauf, dass im fhem.cfg das IO vor allen HM-devices definiert wird. Eine automatischen Zuweisung des IO zu den Devices ist sonst nicht möglich. <br />
** der HMLAN '''muss''' die gleiche ''hmId'' wie das bisherige CUL erhalten. Ansonsten müssen alle Geräte neu gepairt / angelernt werden.<br />
** AES muss im HMLAN abgeschaltet werden.<br />
* verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.<br />
* geben Sie in der FHEM-Befehlszeile ''shutdown restart'' gefolgt von &lt;Enter&gt; (nicht "save") ein (evtl. reicht auch ein ''rereadcfg'').<br />
* kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von FHEM die Kommunikation.<br />
<br />
Bitte beachten: Falls dem CUL keine explizite hmId per Attribut zugewiesen wurde, wird diese ID aus "F1&lt;FHT-ID&gt;" zusammengebaut. Die hmId muss auf dem HMLAN explizit gesetzt werden.<br />
<br />
== Links ==<br />
<!-- Produkt derzeit nicht im Sortiment - * [http://www.elv.de/homematic-lan-konfigurations-adapter.html Produktseite] bei ELV --><br />
* [http://www.eq-3.de/service/downloads.html Software] für den Konfigurationsadapter von der eQ-3 Site<br />
* [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|HM LAN Konfig-Adapter Antenne verbessern]]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Interfaces]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Simplechart&diff=23191FTUI Widget Simplechart2017-11-05T15:53:01Z<p>Nobby1805: /* Attribute */ wie der Text schon sagt: fallende Reihenfolge ;-)</p>
<hr />
<div>Das [[{{PAGENAME}}|Simplechart Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem sich einfache X/Y-Diagramme für einzelne Werte erstellen lassen. Die Werte werden direkt aus der Log-Datei gelesen.<br />
<br />
<gallery><br />
File:FTUI_widget_simplechart_2.png<br />
File:FTUI_widget_simplechart_mini.png<br />
File:FTUI_widget_simplechart_detailed.png<br />
</gallery><br />
<br />
==Attribute==<br />
{| class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-device'''||Name des FHEM-Device, das die Aktualisierung des Charts triggert||||data-device="WohnzimmerHeizung"<br />
|-<br />
|'''data-logdevice'''||Name des Log-Device, das dargestellt werden soll||||data-logdevice="FileLog_WohnzimmerHeizung"<br />
|-<br />
|'''data-logfile'''|| Name des Log-Files, aus dem die Daten entnommen werden sollen||'-' = aktuelle Datei||data-logfine="WohnzimmerHeizung-2015.log"<br />
|-<br />
|'''data-get'''||Reading, das das Update des Diagramms triggert||'STATE'||<br />
|-<br />
|'''data-columnspec'''||Ermittelt den Wert aus dem Log-File, der angezeigt werden soll||||data-columnspec="4:meas.*"<br />
|-<br />
|'''data-minvalue'''||Minimaler Wert, der auf der Y-Achse angezeigt werden soll. Oder ein Array zur dynamischen Ermittlung, hier werden in fallender Reihenfolge mögliche Minimalwerte aufgeführt ||'10'||[20,10,5,0,-4,-8,-10]<br />
|-<br />
|'''data-maxvalue'''||Maximaler Wert, der auf der Y-Achse angezeigt werden soll. Oder ein Array zur dynamischen Ermittlung, hier werden in fallender Reihenfolge mögliche Maximalwerte aufgeführt||'30'||[38,34,30,20,10,4]<br />
|-<br />
|'''data-yticks'''||Abstand zwischen den horizontalen Hilfslinien (bezogen auf die Y-Achse)||'5'||<br />
|-<br />
|'''data-xticks'''||Abstand zwischen den vertikalen Hilfslinien (bezogen auf die X-Achse)||'360' (Minuten)||<br />
|-<br />
|'''data-yunit'''||Einheit, die an der Y-Achse angezeigt werden soll||||<br />
|-<br />
|'''data-daysago'''||Anzahl der vergangenen Tage, die angezeigt werden sollen||'0'||<br />
|-<br />
|'''data-caption'''||Name, der als Text über dem Diagramm angezeigt werden soll||||<br />
|-<br />
|'''data-width'''||Breite des Diagramms (in % oder px)||||<br />
|-<br />
|'''data-height'''||Höhe des Diagramms (in % oder px)||||<br />
|}<br />
<br />
==CSS-Klassen==<br />
{|class="wikitable"<br />
!Klasse<br />
!Beschreibung<br />
{{FTUI Klasse|fullsize}}{{FTUI Klasse|noticks}}<br />
|}<br />
<br />
==Hinweise==<br />
Damit der Refresh des Simplechart funktioniert, muss auch ein Device angegeben werden, der das Refresh triggert. Das Diagramm wird immer dann aktualisiert, wenn sich der Inhalt von '''data-get''' ändert, sowie nach jedem shortpoll-Interval (15 Minuten).<br />
<br />
<syntaxhighlight lang="html"><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
...><br />
</div><br />
</syntaxhighlight><br />
<br />
==Beispiele==<br />
===Zwei Diagramme nebeneinander===<br />
<br />
[[File:FTUI_widget_simplechart_2.png]]<br />
<br />
<syntaxhighlight lang="html"><br />
<li data-row="4" data-col="4" data-sizex="8" data-sizey="3"><br />
<header>CHARTS</header><br />
<div data-type="simplechart"<br />
data-device="WohnzimmerHeizung"<br />
data-logdevice="FileLog_WohnzimmerHeizung"<br />
data-columnspec="4:meas.*:1:int"<br />
data-minvalue="10"<br />
data-maxvalue="30"<br />
data-width="250px"<br />
data-height="120px"<br />
data-yticks="4"<br />
data-daysago="0"<br />
data-caption="Wohnzimmer"<br />
class="inline"><br />
</div><br />
<div data-type="simplechart"<br />
data-device="KuecheHeizung"<br />
data-logdevice="FileLog_KuecheHeizung"<br />
data-columnspec="4:meas.*:1:int"<br />
data-minvalue="12"<br />
data-maxvalue="28"<br />
data-width="250px"<br />
data-height="120px"<br />
data-yticks="6"<br />
data-daysago="2"<br />
data-caption="Küche"<br />
class="inline"><br />
</div><br />
</li><br />
</syntaxhighlight><br />
<br />
===Mini-Diagramm und Details als Popup ===<br />
Das Mini-Diagramm dient zur Übersicht in der Hauptoberfläche. Nach Klick auf das Mini-Diagramm öffnet sich ein detaillierteres Diagramm mit Skalen innerhalb eines [[FTUi Widget Popup]]<br />
<br />
[[File:FTUI_widget_simplechart_mini.png|200px]]<br />
[[File:FTUI_widget_simplechart_detailed.png|200px]]<br />
<syntaxhighlight lang="html"><br />
<div data-type="popup" data-width="450px" class=""><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
data-columnspec="4:temperature"<br />
data-minvalue="17"<br />
data-maxvalue="23"<br />
data-height="60"<br />
data-width="90"<br />
data-yticks="2"<br />
class=""><br />
</div><br />
<div class="dialog"><br />
<header>TEMPERATURE</header><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
data-columnspec="4:temperature"<br />
data-minvalue="[21,20,16]"<br />
data-maxvalue="[35,30,25]"<br />
data-yticks="2"<br />
data-caption="$min°C - $max°C"<br />
data-height="250"><br />
</div><br />
</div><br />
</div><br />
</syntaxhighlight><br />
<br />
===Diagramm in voller Größe===<br />
Durch die Verwendung der Klasse <code>fullsize</code> wird das Diagramm so groß dargestellt, wie das Gridster-Element Platz bietet.<br />
<br />
<syntaxhighlight lang="html"><br />
<li data-row="4" data-col="4" data-sizex="8" data-sizey="3"><br />
<header>CHART</header><br />
<div data-type="simplechart"<br />
data-device="WohnzimmerHeizung2"<br />
data-logdevice="FileLog_WohnzimmerHeizung2"<br />
data-logfile="WohnzimmerHeizung2.log"<br />
data-columnspec="4:temp:1:int"<br />
data-minvalue="10"<br />
data-maxvalue="30"<br />
data-yticks="4"<br />
data-daysago="0"<br />
data-caption="Wohnzimmer"<br />
class="fullsize"><br />
</div><br />
</li><br />
</syntaxhighlight><br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Simplechart&diff=23190FTUI Widget Simplechart2017-11-05T15:50:26Z<p>Nobby1805: /* Attribute */ Beschreibung und Beispiel für Min- und Max-Array</p>
<hr />
<div>Das [[{{PAGENAME}}|Simplechart Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem sich einfache X/Y-Diagramme für einzelne Werte erstellen lassen. Die Werte werden direkt aus der Log-Datei gelesen.<br />
<br />
<gallery><br />
File:FTUI_widget_simplechart_2.png<br />
File:FTUI_widget_simplechart_mini.png<br />
File:FTUI_widget_simplechart_detailed.png<br />
</gallery><br />
<br />
==Attribute==<br />
{| class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-device'''||Name des FHEM-Device, das die Aktualisierung des Charts triggert||||data-device="WohnzimmerHeizung"<br />
|-<br />
|'''data-logdevice'''||Name des Log-Device, das dargestellt werden soll||||data-logdevice="FileLog_WohnzimmerHeizung"<br />
|-<br />
|'''data-logfile'''|| Name des Log-Files, aus dem die Daten entnommen werden sollen||'-' = aktuelle Datei||data-logfine="WohnzimmerHeizung-2015.log"<br />
|-<br />
|'''data-get'''||Reading, das das Update des Diagramms triggert||'STATE'||<br />
|-<br />
|'''data-columnspec'''||Ermittelt den Wert aus dem Log-File, der angezeigt werden soll||||data-columnspec="4:meas.*"<br />
|-<br />
|'''data-minvalue'''||Minimaler Wert, der auf der Y-Achse angezeigt werden soll. Oder ein Array zur dynamischen Ermittlung, hier werden in fallender Reihenfolge mögliche Minimalwerte aufgeführt ||'10'||[20,10,5,0,-4,-8,-10]<br />
|-<br />
|'''data-maxvalue'''||Maximaler Wert, der auf der Y-Achse angezeigt werden soll. Oder ein Array zur dynamischen Ermittlung, hier werden in fallender Reihenfolge mögliche Maximalwerte aufgeführt||'30'||[4,10,20,30,34,38]<br />
|-<br />
|'''data-yticks'''||Abstand zwischen den horizontalen Hilfslinien (bezogen auf die Y-Achse)||'5'||<br />
|-<br />
|'''data-xticks'''||Abstand zwischen den vertikalen Hilfslinien (bezogen auf die X-Achse)||'360' (Minuten)||<br />
|-<br />
|'''data-yunit'''||Einheit, die an der Y-Achse angezeigt werden soll||||<br />
|-<br />
|'''data-daysago'''||Anzahl der vergangenen Tage, die angezeigt werden sollen||'0'||<br />
|-<br />
|'''data-caption'''||Name, der als Text über dem Diagramm angezeigt werden soll||||<br />
|-<br />
|'''data-width'''||Breite des Diagramms (in % oder px)||||<br />
|-<br />
|'''data-height'''||Höhe des Diagramms (in % oder px)||||<br />
|}<br />
<br />
==CSS-Klassen==<br />
{|class="wikitable"<br />
!Klasse<br />
!Beschreibung<br />
{{FTUI Klasse|fullsize}}{{FTUI Klasse|noticks}}<br />
|}<br />
<br />
==Hinweise==<br />
Damit der Refresh des Simplechart funktioniert, muss auch ein Device angegeben werden, der das Refresh triggert. Das Diagramm wird immer dann aktualisiert, wenn sich der Inhalt von '''data-get''' ändert, sowie nach jedem shortpoll-Interval (15 Minuten).<br />
<br />
<syntaxhighlight lang="html"><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
...><br />
</div><br />
</syntaxhighlight><br />
<br />
==Beispiele==<br />
===Zwei Diagramme nebeneinander===<br />
<br />
[[File:FTUI_widget_simplechart_2.png]]<br />
<br />
<syntaxhighlight lang="html"><br />
<li data-row="4" data-col="4" data-sizex="8" data-sizey="3"><br />
<header>CHARTS</header><br />
<div data-type="simplechart"<br />
data-device="WohnzimmerHeizung"<br />
data-logdevice="FileLog_WohnzimmerHeizung"<br />
data-columnspec="4:meas.*:1:int"<br />
data-minvalue="10"<br />
data-maxvalue="30"<br />
data-width="250px"<br />
data-height="120px"<br />
data-yticks="4"<br />
data-daysago="0"<br />
data-caption="Wohnzimmer"<br />
class="inline"><br />
</div><br />
<div data-type="simplechart"<br />
data-device="KuecheHeizung"<br />
data-logdevice="FileLog_KuecheHeizung"<br />
data-columnspec="4:meas.*:1:int"<br />
data-minvalue="12"<br />
data-maxvalue="28"<br />
data-width="250px"<br />
data-height="120px"<br />
data-yticks="6"<br />
data-daysago="2"<br />
data-caption="Küche"<br />
class="inline"><br />
</div><br />
</li><br />
</syntaxhighlight><br />
<br />
===Mini-Diagramm und Details als Popup ===<br />
Das Mini-Diagramm dient zur Übersicht in der Hauptoberfläche. Nach Klick auf das Mini-Diagramm öffnet sich ein detaillierteres Diagramm mit Skalen innerhalb eines [[FTUi Widget Popup]]<br />
<br />
[[File:FTUI_widget_simplechart_mini.png|200px]]<br />
[[File:FTUI_widget_simplechart_detailed.png|200px]]<br />
<syntaxhighlight lang="html"><br />
<div data-type="popup" data-width="450px" class=""><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
data-columnspec="4:temperature"<br />
data-minvalue="17"<br />
data-maxvalue="23"<br />
data-height="60"<br />
data-width="90"<br />
data-yticks="2"<br />
class=""><br />
</div><br />
<div class="dialog"><br />
<header>TEMPERATURE</header><br />
<div data-type="simplechart"<br />
data-device="THSensorWZ"<br />
data-logdevice="FileLog_THSensorWZ"<br />
data-columnspec="4:temperature"<br />
data-minvalue="[21,20,16]"<br />
data-maxvalue="[35,30,25]"<br />
data-yticks="2"<br />
data-caption="$min°C - $max°C"<br />
data-height="250"><br />
</div><br />
</div><br />
</div><br />
</syntaxhighlight><br />
<br />
===Diagramm in voller Größe===<br />
Durch die Verwendung der Klasse <code>fullsize</code> wird das Diagramm so groß dargestellt, wie das Gridster-Element Platz bietet.<br />
<br />
<syntaxhighlight lang="html"><br />
<li data-row="4" data-col="4" data-sizex="8" data-sizey="3"><br />
<header>CHART</header><br />
<div data-type="simplechart"<br />
data-device="WohnzimmerHeizung2"<br />
data-logdevice="FileLog_WohnzimmerHeizung2"<br />
data-logfile="WohnzimmerHeizung2.log"<br />
data-columnspec="4:temp:1:int"<br />
data-minvalue="10"<br />
data-maxvalue="30"<br />
data-yticks="4"<br />
data-daysago="0"<br />
data-caption="Wohnzimmer"<br />
class="fullsize"><br />
</div><br />
</li><br />
</syntaxhighlight><br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Plots_erzeugen&diff=22016Plots erzeugen2017-08-01T09:00:42Z<p>Nobby1805: Änderung 22015 von Maddinthebrain (Diskussion) rückgängig gemacht. https://www.korrekturen.de/beliebte_fehler/stati.shtml</p>
<hr />
<div>'''Plots erzeugen'''<br />
<br />
== .gplot-Editor ==<br />
<br />
FHEM verfügt über einen ".gplot-Editor" (auch als Ploteditor bezeichnet), um die .gplot-Datei zur Erstellung eines Plots menügeführt zu generieren. Ein manuelles Anlegen der .gplot-Datei ist für Spezialisten und normalerweise nicht notwendig. Der .gplot-Editor sollte für Standardfälle grundsätzlich verwendet werden. <br />
<br />
Details zum .gplot-Editor können im Ankündigungshinweis im {{Link2Forum|Topic=11275|Message=75594|LinkText=FHEM-Forum}} nachgelesen werden.<br />
<br />
Zur Einarbeitung in die Funktionsweise des .gplot-Editor existieren ausführliche, bebilderte Beispiele:<br />
<br />
*Grundlegendes Beispiel zur Erzeugung von Plots:<br />
:* [[Buderus_Web_Gateway#Mit_FileLog|Schrittweises Beispiel für Temperaturkurven]]<br />
<br />
*Spezielle Erläuterungen/Hinweise zur Erzeugung von Plots mit Status: <br />
:* [[EnOcean-STM-250-Fenster-Türkontakt#Türstatus in einem Plot darstellen|Schrittweises Beispiel bei Kontakten]], <br />
:* [[EnOcean-D-452-FU-EBIM-Aktor-2fach#Aktorstatus_in_einem_Plot_darstellen|Schrittweises Beispiel zum Aktorstatus]]<br />
:* {{Link2Forum|Topic=12945|Message=78887|LinkText=FHEM-Forum}}<br />
:* {{Link2Forum|Topic=43563|Message=354955|LinkText=Plots mit mehr als 2 Status}}<br />
<br />
Verhinderung von Perl-Warnungen bei LogFiles mit unterschiedlicher Spaltenanzahl in Log-Zeilen: {{Link2Forum|Topic=27835}}<br />
<br />
<big>'''Achtung'''</big>:<br />
{{Randnotiz|RNTyp=Info|RNText=Das in diesem Abschnitt "Achtung" beschriebene Problem ist seit dem FHEM-Update vom 06.04.2015 nicht mehr relevant. Der Befehl <code>copyGplotFile</code> ist seitdem nicht mehr notwendig, da FHEM ihn automatisch ausführt (Siehe {{Link2Forum|Topic=35764|Message=282728|LinkText=FHEM-Forum}}). }}<br />
Verwenden Sie diesen Editor nicht, wenn das FHEM-Device bereits angelegt ist und Sie für dieses Device ein bestehendes, allgemeines gplot-File verwenden, das auch für andere Devices benutzt wird. Beim Abspeichern wird ein Filter im gplot-File gesetzt, das das gplot-File nur für genau dieses Device verwendbar macht. <br />
<br />
Beispiel:<br />
<br />
aus <br />
<br />
#FileLog 4:::<br />
<br />
wird<br />
<br />
#FileLog 4:DS2423.energy_a\x3a::<br />
<br />
in dem entsprechenden gplot-File.<br />
<br />
Die anderen Devices, die evtl. dieses gplot-File verwenden, haben danach keine funktionierende Plot-Anzeige mehr. Bevor also etwas geändert wird, sollte mit <br />
<br />
set weblink_irgendwas copyGplotFile<br />
<br />
ein Duplikat angelegt werden, das ausschließlich für diesen Plot verwendet wird. Der Befehl kann unterhalb des ersten Kasten per Dropdown ausgewählt werden.<br />
<br />
== Individuell / Manuell ==<br />
<br />
'''Vorbemerkungen:'''<br />
<br />
* FHEM bediente sich früher für die Erstellung der Plots des Programms ''Gnuplot'' [http://www.gnuplot.info/]. Hierbei reichen die "einfacheren" Funktionalitäten dieses Programms aus (''Gnuplot'' kann noch viel mehr). <br />
* aktuelle FHEM-Versionen haben die Plot-Funktionen (angelehnt an die Plot-File-Syntax von Gnuplot) integriert.<br />
* die Beispieldateien für die in FHEM integrierten Plots finden Sie in Ihrem FHEM-Programmordner unter ''www/gplot''.<br />
* Angaben wie <SIZE>, <OUT>, <L1>, <IN> usw. im Plot-File sind Platzhalter bzw. Feldbezeichner für Fhem. Diese sind case-sensitive (Groß-/Kleinschreibung beachten).<br />
* Weitere Möglichkeiten Plots anzupassen und zu ergänzen bietet das FHEM-Hilfsmodul [[LogProxy|logProxy]].<br />
<br />
<br />
<br />
Ein Beispiel (''temp4hum4.gplot'') aus diesem Verzeichnis: <br />
<syntaxhighlight lang="gnuplot" style="width:500px;"><br />
# Attribute 'small' is useful for gnuplot/-scroll only,<br />
# if plotsize is less than 800,400<br />
#set terminal png transparent small size <SIZE> crop<br />
<br />
set terminal png transparent size <SIZE> crop<br />
<br />
set output '<OUT>.png'<br />
set xdata time<br />
set timefmt "%Y-%m-%d_%H:%M:%S"<br />
set xlabel " "<br />
set ytics nomirror<br />
set y2tics<br />
#set ytics<br />
set title '<L1>'<br />
set grid xtics y2tics<br />
<br />
set y2label "Temperature in C"<br />
set ylabel "Humidity (%)"<br />
<br />
#FileLog 4:temperature:10:<br />
#FileLog 4:humidity:50:<br />
<br />
plot \<br />
"< egrep 'temperature' <IN>"\<br />
using 1:4 axes x1y2 title 'Measured temperature' with lines,\<br />
"< egrep 'humidity' <IN>"\<br />
using 1:4 axes x1y1 title 'Humidity (%)' with lines\<br />
</syntaxhighlight> <br />
<br />
Die Zeilen, die mit ''set'' beginnen, beeinflussen wesentlich das Erscheinungsbild und Aussehen Ihrer Plots (Achsenbeschriftungen, Skalen usw.). Dabei sollten Sie die Zeilen, die eine Angabe zwischen "<" und ">" enthalten, zunächst unverändert lassen. Weitere (ausführliche) Hinweise (zu Gnuplot!) finden Sie in einer [http://www.home.uni-osnabrueck.de/elsner/Skripte/gnuplot.pdf PDF-Datei]. Eingeschränktere, aber für die meisten Belange von FHEM ausreichende Infos finden Sie auf [http://www.aurbacher.net/gnuplot/gnuplot.html dieser Web-Seite].<br />
<br />
=== Benutzung der Variablen === <br />
{| class="wikitable" <br />
! Variable <br />
! Nutzung in gplot-File<br />
! Füllung mit inhalt in fhem.cfg<br />
|- <br />
| <TL> <br />
| set title '<TL>' <br />
| attr weblink title "Dies füllt den Platzhalter <TL>" <br />
|-<br />
| <L1> <br />
| set xlabel '<L1>' <br />
| attr weblink label "Dies füllt das Label <L1>" <br />
|-<br />
| <L2> <br />
| set title '<L2>' <br />
| attr weblink label "Dies füllt das Label <L1>"::"Dies füllt das Label <L2>" <br />
|}<br />
<br />
=== Welche Daten werden dargestellt ===<br />
<br />
Die Zeilen<br />
<br />
#FileLog 5::0:<br />
#FileLog 14::0:<br />
<br />
in einer gplot-Datei tragen zwar zu Beginn das Kommentarzeichen "#", jedoch handelt es sich durchaus nicht um solche. Vielmehr trifft man mit den Werten hinter ''FileLog'' Vorgaben, welche Werte wie von FHEM an ''gnuplot'' zwecks grafischer Darstellung übergeben werden.<br />
<br />
Im o.a. Beispiel werden das 5. und das 14. Wertfeld (voneinander getrennt durch ein Leerzeichen (Blank)) an gnuplot weiter gegeben.<br />
<br />
Eine dazu passende Log-Dateizeile könnte beispielsweise so aussehen<br />
<br />
2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200<br />
----1. Feld-------- --2. Feld-- --3.---- -4.- -5. -6. 7. 8. -9. 10. 11 12 --13.- --14.---<br />
<br />
^ ^<br />
werden ausgewertet --| --|<br />
<br />
Diese Parameter können auch als Attribut übergeben werden:<br />
<br />
attr weblink plotfunction "FileLog 5::0:"<br />
<br />
Anhand der Anmerkungen wird hoffentlich die Wirkungsweise deutlich. Zu den restlichen - optionalen - Parametern hinter ''FileLog'' wird zunächst auf die [http://fhem.de/commandref.html#FileLogget commandref] verwiesen.<br />
<br />
=== Datum und Zeit ===<br />
<br />
'''Anmerkungen / Hinweise:'''<br />
<br />
FHEM erwartet das Datum '''und''' die Uhrzeit der Log-Dateieinträge '''zwingend''' an <ins>erster Stelle</ins> der Datenzeile und zwar im Format<br />
<br />
<code>JJJJ-MM-TT_SS:mm:ss</code><br />
<br />
wobei<br />
<br />
* JJJJ die 4-stellige Jahreszahl<br />
* MM der 2-stellige Monat (ggfls. mit Vornull)<br />
* TT der 2-stellige Tag (ggfls. mit Vornull)<br />
* SS die 2-stellige Stunde (ggfls. mit Vornull)<br />
* mm die 2-stellige Minute (ggfls. mit Vornull)<br />
* ss die 2-stellige Sekunde (ggfls. mit Vornull)<br />
<br />
bedeutet. Bitte beachten Sie auch die Stelle der Zeichen "-", "_" und ":". Stehen diese nicht an den angegebenen Stellen, wird die entsprechende Zeile beim Erzeugen des Plots nicht beachtet. Ggfls. wird gar kein Plot angezeigt.<br />
<br />
Eine Änderung/Anpassung der *.gplot-Datei in der Zeile<br />
<br />
set timefmt "..."<br />
<br />
hat auf dieses Verhalten von FHEM '''keine''' Auswirkungen, sondern nur auf die Darstellung von Datum und Zeit durch ''Gnuplot'' .<br />
<br />
Dazu ein Beispiel:<br />
<br />
Mit<br />
<br />
2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 <br />
<br />
kann FHEM etwas anfangen. Mit <br />
<br />
20131114173200 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 <br />
<br />
oder <br />
<br />
14.11.2013 17:32 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 <br />
<br />
dagegen nicht.<br />
<br />
Im ersten Fehler-Beispiel fehlen die notwendigen Trennzeichen, im zweiten Fehler-Beispiel ist die Reihenfolge im Datum verkehrt, außerdem werden die falschen Trenner verwendet. Zudem fehlen die Sekunden.<br />
<br />
=== Plot der letzten 24 Stunden statt des aktuellen Tages ===<br />
<br />
Hierzu kann man in der ''Fhem.cfg'' für die Einträge <br />
<br />
define WEB FHEMWEB 8083 global<br />
<br />
das Attribut<br />
<br />
attr WEB endPlotNow 1<br />
<br />
setzen. Gleiches geht auch für ''WEBphone'' und ''WEBtablet''. Da muss es dann lauten<br />
<br />
attr WEBphone endPlotNow 1<br />
<br />
bzw.<br />
<br />
attr WEBtablet endPlotNow 1<br />
<br />
Das Attribut gilt dann aber für '''alle''' Plots der jeweiligen Ansichten. Wenn man wieder zurück zu den Plots ab jeweils 00:00 Uhr des aktuellen Tages möchte, löscht man dieses Attribut wieder bzw. setzt es auf den Wert "0".<br />
<br />
=== Legende links platzieren ===<br />
<br />
Gerade im Verbund mit dem Attribut ''endPlotNow'' macht das seit dem 11.01.2015 neue Attribut ''captionLeft'' Sinn, da dann die Legende nicht mehr rechts oben, sondern links oben im Plot erscheint. Dadurch wird die Sichtbarkeit der aktuellen Werte verbessert.<br />
<br />
== Links / Beispiele ==<br />
Hier finden sich weitere Beispiele zur Plot-Erstellung:<br />
* [[Creating Plots]]<br />
* [[Buderus Web Gateway#Beispiel für Plot]]<br />
* [[Wetter und Wettervorhersagen#Erstellen passender gplot-Dateien]]<br />
* [http://lowrank.net/gnuplot/intro/style-e.html Erklärung für die Linetypes]<br />
<br />
[[Kategorie:FAQ]]<br />
[[Kategorie:HOWTOS]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Level&diff=20735FTUI Widget Level2017-03-14T22:26:15Z<p>Nobby1805: /* Attribute */ data-timer-... Attribute</p>
<hr />
<div>Das [[{{PAGENAME}}|Level Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem eine horizontale oder vertikale Balkenanzeige erstellt werden kann.<br />
<br />
<gallery><br />
File:Ftui_widget_level_2-fach.png<br />
</gallery><br />
<br />
==Attribute==<br />
{| class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-device'''||FHEM-Device, dessen Reading Reading angezeigt werden soll||||<br />
|-<br />
|'''data-get'''||Name des Readings, das den Wert enthält||'STATE'||<br />
|-<br />
|'''data-min'''||Minimaler Wert, der angezeigt werden soll||0||<br />
|-<br />
|'''data-max'''||Maximaler Wert, der angezeigt werden soll, oder Name des Readings, das den Maximalwert enthält||100||<br />
|-<br />
|'''data-on'''||Wert, bei dem der Balken maximalen Ausschlag zeigt||'on'<br />
|-<br />
|'''data-off'''||Wert, bei dem der Balken minimalen Ausschlag zeigt||'off'||<br />
|-<br />
|'''data-part'''||Wählt bei Werten, die durch Leerzeichen getrennt sind, den Teil aus, der angezeigt werden soll. Der Teil kann auch mit RegEx ermittelt werden.||'-1': alles Anzeigen||<br />
|-<br />
|'''data-colors'''||Array von Farbwerten, die die Anzeige entsprechend der Grenzwerte von '''data-limits''' einfärben||||data-colors='["#dd3366","#ffcc00","#55aa44"]'<br />
|-<br />
|'''data-limits'''||Array von Zahlen oder RegEx zur Einfärbung der Anzeige||||data-limits='["20","70","95"]'<br />
|-<br />
|'''data-timer-state'''||Statusvariable mit der eine timergesteuerte Bewegung des Balkens ausgelöst werden kann||||<br />
|-<br />
|'''data-timer-state-on'''||Zustand der Statusvariablen der die Bewegung startet||'on'||<br />
|-<br />
||'''data-timer-state-off'''||Zustand der Statusvariablen der die Bewegung stoppt||'off'||!on (alles was nicht on ist stoppt den Timer)<br />
|-<br />
||'''data-timer-step'''||Erhöhung des Wertes pro Timer-Intervall||1||<br />
|-<br />
||'''data-timer-interval'''||Timer-Intervall in Millisekunden||1000||<br />
|}<br />
<br />
==CSS-Klassen==<br />
{|class="wikitable"<br />
!Klasse<br />
!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|large}}{{FTUI Klasse|horizontal}}<br />
|}<br />
<br />
==Beispiele==<br />
===Zwei Level-Anzeigen mit Label===<br />
Beide Level-Anzeigen besitzen ein Label auf gleicher Höhe, das den aktuellen Wert als Zahl mit Einheit anzeigt. Die Farbe der Level-Anzeigen wird beim Erreichen bestimmter Werte verändert.<br />
<br />
[[File:Ftui_widget_level_2-fach.png]]<br />
<br />
<source lang="html"><br />
<div><br />
<div data-type="level" data-device='Tablet' data-get='powerLevel'<br />
data-limits='["[12]*[0-9]","[3456][0-9]","([789][0-9]|100)"]'<br />
data-colors='["#dd3366","#ffcc00","#55aa44"]'<br />
class="horizontal left" ><br />
</div><br />
<div data-type="label" data-device='Tablet'<br />
data-get='powerLevel'<br />
data-unit="%" class="top-space left"></div><br />
</div><br />
<div><br />
<div data-type="level" data-device='dummy1'<br />
data-limits='["20","70","95"]'<br />
data-colors='["#dd3366","#ffcc00","#55aa44"]'<br />
class="horizontal left" ><br />
</div><br />
<div data-type="label" data-device='dummy1' data-unit="%" <br />
class="top-space left"></div><br />
</div><br />
</source><br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Slider&diff=20734FTUI Widget Slider2017-03-14T22:19:28Z<p>Nobby1805: /* Steuer-Attribute */ data-timer-... Attribute</p>
<hr />
<div>Das [[{{PAGENAME}}|Slider Widget]] ist ein Widget für [[FHEM Tablet UI]] in Form eines Schiebereglers, mit dem ein beliebiger Wert zwischen zwei festgelegten Grenzwerten auswählen lässt. Es eignet sich zum Beispiel zum Einstellen der Lautstärke eines Audio-Gerätes oder der Helligkeit einer Lampe.<br />
<br />
<gallery><br />
File:Slider_tabletUI.png<br />
File:Slider_tabletUI2.jpg<br />
</gallery><br />
<br />
==Steuer-Attribute==<br />
{| class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-device'''||FHEM-Device, dessen Reading gesetzt werden soll (<command> '''<device>''' <reading> <value>)||||<br />
|-<br />
|'''data-get'''||Reading, dessen Inhalt den aktuellen Wert wiedergibt||'STATE'||<br />
|-<br />
|'''data-set'''||Reading, das gesetzt werden soll (<command> <device> '''<reading>''' <value>)||||<br />
|-<br />
|'''data-on'''||Wert, bei dem der Slider zum maximalen Ausschlag springt||'on'||<br />
|-<br />
|'''data-off'''||Wert, bei dem der Slider minimalen Ausschlag springt||'off'||<br />
|-<br />
|'''data-part'''||Wählt bei Werten, die durch Leerzeichen getrennt sind, den Teil aus, der angezeigt werden soll. Der Teil kann auch mit RegEx ermittelt werden.||'-1': alles Anzeigen||<br />
|-<br />
|'''data-set-value'''||Format, wie der eingestellte Wert an FHEM übergeben werden soll||'$v': Nur den Wert||<br />
|-<br />
|'''data-cmd'''||Befehl, der gesendet werden soll ('''<command>''' <device> <reading> <value>) (z.B. setstate, set, setreading, trigger)||set||<br />
|-<br />
|'''data-min'''||Minimaler Wert, der eingestellt werden kann||0||<br />
|-<br />
|'''data-max'''||Maximaler Wert, der eingestellt werden kann||100||<br />
|-<br />
|'''data-step'''||Schrittweite beim Schieben des Sliders||1||<br />
|-<br />
|'''data-width'''||Breite des Sliders, wenn er horizontal ausgerichtet ist||normal '120px', mini '60px'||<br />
|-<br />
|'''data-height'''||Höhe des Sliders, wenn er vertikal ausgerichtet ist||normal '120px', mini '60px'||<br />
|-<br />
|'''data-color'''||Farbe des Sliders für den Bereich 0...<eingestellter Wert>||'#aa6900'||<br />
|-<br />
|'''data-background-color'''||Farbe des Sliders für den Bereich <eingestellter Wert>...<Maximaler Wert>||'#404040'||<br />
|-<br />
|'''data-handle-diameter'''||Größe des Griffs||'20'||<br />
|-<br />
|'''data-touch-diameter'''||Größe des Griffs, wenn er bewegt wird||wie '''data-handle-diameter'''||<br />
|-<br />
|'''data-timer-state'''||Statusvariable mit der eine timergesteuerte Bewegung des Sliders ausgelöst werden kann||||<br />
|-<br />
|'''data-timer-state-on'''||Zustand der Statusvariablen der die Bewegung startet||'on'||<br />
|-<br />
||'''data-timer-state-off'''||Zustand der Statusvariablen der die Bewegung stoppt||'off'||!on (alles was nicht on ist stoppt den Timer)<br />
|-<br />
||'''data-timer-step'''||Erhöhung des Wertes pro Timer-Intervall||1||<br />
|-<br />
||'''data-timer-interval'''||Timer-Intervall in Millisekunden||1000||<br />
|}<br />
<br />
==CSS-Klassen==<br />
{|class="wikitable"<br />
!Klasse<br />
!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|large}}{{FTUI Klasse|horizontal}}{{FTUI Klasse|negated}}{{FTUI Klasse|value}}{{FTUI Klasse|FS20}}{{FTUI Klasse|tab}}<br />
|}<br />
<br />
Der Slider unterstützt ''tab to target'', also das Springen zum gewünschten Wert durch einfaches Antippen, nur, wenn die CSS-Klasse '''tab''' verwendet wird.<br />
<br />
==Beispiele==<br />
===Vertikaler Schieberegler===<br />
Einfacher Schieberegler mit dem Einstellbereich 10...90<br />
<br />
[[File:Slider_tabletUI.png]]<br />
<source lang="html"><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</source><br />
<br />
===Horizontaler Schieberegler===<br />
Einfacher Schieberegler mit dem Einstellbereich 0...100<br />
<br />
[[File:Slider_tabletUI2.jpg]]<br />
<source lang="html"><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</source><br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=20417FHEM Tablet UI2017-03-01T10:19:03Z<p>Nobby1805: /* Styling */ typo</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für FHEM<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[FHEM Tablet UI]] (FTUI) ist ein leichtgewichtiges aber funktionsreiches Frontend-Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Es basiert auf HTML/CSS/JavaScript und stellt somit keine zusätzlichen Anforderungen an den FHEM-Server.<br />
<br />
Mit Hilfe zahlreicher Widgets, die sehr leicht mit HTML Code konfiguriert werden können, ist es möglich, innerhalb kurzer Zeit ein den eigenen Wünschen entsprechendes User-Interface aufzubauen.<br />
<br />
Für den Betrieb ist nur eine FHEM-Installation mit [[HTTPSRV|HTTPSRV-Modul]] sowie ein gängiger Webbrowser notwendig.<br />
<br />
Mit wenigen Anpassungen ist es auch möglich das UI auf anderen Webservern (Apache, u.a.) zu betreiben. Somit können FHEM und FHEM Tablet UI auch auf getrennten Systemen ausgeführt werden.<br />
<br />
[[File:tablet_ui.png|thumb|500px|center|Beispiel für ein mit [[FHEM Tablet UI]] erstelltes User-Interface]]<br />
<br />
{{Todo|Spezial ergänzen, Templates erklären, Navigationsmethoden ausformulieren, aufräumen + ausbauen}} <br />
<br />
== Installation ==<br />
Die Installation von FHEM Tablet UI erzeugt keinen großen Aufwand und besteht im Großen und Ganzen aus drei Schritten:<br />
*Dateien aus dem GitHub-Repository herunterladen<br />
*FHEM konfigurieren ([[HTTPSRV]]-Device erstellen, [[FHEMWEB]]-Attribut longpoll einstellen)<br />
*Eine Beispieldatei anlegen<br />
<br />
<br />
{{Hinweis|Diese Anleitung geht davon aus, dass FHEM unter Debian nach der Anleitung [https://debian.fhem.de Stable build using apt] installiert wurde.<br />
Ist dies nicht der Fall, muss der Pfad '''/opt/fhem''' dementsprechend angepasst werden.}}<br />
<br />
<br />
'''1.''' Zuerst müssen alle Dateien von FHEM Tablet UI in das FHEM-Verzeichnis '''/opt/fhem/www''' kopiert werden. Das geht mit folgendem '''update'''-Befehl über die FHEM-Befehlszeile.<br />
:<code>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
<br />
:[[Datei:FTUI_Installation_01.png|thumb|none|Schritt 1: Dateien kopieren]]<br />
<br />
<br />
'''2.''' Anschließend ist ein neues [[HTTPSRV]]-Device in FHEM anzulegen, welches auf den Ordner mit den gerade heruntergeladenen Dateien verweist.<br />
:<code>define TABLETUI HTTPSRV ftui/ ./www/tablet/ Tablet-UI</code><br />
<br />
:[[Datei:FTUI_Installation_02.png|thumb|none|Schritt 2: HTTPSRV-Device anlegen]]<br />
<br />
<br />
'''3.''' Damit FHEM Tablet UI mit FHEM kommunizieren kann, ist noch die '''longpoll'''-Einstellung im [[FHEMWEB]] Device festzulegen.<br />
<br />
:<code>attr WEB longpoll websocket</code><br />
:bzw. bei Problemen mit ''websocket''<br />
:<code>attr WEB longpoll 1</code><br />
<br />
:[[Datei:FTUI_Installation_03.png|thumb|none|Schritt 3: longpoll einstellen]]<br />
<br />
<br />
'''4.''' Weil FTUI noch nichts anzuzeigen hat, wird die Datei '''/opt/fhem/www/tablet/index-example.html''' nach '''/opt/fhem/www/tablet/index.html''' kopiert.<br />
:<code>sudo cp -a /opt/fhem/www/tablet/index-example.html /opt/fhem/www/tablet/index.html</code><br />
<br />
:[[Datei:FTUI_Installation_04.png|thumb|none|Schritt 4: index.html erstellen]]<br />
<br />
<br />
'''5.''' Abschließend muss FHEM noch '''neu gestartet''' werden (''shutdown restart'') da das Attribut '''longpoll''' geändert wurde.<br />
<br />
<br />
Somit ist FHEM Tablet UI bereit zur Verwendung und kann durch Aufruf der URL '''<nowiki>http://<fhem-server>:8083/fhem/ftui</nowiki>''' oder den Link im FHEM-Menü geöffnet werden<br />
<br />
== Update ==<br />
Ein Update von FTUI kann ebenfalls über die FHEM-Kommandozeile erfolgen.<br />
<br />
'''1.''' Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von:<br />
:<code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
<br />
'''2.''' Update der geänderten Dateien durch Eingabe von:<br />
:<code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
<br />
Eine weitere Option ist das Hinzufügen des FTUI-Git-Repositories zum allgemeinem Update-Vorgang von FHEM. Dabei wird dann bei einem FHEM-Update auch gleich FHEM Tablet UI aktualisiert, bzw. die Änderungen angezeigt.<br />
:<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Konfiguration ==<br />
Das Tablet UI lässt sich über die META-Parameter konfigurieren. Diese Parameter sind in jeder '''.html''' Datei (z.B. index.html) im Abschnitt '''<head>''' einzutragen. Ausgenommen davon sind Dateien, die als Template, Pagebutton-Zielseiten oder ähnliches eingebunden werden.<br />
<br />
Die Parameter sind immer nach diesem Schema aufgebaut:<br />
<meta name="[Parameter-Name]" content="[Parameter-Wert]"><br />
<br />
===Verbindung zu FHEM===<br />
{| class="wikitable"<br />
|-<br />
!Parameter-Name!!Standard-Wert!!Mögliche Werte!!Beschreibung<br />
|-<br />
|web_device||WEB||String||FHEM-Device, welches für das Polling verwendet wird<br />
|-<br />
|longpoll||1||0, 1||<br />
'''0''': Longpoll deaktiviert; alle 30s ein Shortpoll (Neuladen der gesamten Statusänderungen)<br />
<br />
'''1''': Longpoll aktiv; geänderte Stati werden sofort aktualisiert, zusätzlich werden alle 15min die gesamten Statusänderungen geladen.<br />
|-<br />
|longpoll_type||websocket||websocket, ajax, 0||<br />
'''websocket''': Für die Aktualisierung der Daten wird das Websocket-Protokoll verwendet. Werden vom Browser keine Websockets unterstützt, gibt es einen automatischen Fallback auf Ajax.<br />
<br />
'''ajax''': Ajax wird für die Aktualisierung verwendet.<br />
<br />
'''0''': Longpoll deaktiviert, Shortpoll wird verwendet.<br />
|-<br />
|longpoll_filter||.*||RegEx||Event-Filter. Kann verwendet werden, wenn z.B. Devices, die in FTUI angezeigt werden, in einem eigenen FHEM-Room sind.<br />
|-<br />
|longpoll_maxage||240||Integer||Kommen in diesem Zeitraum (Sekunden) keine Longpoll-Events bei FTUI an, wird die Verbindung als "disconnected" angesehen und ein neuer Verbindungsversuch wird gestartet.<br />
|-<br />
|shortpoll_interval||900||Integer||Zeitraum in Sekunden, nach dem ein vollständiger Refresh stattfindet<br />
|-<br />
|shortpoll_only_interval||30||Integer||Zeitraum in Sekunden, nach dem ein vollständiger Refresh stattfindet, sollte Longpoll deaktiviert sein<br />
|-<br />
|fhemweb_url||/fhem/||Integer||URL zu FHEM. Wird benötigt wenn FTUI auf einem anderen als dem FHEM Server läuft oder nicht im Standard-Pfad installiert ist.<br />
|}<br />
<br />
===Funktionalität===<br />
{| class="wikitable"<br />
|-<br />
!Parameter-Name!!Standard-Wert!!Mögliche Werte!!Beschreibung<br />
|-<br />
|debug||0||0 - 5||Log-Level<br />
|-<br />
|toast||5||Integer||Anzahl an gleichzeitig angezeigten Toast-Nachrichten. Um keine anzuzeigen, ist der Wert auf 0 zu setzen.<br />
|-<br />
|lang||de||de||Sprache der Oberfläche (für z.B. Datums-/Zeitfunktionen)<br />
|-<br />
|username||||String||Benutzername für eine Basic-Authentifierung *<br />
|-<br />
|password||||String||Passwort für eine Basic-Authentifizierung *<br />
|}<br />
'''*''' Derzeit wird die Basic-Authentifizierung in Kombination mit WebSockets nicht unterstützt. Die Verwendung von '''longpoll=1''' (ajax) ist daher notwendig.<br />
<br />
===Layout===<br />
{| class="wikitable"<br />
|-<br />
!Parameter-Name!!Standard-Wert!!Mögliche Werte!!Beschreibung<br />
|-<br />
|gridster_disable||0||0, 1||Verschieben der Gridster-Elemente deaktivieren.<br />
|-<br />
| widget_margin||||Integer||Abstand der Gridsterelemente zueinander<br />
|-<br />
| widget_base_width||||Integer||Fixe Breite des Basis-Rasters (data-sizex=1)<br />
|-<br />
| widget_base_heigth||||Integer||Fixe Höhe des Basis-Rasters (data-sizey=1).<br />
|-<br />
| gridster_cols||||Integer||Fixe Anzahl an Spalten (Spaltengröße wird automatisch an Bildschirmauflösung angepasst)<br />
|-<br />
| gridster_rows||||Integer||Fixe Anzahl der Reihen (Reihengröße wird automatisch an Bildschirmauflösung angepasst)<br />
|}<br />
<br />
==Navigationsmethoden==<br />
{{Todo|Dieser Abschnitt dient derzeit lediglich als Sammlung von Stichpunkten und muss vollständig überarbeitet werden.}} <br />
<br />
'''Unterschied zwischen Pagetab und Pagebutton:<br />
<br />
'''Pagetab:''' Ganze Seite austauschen -> Menü muss auf jede Seite<br />
[[FTUI_Widget_Pagetab]]<br />
<br />
'''Pagebutton:''' Teil der Seite austauschen -> Menü nur in erster Seite<br />
[[FTUI_Widget_Pagebutton]]<br />
<br />
==Styling==<br />
=== Farben ===<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form, als RGB-Wert oder mit dem Farbnamen anzugeben. Zum Beispiel: <br />
<br />
*HEX: #ADD8E6<br />
*RBG: rgb(173, 216, 230)<br />
*Namen: lightblue<br />
<br />
Knallige Farben wie '''<span style="color: #ff0000;">#ff0000</span>''' für Rot oder '''<span style="color: #00ff00;">#00ff00</span>''' für Grün sollten vermieden werden.<br />
Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Empfohlene Farben sind z.B.:<br />
<br />
*Orange: <span style="color: #aa6900;">#aa6900</span><br />
*Rot: <span style="color: #ad3333;">#ad3333</span><br />
*Grün: <span style="color: #32a054;">#32a054</span><br />
*Blau: <span style="color: #6699FF;">#6699FF</span><br />
*Grau: <span style="color: #8C8C8C;">#8C8C8C</span><br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist zum Beispiel der Color-Picker auf dieser Seite: http://www.colorpicker.com. Für die Suche nach Farben, die einen guten Kontrast bilden, diese Webseite: http://vanisoft.pl/~lopuszanski/public/colors/<br />
<br />
Im Ordner ''css'' der FTUI Installation finden sich einige vorbereitete Farbschemas. Diese können mit einem zusätzlichen Eintrag im <nowiki><head></nowiki>-Bereich der FTUI-Seite(n) aktiviert werden.<br />
<br />
Hier am Beispiel eines blauen Farbschemas:<br />
<source lang="html"><br />
<html><br />
<head><br />
[...]<br />
<link rel="stylesheet" href="/fhem/tablet/css/fhem-blue-ui.css" /><br />
[...]<br />
</head><br />
</source><br />
<br />
Diese Schema-Dateien ändern alle Widgets. Einzelne Widgets können durch Hinzufügen der jeweiligen [[#CSS-Klassen|CSS-Klasse]] geändert werden.<br />
<br />
===CSS-Styles===<br />
Das Layout und das Aussehen des UI kann durch diverse vorgegebene CSS-Klassen beeinflusst werden. Die verfügbaren Klassen sind im Abschnitt [[#CSS-Klassen|CSS-Klassen]] aufgeführt.<br />
<br />
Soll das Aussehen des UI durch eigene CSS-Klassen oder durch Überschreiben der vorhandenen verändert werden, kann eine eigene CSS-Datei erstellt werden, die dann bei einem eventuellen Update von FTUI nicht überschrieben wird. Diese Datei muss den Dateinamen '''fhem-tablet-ui-user.css''' haben und im Ordner '''/fhem/tablet/css''' abgelegt werden. Sie wird dann beim Aufruf von FTUI automatisch mitgeladen.<br />
<br />
=== CSS-Klassen ===<br />
Nicht alle Widgets unterstützen alle hier angegebenen Klassen. Welche genau unterstützt werden, kann auf der jeweiligen Widget-Seite nachgelesen werden.<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|sheet/row/cell-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|sheet}}{{FTUI Klasse|row}}{{FTUI Klasse|cell}}{{FTUI Klasse|cell-1-x}}{{FTUI Klasse|cell-x}}{{FTUI Klasse|left-align}}{{FTUI Klasse|right-align}}{{FTUI Klasse|bottom-align}}{{FTUI Klasse|top-align}}{{FTUI Klasse|center-align}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|row/col-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|col}}{{FTUI Klasse|col-1-x}}{{FTUI Klasse|col-x}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|hbox/vbox-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|vbox}}{{FTUI Klasse|hbox}}{{FTUI Klasse|card}}{{FTUI Klasse|phone-width}}{{FTUI Klasse|full-height}}{{FTUI Klasse|full-width}}{{FTUI Klasse|grow-0}}{{FTUI Klasse|grow-1}}{{FTUI Klasse|grow-2}}{{FTUI Klasse|grow-x}}{{FTUI Klasse|items-top}}{{FTUI Klasse|items-center}}{{FTUI Klasse|items-bottom}}{{FTUI Klasse|items-space-between}}{{FTUI Klasse|items-space-around}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Generelle Klassen für die Positionierung<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|inline}}{{FTUI Klasse|newline}}{{FTUI Klasse|top-space}}{{FTUI Klasse|top-space-2x}}{{FTUI Klasse|top-space-3x}}{{FTUI Klasse|left-space}}{{FTUI Klasse|left-space-2x}}{{FTUI Klasse|left-space-3x}}{{FTUI Klasse|right-space}}{{FTUI Klasse|right-space-2x}}{{FTUI Klasse|right-space-3x}}{{FTUI Klasse|top-narrow}}{{FTUI Klasse|top-narrow-2x}}{{FTUI Klasse|top-narrow-10}}{{FTUI Klasse|left-narrow}}{{FTUI Klasse|left-narrow-2x}}{{FTUI Klasse|left-narrow-3x}}{{FTUI Klasse|right-narrow}}{{FTUI Klasse|right-narrow-2x}}{{FTUI Klasse|right-narrow-3x}}{{FTUI Klasse|centered}}{{FTUI Klasse|wider}}{{FTUI Klasse|narrow}}{{FTUI Klasse|fullsize}}{{FTUI Klasse|compressed}}{{FTUI Klasse|height-narrow}}{{FTUI Klasse|w1x}}{{FTUI Klasse|w2x}}{{FTUI Klasse|w3x}}{{FTUI Klasse|maxw40}}{{FTUI Klasse|doublebox-v}}{{FTUI Klasse|doublebox-h}}{{FTUI Klasse|triplebox-v}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Vordergrundfarben<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|red}}{{FTUI Klasse|green}}{{FTUI Klasse|blue}}{{FTUI Klasse|lightblue}}{{FTUI Klasse|orange}}{{FTUI Klasse|gray}}{{FTUI Klasse|lightgray}}{{FTUI Klasse|white}}{{FTUI Klasse|black}}{{FTUI Klasse|mint}}{{FTUI Klasse|yellow}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Hintergrundfarben<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|bg-red}}{{FTUI Klasse|bg-green}}{{FTUI Klasse|bg-blue}}{{FTUI Klasse|bg-lightblue}}{{FTUI Klasse|bg-orange}}{{FTUI Klasse|bg-gray}}{{FTUI Klasse|bg-lightgray}}{{FTUI Klasse|bg-white}}{{FTUI Klasse|bg-black}}{{FTUI Klasse|bg-mint}}{{FTUI Klasse|bg-yellow}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Rahmen<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|verticalLine}}{{FTUI Klasse|border-black}}{{FTUI Klasse|border-white}}{{FTUI Klasse|border-orange}}{{FTUI Klasse|border-red}}{{FTUI Klasse|border-green}}{{FTUI Klasse|border-mint}}{{FTUI Klasse|border-lightblue}}{{FTUI Klasse|border-blue}}{{FTUI Klasse|border-gray}}{{FTUI Klasse|border-yellow}}{{FTUI Klasse|border-lightgray}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Größen<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|great}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Schriftstil<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|thin}}{{FTUI Klasse|bold}}{{FTUI Klasse|darker}}{{FTUI Klasse|truncate}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Sonstiges<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|blank}}{{FTUI Klasse|transparent}}{{FTUI Klasse|half-transparent}}{{FTUI Klasse|blurry}}{{FTUI Klasse|shake}}{{FTUI Klasse|fail-shake}}{{FTUI Klasse|marquee}}{{FTUI Klasse|icon round}}{{FTUI Klasse|icon square}}{{FTUI Klasse|readonly}}{{FTUI Klasse|blink}}{{FTUI Klasse|rotate-90}}{{FTUI Klasse|horizontal}}{{FTUI Klasse|circleborder}}{{FTUI Klasse|autohide}}{{FTUI Klasse|notransmit}}{{FTUI Klasse|tab}}{{FTUI Klasse|FS20}}{{FTUI Klasse|value}}{{FTUI Klasse|novalue}}{{FTUI Klasse|timestamp}}{{FTUI Klasse|percent}}{{FTUI Klasse|nocache}}{{FTUI Klasse|fade}}{{FTUI Klasse|rotate}}{{FTUI Klasse|nolabels}}{{FTUI Klasse|default}}{{FTUI Klasse|prefetch}}{{FTUI Klasse|circulate}}{{FTUI Klasse|valueonly}}{{FTUI Klasse|positiononly}}{{FTUI Klasse|lineIndicator}}{{FTUI Klasse|barIndicator}}{{FTUI Klasse|roundIndicator}}{{FTUI Klasse|dim-tick}}{{FTUI Klasse|dim-front}}{{FTUI Klasse|dim-back}}{{FTUI Klasse|hue-tick}}{{FTUI Klasse|hue-front}}{{FTUI Klasse|hue-back}}{{FTUI Klasse|warn}}{{FTUI Klasse|activate}}{{FTUI Klasse|labelright}}{{FTUI Klasse|interlock}}{{FTUI Klasse|keepopen}}{{FTUI Klasse|noshade}}<br />
|}<br />
<br />
=== Icons ===<br />
FTUI bringt einige Icons-"Schriftarten" mit, die für die Darstellung genützt werden können. Diese werden automatisch beim Start des UI eingebunden, sobald ein entsprechendes Icon-Präfix im Code der Seite vorkommt.<br />
<br />
Verfügbare Icon-Schriftarten sind:<br />
* Eingebaute Icons ''ftui-windows'' und ''ftui-door''. Präfix '''ftui-'''. Beispiel: <code>data-icon="ftui-door"</code><br />
* [http://fontawesome.io/icons/ Font-Awesome]: Mehr als 500 Icons zur Auswahl. Präfix '''fa-'''. Beispiel: <code>data-icon="fa-volume-up"</code><br />
* [https://material.io/icons/ Material Icons]: Mehr als 900 Icons zur Auswahl. Präfix '''mi-'''. Beispiel: <code>data-icon="mi-local_gas_station"</code><br />
* FHEM und OpenAutomation Icons: Präfix '''fs-''' und '''oa-'''. Beispiel: <code>data-icon="oa-secur_locked"</code><br />
* [https://erikflowers.github.io/weather-icons/ Weather-Icons]: Präfix '''wi-'''. Beispiel: <code>data-icon="wi-day-rain-mix"</code><br />
<br />
== Widgets ==<br />
===Allgemeine Attribute===<br />
Jedes Widget kann über verschiedene Attribute konfiguriert werden. Folgende Attribute gelten für alle Widgets:<br />
<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Daten Empfangen<br />
|-<br />
!align="right" |data-get<br />
|Reading Name<br />
|-<br />
!align="right" |data-get-on<br />
|Wert für den Status on<br />
|-<br />
!align="right" |data-get-off<br />
|Wert für den Status off<br />
|-<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Daten Senden<br />
|-<br />
!align="right" |data-set<br />
|Reading Name<br />
|-<br />
!align="right" |data-set-on<br />
|Wert für den Status on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert für den Status off<br />
|-<br />
|}<br />
<br />
Widget-spezifische Attribute können auf der jeweiligen Widget-Seite nachgelesen werden.<br />
<br />
=== Integrierte Widgets ===<br />
Folgende Widgets sind direkt in FHEM Tablet UI integriert und können "out of the box" verwendet werden.<br />
<br />
* [[FTUI Widget Agenda|agenda]]: Zeigt Kalendereinträge in einer Listenform an<br />
* [[FTUI Widget Button|button]]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen FHEM-Befehl absetzen kann.<br />
* [[FTUI Widget Calview|calview]]: Zeigt Einträge aus einem [[CALVIEW]]-Device an<br />
* [[FTUI Widget Chart|chart]]: Diagramm mit ähnlichen Möglichkeiten wie die FHEM-Plots<br />
* [[FTUI Widget Checkbox|checkbox]]: Umschalter zwischen zwei definierten Zuständen<br />
* [[FTUI Widget Circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [[FTUI Widget Classchanger|classchanger]]: Ändert seine CSS-Klassen je nach Status eines Devices<br />
* [[FTUI Widget Clock|clock]]: Stellt eine einfach Uhr zur Verfügung.<br />
* [[FTUI Widget Colorwheel|colorwheel]]: Farbpalette zur Auswahl von Farben<br />
* [[FTUI Widget Datetimepicker|datetimepicker]]: Erstellt eine Auswahl für Datum/Uhrzeit<br />
* [[FTUI Widget Departure|departure]]: Abfahrtszeiten öffentlicher Verkehrsmittel<br />
* [[FTUI Widget Dimmer|dimmer]]: Ein-/Aus-Button mit integriertem Schieberegler für z.B. einen Dim-Wert<br />
* [[FTUI Widget Eventmonitor|eventmonitor]]:<br />
* [[FTUI Widget Filelog|filelog]]:<br />
* [[FTUI Widget Fullcalview|fullcalview]]:<br />
* [[FTUI Widget Gds|gds]]:<br />
* [[FTUI Widget Highchart|highchart]]:<br />
* [[FTUI Widget Highchart3d|highchart3d]]:<br />
* [[FTUI Widget Homestatus|homestatus]]: Auswahl für vier oder fünf definierte Stati eines Objects (z.B.: FHEM Residents)<br />
* [[FTUI Widget Html|html]]:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[FTUI Widget Image|image]]: Zeigt ein Bild, dessen URL fest vorgegeben oder aus einem Device-Reading gelesen werden kann.<br />
* [[FTUI Widget Input|input]]: Erstellen eines Texteingabefeldes<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [[FTUI Widget Klimatrend|klimatrend]]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [[FTUI Widget Knob|knob]]: Erstellt einen Statusbalken auf einer Kreisbahn<br />
* [[FTUI Widget Label|label]]: Reading als Text anzeigen<br />
* [[FTUI Widget Level|level]]: Vertikale oder horizontale Leiste zur Anzeige von Werten zwischen einem Minimal- und einem Maximalwert<br />
* [[FTUI Widget Link|link]]: Erstellt einen Link oder Button zum Aufrufen von URLs oder Senden von Befehlen an FHEM<br />
* [[FTUI Widget Loading|loading]]:<br />
* [[FTUI Widget Medialist|medialist]]:<br />
* [[FTUI Widget Meteogram|meteogram]]:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: Zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[FTUI Widget Notify|notify]]: Blendet ein Hinweisfenster im Browser ein<br />
* [[FTUI Widget Pagebutton|pagebutton]]: Button, mit dem auf andere Seiten gesprungen werden kann. Eignet sich gut für eine Navigation<br />
* [[FTUI Widget Pagetab|pagetab]]: Tauscht den Inhalt einer Seite durch den einer anderen. Eignet sich gut für ein Navigationsmenü.<br />
* [[FTUI Widget Playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[FTUI Widget Popup|popup]]: Öffnet ein Popup nach einem Klick auf ein Widget oder HTML-Element <br />
* [[FTUI Widget Progress|progress]]: Zeigt einen Prozentwert in Form einer runden Fortschrittsleiste<br />
* [[FTUI_Widget_Push|push]]: Button, mir dem ein Befehl an FHEM gesendet werden kann.<br />
* [[FTUI Widget Range|range]]: Erstellt vertikale Balken, die einen Wertebereich in unterschiedlichen Farben darstellen<br />
* [[FTUI Widget Readingsgroup|readingsgroup]]: Zeigt eine Readingsgroup an, wie sie in FHEM definiert wurde<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[FTUI Widget Rotor|rotor]]: Animiertes Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[FTUI_Widget_Select|select]]: Combobox, die eine Liste an Werten zur Auswahl anzeigt<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: Zum Anzeigen und Einstellen einer Uhrzeit.<br />
* [[FTUI Widget Simplechart|simplechart]]: Einfaches XY-Diagramm zur Anzeige eines Wertes, der direkt aus einem FHEM-Logfile gelesen wird<br />
* [[FTUI Widget Slideout|slideout]]:<br />
* [[FTUI Widget Slider|slider]]: Vertikaler Schieberegler um einen Wert einzustellen<br />
* [[FTUI Widget Spinner|spinner]]: Element um Werte durch Drücken auf Plus- und Minus- oder Höher-/Tiefer-Icons zu ändern<br />
* [[FTUI Widget Svgplot|svgplot]]:<br />
* [[FTUI Widget Swiper|swiper]]: Bietet die Möglichkeit, durch Wischen, zwischen verschiedenen Widgets zu wechseln<br />
* [[FTUI Widget Switch|switch]]: Button um zwischen zwei Zuständen zu schalten (z.B. on / off)<br />
* [[FTUI Widget Symbol|symbol]]: Status eines Devices als Symbol darstellen (z.B. Fenster offen)<br />
* [[FTUI Widget Thermostat|thermostat]]: Anzeige für Heizungsthermostate, mit der die gewünschte Temperatur eingestellt werden kann<br />
* [[FTUI Widget Tts|tts]]:<br />
* [[FTUI Widget Uwz|uwz]]:<br />
* [[FTUI Widget Volume|volume]]: Einstellscheibe zur Änderung eines einzelnen Wertes<br />
* [[FTUI Widget Wakeup|wakeup]]:<br />
* [https://github.com/svenson08/ftui-weekdaytimer-widget wdtimer]: Visualisierung des [[WeekdayTimer]] Modul<br />
* [[FTUI Widget Weather|weather]]: Wettersymbol anzeigen<br />
* [[FTUI Widget Weekprofile|weekprofile]]:<br />
* [[FTUI Widget Wind_direction|Wind_direction]]: Anzeige der Windrichtung auf einer Windrose<br />
<br />
===3rd Party Widgets===<br />
Für diese Widgets kann nicht sichergestellt werden, dass sie mit der jeweils aktuellen Version von FTUI funktionieren.<br />
* [[FTUI Widget Clicksound|clicksound]]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[FTUI Widget Screensaver|screensaver]]:<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="ftui.setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [http://knowthelist.github.io/fhem/tablet/demo_widgets.html Live-Demos]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Label&diff=20323FTUI Widget Label2017-02-27T08:54:05Z<p>Nobby1805: /* Hinweise */ Positionierung data-unit nach 2.6.2</p>
<hr />
<div>Das [[{{PAGENAME}}|Label Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem ein Reading eines FHEM-Devices in Textform angezeigt werden kann.<br />
<br />
<gallery><br />
File:FTUI_Widget_Label_01.png<br />
File:FTUI_Widget_Label_02.png<br />
File:FTUI_Widget_Label_03.png<br />
File:FTUI_Widget_Label_04.png<br />
File:FTUI_Widget_Label_05.png<br />
</gallery><br />
<br />
==Attribute==<br />
{|class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-get'''||Name des Readings, dessen Wert angezeigt werden soll||||data-get="measured-temp"<br />
|-<br />
|'''data-part'''||[[Regulärer Ausdruck|RegEx]] oder Nummer des Wortes, nach welcher der angezeigte Text gefiltert werden soll||||<br />
|-<br />
|'''data-fix'''||Angegebene Anzahl an Dezimalstellen einhalten||(-1 -> nicht numerisch)||<br />
|-<br />
|'''data-color'''||Fester Wert oder Reading eines Devices für die Label-Farbe||||data-color="red"<br />
|-<br />
|'''data-colors'''||Ein Array von Farben. Welche Farbe für das Label verwendet wird, wird durch das ''data-limits''-Attribut bestimmt||||data-colors='["red","yellow","green"]'<br />
|-<br />
|'''data-classes'''||Ein Array von CSS-Klassen. Welche Klasse verwendet wird, hängt vom zutreffenden Wert im ''data-limits''-Attribut ab||||data-classes='["bg-red","bg-yellow","bg-green"]'<br />
|-<br />
|'''data-limits'''||Ein Array numerischer oder RegEx Werte für den Vergleich mit dem aktuellen Wert||||data-limits='[1,15,30]'<br />
|-<br />
|'''data-limits-get'''||Name des Readings, von dem die Werte für den Vergleich mit dem data-limits-Array geholt werden||data-get||data-limit-get="Dummy01:Limits"<br />
|-<br />
|'''data-limits-part'''||Filtern nach Wert, Position eines Wertes in einer Leerzeichen-getrennte Liste oder RegEx|'-1' -> alle||<br />
|-<br />
|'''data-unit'''||Einheit nach Zahl hinzufügen||||data-unit="%B0C%0A"<br />
|-<br />
|'''data-substitution'''||Verschiedene Funktionen, um den empfangenen Wert durch etwas anderes zu ersetzen||||siehe [[#Hinweise]]<br />
|-<br />
|'''data-pre-text'''||Text, der vor dem empfangenen Wert stehen soll||||data-pre-text="Es ist "<br />
|-<br />
|'''data-post-text'''||Text, der nach dem empfangenen Wert sehen soll||||data-post-text=" Grad warm"<br />
|-<br />
|'''data-hide'''||Name des Readings, nach dessen Wert das Widget angezeigt werden soll oder nicht||STATE||data-hide="power-on"<br />
|-<br />
|'''data-hide-on'''||Wert, bei dem das Widget versteckt wird||true,1,on||data-hide-on="on"<br />
|-<br />
|'''data-hide-off'''||Wert, bei dem das Widget angezeigt wird||!on||data-hide-off="!on"<br />
|-<br />
|'''data-hideparents'''||jQuery-Selector, um auch die Eltern-Elemente zu verstecken||||data-hideparents="#Name"<br />
|-<br />
|'''data-refresh'''||Anzahl Sekunden, nach denen das Widget aktualisiert werden soll||0 -> kein Auto-Refresh||data-refresh="10"<br />
|}<br />
<br />
==CSS Klassen==<br />
{|class="wikitable"<br />
!Klasse!!Beschreibung<br />
{{FTUI Klasse|small}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|thin}}{{FTUI Klasse|red}}{{FTUI Klasse|green}}{{FTUI Klasse|blue}}{{FTUI Klasse|orange}}{{FTUI Klasse|darker}}{{FTUI Klasse|timestamp}}{{FTUI Klasse|w1x}}{{FTUI Klasse|w2x}}{{FTUI Klasse|w3x}}{{FTUI Klasse|circleborder}}{{FTUI Klasse|squareborder}}{{FTUI Klasse|bg-limit}}{{FTUI Klasse|icon square}}{{FTUI Klasse|icon round}}{{FTUI Klasse|truncate}}<br />
|}<br />
<br />
==Hinweise==<br />
* Es kann nur entweder ''data-color'' verwendet werden, oder ''data-colors'' + ''data-limits'', nicht beides gleichzeitig<br />
* Mit der Klasse ''bg-limit'' wird die Hintergrund- statt der Vordergrundfarbe abhängig von den Werten in ''data-limits'' geändert<br />
* Die Klassen ''icon square'' und ''icon round'' formatieren das Label mit einer fixen Breite und Höhe im Icon-Stil<br />
* Wird die Klasse ''timestamp'' zusammen mit ''data-substitution="toDate().ago()"'' verwendet, sollte eine automatische Aktualisierung (''data-refresh="xx"'') eingestellt werden für den Fall, dass die Aktualisierungsrate des Readings zu gering ist.<br />
* Ein benutzerdefiniertes Layout kann durch Hinzufügen der folgenden Klassen in die fhem-tablet-ui-user.css erreicht werden:<br />
** .label-precomma<br />
** .label-comma<br />
** .label-aftercomma<br />
** .label-unit<br />
** z.B.: <code>.label-aftercomma{ font-size:40%; left: 4px; top: -25px; position: relative; }</code><br />
* Bis zur Version 2.6.2 wurde data-unit mit 50% Schriftgröße auf der Baseline des Wertes positioniert, danach wird die Unit auf superscript angehoben. Dies kann mit einem Eintrag in fhem-tablet-ui-user.css wieder überschrieben werden.<br />
** <Code>.label-unit{ font-size: 50%; vertical-align: baseline; }</code><br />
<br />
<br />
<br />
;Funktionsweise(n) von ''data-substitution'':<br />
* Ein Array an Ersetzungen: <code>data-substitution='["on","Lampe ist an","off","Lampe ist aus"]'</code><br />
* [[Regulärer Ausdruck|RegEx]], die auf dem Wert angewandt werden soll. Standard RegEx-Schreibweise wird erwartet (s/regex/subst/modifier): <code>data-substitution="s/no soundplayer active//g"</code><br />
* <code>data-substitution="weekdayshort"</code><br />
* Mit JavaScript- und RegEx-Funktionen den Wert umwandeln in:<br />
** Tag:Monat: <code>data-substitution="toDate().ddmm()"</code><br />
** Stunden:Minuten: <code>data-substitution="toDate().hhmm()"</code><br />
** Stunden:Minuten:Sekunden: <code>data-substitution="toDate().hhmmss()"</code><br />
** den Namen des Wochentages: <code>data-substitution="toDate().eeee()"</code><br />
** einen Zeitraum (langes Format): <code>data-substitution="toDate().ago()"</code><br />
** einen Zeitraum (kurzes Format):<code>data-substitution="toDate().ago('hh:mm:ss')"</code><br />
** 20:15 statt 20:15:00: <code>data-substitution="s/(:00)$//g"</code><br />
<br />
==Beispiele==<br />
===Einfaches Auslesen des STATE eines Devices===<br />
Ein ganz einfaches Beispiel, welches den ''STATE'' eines FHEM-Devices (in diesem Fall ein Heizkörperthermostat) ausliest und anzeigt.<br />
<source lang="html"><br />
<div data-type="label" data-device="HM_367B39_Climate"></div><br />
</source><br />
[[File:FTUI_Widget_Label_01.png]]<br />
<br />
===Anzeige bestimmter Werte eines Devices===<br />
In diesem Beispiel werden Temperatur und Luftfeuchtigkeit eines Heizkörperthermostates ausgelesen und untereinander angezeigt.<br />
<source lang="html"><br />
<div>Temperatur</div><br />
<div data-type="label"<br />
data-device="HM_367B21_Climate" <br />
data-get="measured-temp"<br />
data-unit="&deg;C"></div><br />
<br />
<div>Luftfeuchte</div><br />
<div data-type="label"<br />
data-device="HM_367B21_Climate" <br />
data-get="humidity"<br />
data-unit="%"></div><br />
</source><br />
[[File:FTUI_Widget_Label_02.png]]<br />
<br />
===Textfarbe bei bestimmten Grenzwerten ändern===<br />
Mit dem Label-Widget kann die Textfarbe je nach bestimmten Grenzwerten geändert werden. In diesem Beispiel ist die Farbe blau, sobald die Temperatur gleich oder kleiner 18° ist, grün ab 20° und rot ab 23°.<br />
<source lang="html"><br />
<div data-type="label" <br />
data-device="dDummy"<br />
data-limits='[18,20,23]' <br />
data-colors='["blue","green","#FF0000"]' <br />
data-unit="&deg;C"></div><br />
</source><br />
[[File:FTUI_Widget_Label_03.png]]<br />
[[Kategorie:FHEM Tablet UI]]<br />
<br />
===Zwei Labels in einer Textzeile===<br />
Mit der Klasse ''inline'' (kein Zeilenumbruch) können mehrere Label-Widgets in der selben Textzeile platziert werden.<br />
<source lang="html"><br />
<div><br />
<div data-type="label" data-device="dDummy" class="inline"></div> bis<br />
<div data-type="label" data-device="dDummy2" class="inline"></div><br />
</div><br />
</source><br />
[[File:FTUI_Widget_Label_04.png]]<br />
<br />
===Kombination von Label- mit anderen Widgets===<br />
Das Label-Widget kann sehr gut verwendet werden, um einen Beschreibungstext für andere Widgets bereitzustellen.<br />
<source lang="html"><br />
<div data-type="switch" data-device="EnO_0193F070" data-icon="mi-power_settings_new"></div><br />
<div data-type="label">Nexus7</div><br />
(<div data-type="label" data-device="Nexus7" data-get="powerLevel"></div>%)<br />
</source><br />
[[File:FTUI_Widget_Label_05.png]]<br />
<br />
===Statisches Label mit Symbol===<br />
Möchte man einen statischen Text darstellen, muss hierfür nicht unbedingt das Label-Widget verwendet werden. Das nachfolgende Beispiel zeigt genau dies und fügt links noch ein Symbol ein. Der Teil für das Symbol kann auch für richtige Labels verwendet werden.<br />
<source lang="html"><br />
<i class="fa fa-cloud fa-2x inline"></i><div class="inline big">WETTER</div><br />
</source><br />
[[File:FTUI_Widget_label_symbol.png]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Klimatrend&diff=20065FTUI Widget Klimatrend2017-02-17T11:13:34Z<p>Nobby1805: /* Attribute */</p>
<hr />
<div>Das [[{{PAGENAME}}|Klimatrend Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem Daten aus dem statistics-Modul von FHEM als Pfeile angezeigt werden können.<br />
<br />
<gallery><br />
File:FTUI_Widget_Klimatrend_01.png<br />
File:FTUI_Widget_Klimatrend_02.png<br />
</gallery><br />
<br />
==Attribute==<br />
{|class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-get'''||Name des Readings mit statistics-Werten. Default ist "statTemperatureTendency". Die Standardbelegung für data-get funktioniert derzeit nur, wenn ein gleichnamiges Reading auch einmal explizit im HTML-Code notiert wird. ||||data-get="measured-temp"<br />
|-<br />
|'''data-refperiod'''||Referenzzeitraum mit dem der aktuelle Wert verglichen werden soll. statistics liefert die Werte für 1h, 2h, 3h und 6h. refperiod wird entsprechend mit 1,2,3,6 angegeben. Alternativ kann auch data-part 2,4,6,8 verwendet werden.||1||<br />
|-<br />
|'''data-stagnation-color'''||Farbcode für unveränderten Wert||rgb(80,80,80)||<br />
|-<br />
|'''data-icon'''||Font-Awesome-Icon das zur Darstellung benutzt werden soll||fa-angle||<br />
|-<br />
|'''data-rising-color'''||Farbcode für ansteigenden Trend||rgb(180,80,80)||<br />
|-<br />
|'''data-falling-color'''||Farbcode für fallenden Trend||rgb(80,80,180)||<br />
|-<br />
|'''data-highmark'''||NWertunterschied ab der der Trend als "steil" gilt und entsprechend gekennzeichnet ist. Default ist "1" für Temperaturwerte ("temp" im Namen des Readings) und "5" für Humidity-Werte ("humidity" im Namen des Readings). ||||<br />
|-<br />
|'''data-highmark-icon'''||Font-Awesome-Icon das zur Darstellung oberhalb der highmark benutzt werden soll||fa-angle-double||<br />
|-<br />
|'''data-highmark-rising-color'''||Farbcode für steil ansteigenden Trend||rgb(255,80,80)||<br />
|-<br />
|'''data-highmark-falling-color'''||Farbcode für steil fallenden Trend||rgb(80,80,255)||<br />
|}<br />
<br />
==CSS Klassen==<br />
{{Todo|Überarbeiten)}} <br />
<br />
{|class="wikitable"<br />
!Klasse!!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}{{FTUI Klasse|hide}}<br />
|}<br />
<br />
<br />
==Hinweise==<br />
Das statistic-Modul muss in FHEM für das reading aktiviert sein.<br />
<br />
define STATISTICS statistics W_HUMID<br />
attr STATISTICS ignoreDefaultAssignments 1<br />
attr STATISTICS tendencyReadings temperature,humidity<br />
<br />
Dadurch werden im Device W_HUMID u.a. Readings in folgender Form erzeugt:<br />
<br />
statTemperatureTendency 1h: +1.3 2h: +0.3 3h: +0.1 6h: +1.4<br />
statHumidityTendency 1h: +1 2h: -2 3h: -1 6h: -1<br />
<br />
Diese Readings werden im klimatrend-Widget verwendet. Das statistics-Modul direkt wird nicht ausgewertet.<br />
<br />
<br />
<br />
==Beispiele==<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend" data-device="W_HUMID" data-get="statTemperatureTendency"></div><br />
</source><br />
<br />
Dadurch wird (mit den Beispieldaten) ein leuchtend roter Doppelpfeil nach oben erzeugt, der einen steilen Anstieg der Temperatur in der letzten Stunde symbolisiert. Ein vollständiger HTML-Code mit allen möglichen Attributen:<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend"<br />
data-device="W_HUMID"<br />
data-get="statTemperatureTendency"<br />
data-refperiod="1"<br />
data-stagnating-color="rgb(80,80,80)"<br />
data-icon="fa-angle"<br />
data-rising-color="rgb(180,80,80)"<br />
data-falling-color="rgb(80,80,180)"<br />
data-highmark="1"<br />
data-highmark-icon="fa-angle-double"<br />
data-highmark-rising-color="rgb(255,80,80)"<br />
data-highmark-falling-color="rgb(80,80,255)"<br />
></div><br />
</source></div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Klimatrend&diff=20064FTUI Widget Klimatrend2017-02-17T11:11:50Z<p>Nobby1805: </p>
<hr />
<div>Das [[{{PAGENAME}}|Klimatrend Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem Daten aus dem statistics-Modul von FHEM als Pfeile angezeigt werden können.<br />
<br />
<gallery><br />
File:FTUI_Widget_Klimatrend_01.png<br />
File:FTUI_Widget_Klimatrend_02.png<br />
</gallery><br />
<br />
==Attribute==<br />
{|class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-get'''||Name des Readings mit statistics-Werten. Default ist "statTemperatureTendency". Die Standardbelegung für data-get funktioniert derzeit nur, wenn ein gleichnamiges Reading auch einmal explizit im HTML-Code notiert wird. ||||data-get="measured-temp"<br />
|-<br />
|'''data-refperiod'''||Referenzzeitraum mit dem der aktuelle Wert verglichen werden soll. statistics liefert die Werte für 1h, 2h, 3h und 6h. refperiod wird entsprechend mit 1,2,3,6 angegeben. Alternativ kann auch data-part 2,4,6,8 verwendet werden.||1||<br />
|-<br />
|'''data-stagnation-color'''||Farbcode für unveränderten Wert||rgb(80,80,80)||<br />
|-<br />
|'''data-color'''||Fester Wert oder Reading eines Devices für die Label-Farbe||||data-color="red"<br />
|-<br />
|'''data-icon'''||Font-Awesome-Icon das zur Darstellung benutzt werden soll||fa-angle||<br />
|-<br />
|'''data-rising-color'''||Farbcode für ansteigenden Trend||rgb(180,80,80)||<br />
|-<br />
|'''data-falling-color'''||Farbcode für fallenden Trend||rgb(80,80,180)||<br />
|-<br />
|'''data-highmark'''||NWertunterschied ab der der Trend als "steil" gilt und entsprechend gekennzeichnet ist. Default ist "1" für Temperaturwerte ("temp" im Namen des Readings) und "5" für Humidity-Werte ("humidity" im Namen des Readings). ||||<br />
|-<br />
|'''data-highmark-icon'''||Font-Awesome-Icon das zur Darstellung oberhalb der highmark benutzt werden soll||fa-angle-double||<br />
|-<br />
|'''data-highmark-rising-color'''||Farbcode für steil ansteigenden Trend||rgb(255,80,80)||<br />
|-<br />
|'''data-highmark-falling-color'''||Farbcode für steil fallenden Trend||rgb(80,80,255)||<br />
|}<br />
<br />
==CSS Klassen==<br />
{{Todo|Überarbeiten)}} <br />
<br />
{|class="wikitable"<br />
!Klasse!!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}{{FTUI Klasse|hide}}<br />
|}<br />
<br />
<br />
==Hinweise==<br />
Das statistic-Modul muss in FHEM für das reading aktiviert sein.<br />
<br />
define STATISTICS statistics W_HUMID<br />
attr STATISTICS ignoreDefaultAssignments 1<br />
attr STATISTICS tendencyReadings temperature,humidity<br />
<br />
Dadurch werden im Device W_HUMID u.a. Readings in folgender Form erzeugt:<br />
<br />
statTemperatureTendency 1h: +1.3 2h: +0.3 3h: +0.1 6h: +1.4<br />
statHumidityTendency 1h: +1 2h: -2 3h: -1 6h: -1<br />
<br />
Diese Readings werden im klimatrend-Widget verwendet. Das statistics-Modul direkt wird nicht ausgewertet.<br />
<br />
<br />
<br />
==Beispiele==<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend" data-device="W_HUMID" data-get="statTemperatureTendency"></div><br />
</source><br />
<br />
Dadurch wird (mit den Beispieldaten) ein leuchtend roter Doppelpfeil nach oben erzeugt, der einen steilen Anstieg der Temperatur in der letzten Stunde symbolisiert. Ein vollständiger HTML-Code mit allen möglichen Attributen:<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend"<br />
data-device="W_HUMID"<br />
data-get="statTemperatureTendency"<br />
data-refperiod="1"<br />
data-stagnating-color="rgb(80,80,80)"<br />
data-icon="fa-angle"<br />
data-rising-color="rgb(180,80,80)"<br />
data-falling-color="rgb(80,80,180)"<br />
data-highmark="1"<br />
data-highmark-icon="fa-angle-double"<br />
data-highmark-rising-color="rgb(255,80,80)"<br />
data-highmark-falling-color="rgb(80,80,255)"<br />
></div><br />
</source></div>Nobby1805http://wiki.fhem.de/w/index.php?title=Datei:FTUI_Widget_Klimatrend_02.png&diff=20063Datei:FTUI Widget Klimatrend 02.png2017-02-17T11:10:56Z<p>Nobby1805: </p>
<hr />
<div></div>Nobby1805http://wiki.fhem.de/w/index.php?title=Datei:FTUI_Widget_Klimatrend_01.png&diff=20062Datei:FTUI Widget Klimatrend 01.png2017-02-17T11:10:01Z<p>Nobby1805: </p>
<hr />
<div></div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=20061FHEM Tablet UI2017-02-17T11:03:20Z<p>Nobby1805: /* Integrierte Widgets */ FTUI Widget Klimatrend</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für FHEM<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[FHEM Tablet UI]] (FTUI) ist ein leichtgewichtiges aber funktionsreiches Frontend-Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Es basiert auf HTML/CSS/JavaScript und stellt somit keine zusätzlichen Anforderungen an den FHEM-Server.<br />
<br />
Mit Hilfe zahlreicher Widgets, die sehr leicht mit HTML Code konfiguriert werden können, ist es möglich, innerhalb kurzer Zeit ein den eigenen Wünschen entsprechendes User-Interface aufzubauen.<br />
<br />
Für den Betrieb ist nur eine FHEM-Installation mit [[HTTPSRV|HTTPSRV-Modul]] sowie ein gängiger Webbrowser notwendig.<br />
<br />
Mit wenigen Anpassungen ist es auch möglich das UI auf anderen Webservern (Apache, u.a.) zu betreiben. Somit können FHEM und FHEM Tablet UI auch auf getrennten Systemen ausgeführt werden.<br />
<br />
[[File:tablet_ui.png|thumb|500px|center|Beispiel für ein mit [[FHEM Tablet UI]] erstelltes User-Interface]]<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
==Getting started==<br />
=== Installation ===<br />
Die Installation von FHEM Tablet UI erzeugt keinen großen Aufwand und besteht im Großen und Ganzen aus drei Schritten:<br />
*Dateien aus dem GitHub-Repository herunterladen<br />
*FHEM konfigurieren ([[HTTPSRV]]-Device erstellen, [[FHEMWEB]]-Attribut longpoll einstellen)<br />
*Eine Beispieldatei anlegen<br />
<br />
{{Hinweis|Diese Anleitung geht davon aus, dass FHEM unter Debian nach der Anleitung [https://debian.fhem.de Stable build using apt] installiert wurde.<br />
Ist dies nicht der Fall, muss der Pfad '''/opt/fhem''' dementsprechend angepasst werden.}}<br />
<br />
<gallery><br />
Datei:FTUI_Installation_01.png|Dateien kopieren<br />
Datei:FTUI_Installation_02.png|HTTPSRV-Device anlegen<br />
Datei:FTUI_Installation_03.png|longpoll einstellen<br />
Datei:FTUI_Installation_04.png|index.html erstellen<br />
</gallery><br />
<br />
Zuerst müssen alle Dateien von FHEM Tablet UI in das FHEM-Verzeichnis '''/opt/fhem/www''' kopiert werden. Das geht mit folgendem '''update'''-Befehl über die FHEM-Befehlszeile.<br />
update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt<br />
<br />
<br />
Anschließend ist ein neues [[HTTPSRV]]-Device in FHEM anzulegen, welches auf den Ordner mit den gerade heruntergeladenen Dateien verweist.<br />
define TABLETUI HTTPSRV ftui/ ./www/tablet/ Tablet-UI<br />
<br />
<br />
Damit FHEM Tablet UI mit FHEM kommunizieren kann, ist noch die '''longpoll'''-Einstellung im [[FHEMWEB]] Device festzulegen.<br />
attr WEB longpoll websocket<br />
bzw. bei Problemen mit ''websocket''<br />
attr WEB longpoll 1<br />
<br />
<br />
Weil FTUI noch nichts anzuzeigen hat, wird die Datei '''/opt/fhem/www/tablet/index-example.html''' nach '''/opt/fhem/www/tablet/index.html''' kopiert.<br />
sudo cp -a /opt/fhem/www/tablet/index-example.html /opt/fhem/www/tablet/index.html<br />
<br />
<br />
Abschließend muss FHEM noch '''neu gestartet''' werden (''shutdown restart'') da das Attribut '''longpoll''' geändert wurde.<br />
<br />
Somit ist FHEM Tablet UI bereit zur Verwendung und kann durch Aufruf der URL '''<nowiki>http://<fhem-server>:8083/fhem/ftui</nowiki>''' oder den Link im FHEM-Menü geöffnet werden<br />
<br />
=== Update ===<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
=== Konfiguration ===<br />
'''META-Parameter'''<br />
<br />
Das Tablet UI lässt sich über die META-Parameter konfigurieren. Mit den meisten META-Parametern kann das verhalten des UI beeinflusst werden. Diese Parameter befinden sich in der jeweiligen '''.html''' Datei (z.B. index.html) im Abschnitt '''<head>'''. Nachfolgend sind die verschiedenen Konfigurationsparameter aufgeführt. Die Parameter sind immer gleich aufgebaut.<br />
<br />
:<code><meta name="<META-Parameter>" content="<Wert>"></code><br />
<br />
{| class="wikitable"<br />
|-<br />
! META-Parameter !! Wert / Beispiel !! Erklärung<br />
|-<br />
| longpoll || 1 oder 0 || Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh. (bis V2.5)<br />
|-<br />
| longpoll_type || websocket oder ajax oder 0 || 0: Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) oder alle 30 Sekunden ein voller Refresh per ajax oder websocket. (ab V2.6)<br />
|-<br />
| gridster_disable || 1 oder 0 || Drag&Drop der Gridster-Elemente auf der Seite deaktivieren.<br />
|-<br />
| toast || 1 oder 0 || Toast messages deaktivieren<br />
|-<br />
| fhemweb_url || <nowiki>http://meinFhemServer:8083/fhem</nowiki> || Wird benötigt wenn der Webserver des TabletUI nicht auf dem FHEM Server läuft.Default: "/fhem/"<br />
|-<br />
| widget_margin || 1 bis 9999 || Abstände der Gridsterelemente verändern.<br />
|-<br />
| widget_base_width || 1 bis 9999 || Größe des Basis-Rasters (data-sizey=1/data-sizex=1) verändern.<br />
|-<br />
| widget_base_height || 1 bis 9999 || Größe des Basis-Rasters (data-sizey=1/data-sizex=1) verändern.<br />
|-<br />
| gridster_cols || 1 bis 9999 || Anzahl der Spalten.<br />
|-<br />
| gridster_rows || 1 bis 9999 || Anzahl der Reihen.<br />
|-<br />
| lang || de || Sprache der Visualisierung (derzeit nur DE vorhanden).<br />
|}<br />
<br />
'''Layout'''<br />
<br />
Seit Version 2.5 werden die Gridster Kachel-Grössen, die Anzahl der Spalten und die Anzahl der Reihen dynamisch anhand der Bildschirmgrösse berechnet.<br />
<br />
Möchte man die Anzahl der Spalten und Reihen fest vorgeben:<br />
<br />
<pre><meta name="gridster_cols" content="12"><br />
<meta name="gridster_rows" content="9"></pre><br />
<br />
Mit folgendem Code kann man die Kachelgrössen fix definieren:<br />
<br />
<pre><meta name="widget_base_width" content="116"><br />
<meta name="widget_base_height" content="131"></pre><br />
<br />
'''Zoom auf mobilen Endgeräten'''<br />
<br />
Um automatische Skalierung und Zoom-Gesten auf mobilen Endgeräten zu unterbinden, kann folgender Meta-Tag im Kopf der Seite eingebunden werden:<br />
<pre><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /></pre><br />
<br />
'''FHEM URL'''<br />
<br />
Werden die FTUI Seiten von einem anderen Server als FHEM-HTTPSRV bereitgestellt, muss man die URL, unter der FHEM angesprochen wird, anpassen:<br />
<br />
<pre><meta name="fhemweb_url" content="/fhem/"></pre><br />
<br />
==Styling==<br />
=== Farbe ===<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163). Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben. Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp oder diese Quelle: https://flatuicolors.com<br />
<br />
===CSS-Styles===<br />
Das Layout und das Aussehen des UI kann durch diverse vorgegebene CSS-Klassen beeinflusst werden. Die verfügbaren Klassen sind im Abschnitt [[#CSS Class description|CSS Class description]] oder [[#Positioning|Positioning]] aufgeführt. Es besteht auch die Möglichkeit eine eigene CSS Datei zu erstellen und darüber Änderungen am Aussehen des UI vorzunehmen. Die eigene CSS Datei würde bei einem Update unverändert bleiben. Daher ist abzuraten eine CSS Datei, die mit dem UI Update verteilt wird zu modifizieren. Die eigene CSS Datei ist unter '''/fhem/tablet/css''' mit dem Namen '''fhem-tablet-ui-user.css''' zu finden. Sollte diese nicht vorhanden sein kann die Datei manuell erstellt werden.<br />
Wird keine eigene CSS-Datei verwendet empfiehlt es sich den folgenden Eintrag im <head> der jeweiligen .html Datei zu entfernen, bzw. in Kommentar zu setzen um Probleme beim Laden der Seite zu verhindern.<br />
<code><link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui-user.css" /></code><br />
<br />
=== CSS-Klassen ===<br />
Nicht alle Widgets unterstützen alle hier angegebenen Klassen. Welche genau unterstützt werden, kann auf der jeweiligen Widget-Seite nachgelesen werden.<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|sheet/row/cell-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|sheet}}{{FTUI Klasse|row}}{{FTUI Klasse|cell}}{{FTUI Klasse|cell-1-x}}{{FTUI Klasse|cell-x}}{{FTUI Klasse|left-align}}{{FTUI Klasse|right-align}}{{FTUI Klasse|bottom-align}}{{FTUI Klasse|top-align}}{{FTUI Klasse|center-align}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|row/col-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|col}}{{FTUI Klasse|col-1-x}}{{FTUI Klasse|col-x}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|hbox/vbox-Layout<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|vbox}}{{FTUI Klasse|hbox}}{{FTUI Klasse|card}}{{FTUI Klasse|phone-width}}{{FTUI Klasse|full-height}}{{FTUI Klasse|full-width}}{{FTUI Klasse|grow-0}}{{FTUI Klasse|grow-1}}{{FTUI Klasse|grow-2}}{{FTUI Klasse|grow-x}}{{FTUI Klasse|items-top}}{{FTUI Klasse|items-center}}{{FTUI Klasse|items-bottom}}{{FTUI Klasse|items-space-between}}{{FTUI Klasse|items-space-around}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Generelle Klassen für die Positionierung<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|inline}}{{FTUI Klasse|newline}}{{FTUI Klasse|top-space}}{{FTUI Klasse|top-space-2x}}{{FTUI Klasse|top-space-3x}}{{FTUI Klasse|left-space}}{{FTUI Klasse|left-space-2x}}{{FTUI Klasse|left-space-3x}}{{FTUI Klasse|right-space}}{{FTUI Klasse|right-space-2x}}{{FTUI Klasse|right-space-3x}}{{FTUI Klasse|top-narrow}}{{FTUI Klasse|top-narrow-2x}}{{FTUI Klasse|top-narrow-10}}{{FTUI Klasse|left-narrow}}{{FTUI Klasse|left-narrow-2x}}{{FTUI Klasse|left-narrow-3x}}{{FTUI Klasse|right-narrow}}{{FTUI Klasse|right-narrow-2x}}{{FTUI Klasse|right-narrow-3x}}{{FTUI Klasse|centered}}{{FTUI Klasse|wider}}{{FTUI Klasse|narrow}}{{FTUI Klasse|fullsize}}{{FTUI Klasse|compressed}}{{FTUI Klasse|height-narrow}}{{FTUI Klasse|w1x}}{{FTUI Klasse|w2x}}{{FTUI Klasse|w3x}}{{FTUI Klasse|maxw40}}{{FTUI Klasse|doublebox-v}}{{FTUI Klasse|doublebox-h}}{{FTUI Klasse|triplebox-v}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Vordergrundfarben<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|red}}{{FTUI Klasse|green}}{{FTUI Klasse|blue}}{{FTUI Klasse|lightblue}}{{FTUI Klasse|orange}}{{FTUI Klasse|gray}}{{FTUI Klasse|lightgray}}{{FTUI Klasse|white}}{{FTUI Klasse|black}}{{FTUI Klasse|mint}}{{FTUI Klasse|yellow}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Hintergrundfarben<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|bg-red}}{{FTUI Klasse|bg-green}}{{FTUI Klasse|bg-blue}}{{FTUI Klasse|bg-lightblue}}{{FTUI Klasse|bg-orange}}{{FTUI Klasse|bg-gray}}{{FTUI Klasse|bg-lightgray}}{{FTUI Klasse|bg-white}}{{FTUI Klasse|bg-black}}{{FTUI Klasse|bg-mint}}{{FTUI Klasse|bg-yellow}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Rahmen<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|verticalLine}}{{FTUI Klasse|border-black}}{{FTUI Klasse|border-white}}{{FTUI Klasse|border-orange}}{{FTUI Klasse|border-red}}{{FTUI Klasse|border-green}}{{FTUI Klasse|border-mint}}{{FTUI Klasse|border-lightblue}}{{FTUI Klasse|border-blue}}{{FTUI Klasse|border-gray}}{{FTUI Klasse|border-yellow}}{{FTUI Klasse|border-lightgray}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Größen<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|great}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Schriftstil<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|thin}}{{FTUI Klasse|bold}}{{FTUI Klasse|darker}}{{FTUI Klasse|truncate}}<br />
|}<br />
<br />
{|class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"<br />
!colspan="2" style="text-align: left;"|Sonstiges<br />
|-<br />
!class="mw-collapsible-content"|Klasse!!Beschreibung<br />
{{FTUI Klasse|blank}}{{FTUI Klasse|transparent}}{{FTUI Klasse|half-transparent}}{{FTUI Klasse|blurry}}{{FTUI Klasse|shake}}{{FTUI Klasse|fail-shake}}{{FTUI Klasse|marquee}}{{FTUI Klasse|icon round}}{{FTUI Klasse|icon square}}{{FTUI Klasse|readonly}}{{FTUI Klasse|blink}}{{FTUI Klasse|rotate-90}}{{FTUI Klasse|horizontal}}{{FTUI Klasse|circleborder}}{{FTUI Klasse|autohide}}{{FTUI Klasse|notransmit}}{{FTUI Klasse|tab}}{{FTUI Klasse|FS20}}{{FTUI Klasse|value}}{{FTUI Klasse|novalue}}{{FTUI Klasse|timestamp}}{{FTUI Klasse|percent}}{{FTUI Klasse|nocache}}{{FTUI Klasse|fade}}{{FTUI Klasse|rotate}}{{FTUI Klasse|nolabels}}{{FTUI Klasse|default}}{{FTUI Klasse|prefetch}}{{FTUI Klasse|circulate}}{{FTUI Klasse|valueonly}}{{FTUI Klasse|positiononly}}{{FTUI Klasse|lineIndicator}}{{FTUI Klasse|barIndicator}}{{FTUI Klasse|roundIndicator}}{{FTUI Klasse|dim-tick}}{{FTUI Klasse|dim-front}}{{FTUI Klasse|dim-back}}{{FTUI Klasse|hue-tick}}{{FTUI Klasse|hue-front}}{{FTUI Klasse|hue-back}}<br />
|}<br />
<br />
== Widgets ==<br />
===Allgemeine Attribute===<br />
Jedes Widget kann über verschiedene Attribute konfiguriert werden. Folgende Attribute gelten für alle Widgets:<br />
<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Daten Empfangen<br />
|-<br />
!align="right" |data-get<br />
|Reading Name<br />
|-<br />
!align="right" |data-get-on<br />
|Wert für den Status on<br />
|-<br />
!align="right" |data-get-off<br />
|Wert für den Status off<br />
|-<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Daten Senden<br />
|-<br />
!align="right" |data-set<br />
|Reading Name<br />
|-<br />
!align="right" |data-set-on<br />
|Wert für den Status on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert für den Status off<br />
|-<br />
|}<br />
<br />
Widget-spezifische Attribute können auf der jeweiligen Widget-Seite nachgelesen werden.<br />
<br />
=== Integrierte Widgets ===<br />
Folgende Widgets sind direkt in FHEM Tablet UI integriert und können "out of the box" verwendet werden.<br />
<br />
* [[FTUI Widget Agenda|agenda]]:<br />
* [[FTUI Widget Button|button]]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen FHEM-Befehl absetzen kann.<br />
* [[FTUI Widget Calview|calview]]:<br />
* [[FTUI Widget Chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[FTUI Widget Checkbox|checkbox]]:<br />
* [[#Circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [[FTUI Widget Classchanger|classchanger]]:<br />
* [[FTUI Widget Clicksound|clicksound]]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [[FTUI Widget Clock|clock]]: Stellt eine einfach Uhr zur Verfügung.<br />
* [[FTUI Widget Colorwheel|colorwheel]]: Farbpalette zur Auswahl von Farben<br />
* [[FTUI Widget Datetimepicker|datetimepicker]]: Erstellt eine Auswahl für Datum/Uhrzeit<br />
* [[#Departure|departure]]: show timetable of public transport provider<br />
* [[FTUI Widget Dimmer|dimmer]]: Ein-/Aus-Button mit integriertem Schieberegler für z.B. einen Dim-Wert<br />
* [[FTUI Widget Eventmonitor|eventmonitor]]:<br />
* [[FTUI Widget Fullcalview|fullcalview]]:<br />
* [[FTUI Widget Gds|gds]]:<br />
* [[FTUI Widget Highchart|highchart]]:<br />
* [[FTUI Widget Highchart3d|highchart3d]]:<br />
* [[FTUI Widget Homestatus|homestatus]]: Auswahl für vier oder fünf definierte Stati eines Objects (z.B.: FHEM Residents)<br />
* [[FTUI Widget Html|html]]:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[FTUI Widget Image|image]]: Zeigt ein Bild, dessen URL fest vorgegeben oder aus einem Device-Reading gelesen werden kann.<br />
* [[FTUI Widget Input|input]]: Erstellen eines Texteingabefeldes<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [[FTUI Widget Klimatrend|klimatrend]]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [[FTUI Widget Knob|knob]]: Erstellt einen Statusbalken auf einer Kreisbahn<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[FTUI Widget Label|label]]: Reading als Text anzeigen<br />
* [[FTUI Widget Level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [[FTUI Widget Link|link]]: Erstellt einen Link oder Button zum Aufrufen von URLs oder Senden von Befehlen an FHEM<br />
* [[FTUI Widget Loading|loading]]:<br />
* [[FTUI Widget Medialist|medialist]]:<br />
* [[FTUI Widget Meteogram|meteogram]]:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[FTUI Widget Notify|notify]]: Blendet ein Hinweisfenster im Browser ein<br />
* [[FTUI Widget Pagebutton|pagebutton]]: Button, mit dem auf andere Seiten gesprungen werden kann. Eignet sich gut für eine Navigation<br />
* [[#Pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[FTUI Widget Playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#Popup|popup]]: a popup dialog which open on click on another widget <br />
* [[FTUI Widget Progress|progress]]: Zeigt einen Prozentwert in Form einer runden Fortschrittsleiste<br />
* [[FTUI_Widget_Push|push]]: Button, mir dem ein Befehl an FHEM gesendet werden kann.<br />
* [[FTUI Widget Range|range]]: Erstellt vertikale Balken, die einen Wertebereich in unterschiedlichen Farben darstellen<br />
* [[FTUI Widget Readingsgroup|readingsgroup]]: Zeigt eine Readingsgroup an, wie sie in FHEM definiert wurde<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[FTUI Widget Rotor|rotor]]: Animiertes Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[FTUI Widget Screensaver|screensaver]]:<br />
* [[FTUI_Widget_Select|select]]: Combobox, die eine Liste an Werten zur Auswahl anzeigt<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[FTUI Widget Simplechart|simplechart]]: simple XY line chart for one value (reads directly from FHEM log file)<br />
* [[FTUI Widget Slideout|slideout]]:<br />
* [[FTUI Widget Slider|slider]]: vertical slider to select between min/max value<br />
* [[FTUI Widget Spinner|spinner]]:<br />
* [[FTUI Widget Svgplot|svgplot]]:<br />
* [[FTUI Widget Swiper|swiper]]:<br />
* [[FTUI Widget Switch|switch]]: Toggle any command to FHEM (e.g. on / off)<br />
* [[FTUI Widget Symbol|symbol]]: Status eines Devices als Symbol darstellen (z.B. Fenster offen)<br />
* [[FTUI Widget Thermostat|thermostat]]: Anzeige für Heizungsthermostate, mit der die gewünschte Temperatur eingestellt werden kann<br />
* [[FTUI Widget Tts|tts]]:<br />
* [[FTUI Widget Uwz|uwz]]:<br />
* [[FTUI Widget Volume|volume]]: Einstellscheibe zur Änderung eines einzelnen Wertes<br />
* [[FTUI Widget Wakeup|wakeup]]:<br />
* [[FTUI Widget Wdtimer|wdtimer]]:<br />
* [[FTUI Widget Weather|weather]]: Wettersymbol anzeigen<br />
* [[FTUI Widget Weekprofile|weekprofile]]:<br />
* [[FTUI Widget Wind_direction|Wind_direction]]: Anzeige der Windrichtung auf einer Windrose<br />
<br />
===3rd Party Widgets===<br />
* [https://github.com/svenson08/ftui-weekdaytimer-widget weekdaytimer]: Visualisierung des [[WeekdayTimer]] Modul<br />
<br />
==Attribute einiger Widgets==<br />
<br />
===Circlemenu===<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
===Departure===<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-type<br />
|widget-type; must be departure<br />
|<br />
|-<br />
!align="right" |data-device<br />
|name of the device to get data from<br />
|<br />
|-<br />
!align="right" |data-get<br />
|name of the reading of device to get data from<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|define icon for widget<br />
|<br />
|-<br />
!align="right" |data-interval<br />
|interval to reload automatically<br />
|<br />
|-<br />
!align="right" |class<br />
|choose style of widget; see example<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_departure|Link zu einem Beispiel]]<br />
<br />
<br />
===Pagetab===<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
===Popup===<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_departure">'''Departure'''</div><br />
<br />
Departure Widget Beispiel<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="departure"<br />
data-device="vvs"<br />
data-get="SSB-Zentrum"<br />
data-icon="fa-train"<br />
data-interval="0"><br />
</div><br />
</pre><br />
<br />
Optionen für class<br />
<pre><br />
class="" : default Style (grau)<br />
class="DVB" anderer Style (gelb)<br />
class="VVO" : anderer Style (blau)<br />
class="alternate" : alternierender Hintergrund<br />
class="deptime" : Abfahrtszeit statt Minuten<br />
</pre><br />
<br />
weiteres Beispiel<br />
<pre><br />
<div data-type="departure"<br />
data-device="vvs"<br />
data-get="SSB-Zentrum"<br />
data-icon="fa-train"<br />
data-interval="0"<br />
class="DVB deptime alternate"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Präfix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="ftui.setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Klimatrend&diff=20060FTUI Widget Klimatrend2017-02-17T11:01:23Z<p>Nobby1805: Die Seite wurde neu angelegt: „Das Klimatrend Widget ist ein Widget für FHEM Tablet UI, mit dem Daten aus dem statistics-Modul von FHEM als Pfeile angezeigt werden kön…“</p>
<hr />
<div>Das [[{{PAGENAME}}|Klimatrend Widget]] ist ein Widget für [[FHEM Tablet UI]], mit dem Daten aus dem statistics-Modul von FHEM als Pfeile angezeigt werden können.<br />
<br />
<gallery><br />
File:FTUI_Widget_Klimatrend_01.png<br />
File:FTUI_Widget_Klimatrend_02.png<br />
File:FTUI_Widget_Klimatrend_03.png<br />
</gallery><br />
<br />
==Attribute==<br />
{|class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-get'''||Name des Readings mit statistics-Werten. Default ist "statTemperatureTendency". Die Standardbelegung für data-get funktioniert derzeit nur, wenn ein gleichnamiges Reading auch einmal explizit im HTML-Code notiert wird. ||||data-get="measured-temp"<br />
|-<br />
|'''data-refperiod'''||Referenzzeitraum mit dem der aktuelle Wert verglichen werden soll. statistics liefert die Werte für 1h, 2h, 3h und 6h. refperiod wird entsprechend mit 1,2,3,6 angegeben. Alternativ kann auch data-part 2,4,6,8 verwendet werden.||1||<br />
|-<br />
|'''data-stagnation-color'''||Farbcode für unveränderten Wert||rgb(80,80,80)||<br />
|-<br />
|'''data-color'''||Fester Wert oder Reading eines Devices für die Label-Farbe||||data-color="red"<br />
|-<br />
|'''data-icon'''||Font-Awesome-Icon das zur Darstellung benutzt werden soll||fa-angle||<br />
|-<br />
|'''data-rising-color'''||Farbcode für ansteigenden Trend||rgb(180,80,80)||<br />
|-<br />
|'''data-falling-color'''||Farbcode für fallenden Trend||rgb(80,80,180)||<br />
|-<br />
|'''data-highmark'''||NWertunterschied ab der der Trend als "steil" gilt und entsprechend gekennzeichnet ist. Default ist "1" für Temperaturwerte ("temp" im Namen des Readings) und "5" für Humidity-Werte ("humidity" im Namen des Readings). ||||<br />
|-<br />
|'''data-highmark-icon'''||Font-Awesome-Icon das zur Darstellung oberhalb der highmark benutzt werden soll||fa-angle-double||<br />
|-<br />
|'''data-highmark-rising-color'''||Farbcode für steil ansteigenden Trend||rgb(255,80,80)||<br />
|-<br />
|'''data-highmark-falling-color'''||Farbcode für steil fallenden Trend||rgb(80,80,255)||<br />
|}<br />
<br />
==CSS Klassen==<br />
{{Todo|Überarbeiten)}} <br />
<br />
{|class="wikitable"<br />
!Klasse!!Beschreibung<br />
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}{{FTUI Klasse|hide}}<br />
|}<br />
<br />
<br />
==Hinweise==<br />
Das statistic-Modul muss in FHEM für das reading aktiviert sein.<br />
<br />
define STATISTICS statistics W_HUMID<br />
attr STATISTICS ignoreDefaultAssignments 1<br />
attr STATISTICS tendencyReadings temperature,humidity<br />
<br />
Dadurch werden im Device W_HUMID u.a. Readings in folgender Form erzeugt:<br />
<br />
statTemperatureTendency 1h: +1.3 2h: +0.3 3h: +0.1 6h: +1.4<br />
statHumidityTendency 1h: +1 2h: -2 3h: -1 6h: -1<br />
<br />
Diese Readings werden im klimatrend-Widget verwendet. Das statistics-Modul direkt wird nicht ausgewertet.<br />
<br />
<br />
<br />
==Beispiele==<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend" data-device="W_HUMID" data-get="statTemperatureTendency"></div><br />
</source><br />
<br />
Dadurch wird (mit den Beispieldaten) ein leuchtend roter Doppelpfeil nach oben erzeugt, der einen steilen Anstieg der Temperatur in der letzten Stunde symbolisiert. Ein vollständiger HTML-Code mit allen möglichen Attributen:<br />
<br />
<source lang="html"><br />
<div data-type="klimatrend"<br />
data-device="W_HUMID"<br />
data-get="statTemperatureTendency"<br />
data-refperiod="1"<br />
data-stagnating-color="rgb(80,80,80)"<br />
data-icon="fa-angle"<br />
data-rising-color="rgb(180,80,80)"<br />
data-falling-color="rgb(80,80,180)"<br />
data-highmark="1"<br />
data-highmark-icon="fa-angle-double"<br />
data-highmark-rising-color="rgb(255,80,80)"<br />
data-highmark-falling-color="rgb(80,80,255)"<br />
></div><br />
</source></div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Range&diff=19946FTUI Widget Range2017-02-14T17:39:36Z<p>Nobby1805: Bei 2 Beispiele stand dimmer statt range</p>
<hr />
<div>Das [[{{PAGENAME}}|Range Widget]] ist ein Widget für [[FHEM Tablet UI]], das einen vertikalen Balkengraphen erzeugt, der Werte zwischen einem Minimal- und einem Maximalwert und Hoch-/Niedrig-Limits in verschieden Farben anzeigt.<br />
<br />
<gallery><br />
File:FTUI_Widget_Range_01.png<br />
File:FTUI_Widget_Range_02.png<br />
File:FTUI_Widget_Range_03.png<br />
</gallery><br />
<br />
==Attribute==<br />
{|class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-high'''||Name des Reading, von dem der "High"-Wert gelesen werden kann||STATE||data-high="high"<br />
|-<br />
|'''data-low'''||Name des Reading, von dem der "Low"-Wert gelesen werden kann||||data-low="low"<br />
|-<br />
|'''data-max'''||Maximalwert der Skala||30||data-max="25"<br />
|-<br />
|'''data-min'''||Minimalwert der Skala||-10||data-min="10"<br />
|-<br />
|'''data-limit-high'''||Wert, ab dem die Farbe auf "high" geändert wird||20||data-limit-high="20"<br />
|-<br />
|'''data-limit-low'''||Wert, ab dem die Farbe auf "low" geändert wird||data-limit-low="10"<br />
|-<br />
|'''data-color'''||RGB-Angabe oder Name der Farbe für den "normalen" Bereich des Balkens||orange||data-color="green"<br />
|-<br />
|'''data-color-high'''||RGB-Angabe oder Name der Farbe für den "high"-Bereich des Balkens||red||data-color="red"<br />
|-<br />
|'''data-color-low'''||RGB-Angabe oder Name der Farbe für den "low"-Bereich des Balkens||blue||data-color="blue"<br />
|-<br />
|'''data-width'''||Breite des Balkens||8px||data-width="2em"<br />
|-<br />
|'''data-height'''||Höhe des Balkens||220px||data-height="100px"<br />
|}<br />
<br />
==CSS Klassen==<br />
{|class="wikitable"<br />
{{FTUI Klasse|nolabels}}<br />
|}<br />
<br />
==Beispiele==<br />
===Min-/Max-Temperatur===<br />
<source lang="html"><br />
<div data-type="range"<br />
data-device='OpenWeather'<br />
data-hight="fc0_tempMax"<br />
data-low="fc0_tempMin"></div><br />
</source><br />
[[File:FTUI_Widget_Range_01.png]]<br />
<br />
<br />
===Ohne Beschriftung===<br />
Das Widget ohne Beschriftung, dafür mit individueller Breite.<br />
<source lang="html"><br />
<div data-type="range"<br />
data-device='OpenWeather'<br />
data-hight="fc0_tempMax"<br />
data-low="fc0_tempMin"<br />
data-width="2em"<br />
class="nolabels"></div><br />
</source><br />
[[File:FTUI_Widget_Range_02.png]]<br />
<br />
<br />
===Mehrere Balken nebeneinander===<br />
In diesem Beispiel werden drei Balken nebeneinander angezeigt. Temperaturen unter Null werden in blau angezeigt, Werte über 2 werden rot.<br />
Das Nebeneinander der Balken wird durch die Klasse ''inline'' erreicht. Durch die Klasse ''nolabels'' werden beim zweiten und dritten Balken die Beschriftungen nicht angezeigt.<br />
<source lang="html"><br />
<div class="container"><br />
<div data-type="range" data-device="OpenWeather" data-high="fc0_tempMax" data-low="fc0_tempMin" data-max="10" data-min="-10" data-limit-low="0" data-limit-high="2" class="inline"></div><br />
<div data-type="range" data-device="OpenWeather" data-high="fc1_tempMax" data-low="fc1_tempMin" data-max="10" data-min="-10" data-limit-low="0" data-limit-high="2" class="inline nolabels"></div><br />
<div data-type="range" data-device="OpenWeather" data-high="fc2_tempMax" data-low="fc2_tempMin" data-max="10" data-min="-10" data-limit-low="0" data-limit-high="2" class="inline nolabels"></div><br />
</div><br />
</source><br />
[[File:FTUI_Widget_Range_03.png]]<br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Push&diff=19681FTUI Widget Push2017-02-10T21:52:22Z<p>Nobby1805: /* Lampe für 5 Minuten einschalten */ typo</p>
<hr />
<div>Das [[{{PAGENAME}}|Push Widget]] ist ein Widget für [[FHEM Tablet UI]] in Form eines Button-förmigen Knopfes, der, ähnlich einem Taster, einen einfachen Befehl an FHEM sendet (zum Beispiel hoch/runter, Play/Pause, Nächster/vorheriger Titel, usw.). Der Befehl kann beim Drücken, beim Loslassen, oder beide male ausgeführt werden.<br />
<br />
<gallery><br />
File:Ftui_widget_push.PNG<br />
File:Push1.png<br />
File:Push2.png<br />
File:Ftui_widget_push_on-for-timer.png<br />
</gallery><br />
<br />
==Steuer-Attribute==<br />
{| class="wikitable"<br />
!Attribut<br />
!Beschreibung<br />
!Standard-Wert<br />
!Beispiel<br />
|-<br />
|'''data-device'''||FHEM-Device, dessen Reading gesetzt werden soll (<command> '''<device>''' <reading> <value>)||||<br />
|-<br />
|'''data-set'''||Reading, das gesetzt werden soll (<command> <device> '''<reading>''' <value>)||||<br />
|-<br />
|'''data-set-on'''||Wert, der beim Drücken gesendet werden soll. Kann auch ein Array sein, um verschiedene Werte abwechselnd zu schalten||on||data-set-on="1"<br />
|-<br />
|'''data-set-off'''||Wert, der nach dem Loslassen gesendet werden soll||||data-set-off="0"<br />
|-<br />
|'''data-cmd'''||Befehl, der gesendet werden soll ('''<command>''' <device> <reading> <value>) (z.B. setstate, set, setreading, trigger)||set||<br />
|-<br />
|'''data-doubleclick'''||Zeit, die vergehen muss, bis das Element ein zweites mal betätigt werden kann. '0' schaltet dieses Verhalten ab.||0||<br />
|-<br />
|'''data-countdown'''||Sekunden für Fortschrittsanzeige (progress control / 'on-for-timer')||Automatische Erkennung von 'on-for-timer' bei '''data-set-on'''||<br />
|-<br />
|'''data-warn'''||Reading, dessen Inhalt als rotes Kennzeichen angezeigt wird. Der Inhalt des Readings muss eine Ganzzahl (Integer) sein.||||<br />
|-<br />
|'''data-get'''||Reading, dessen Inhalt zur Zustandsanzeige (ON/OFF) wird||keiner (muss explizit angegeben werden)||<br />
|-<br />
|'''data-get-on'''||Zeichenkette, die als Zustand ON interpretiert wird||||<br />
|-<br />
|'''data-get-off'''||Zeichenkette, die als Zustand OFF interpretiert wird||||<br />
|-<br />
|'''data-hide'''||Reading zum Verstecken des Push-Elementes. Das Element verschwindet, wenn der Wert mit '''data-hide-on''' übereinstimmt.||'STATE'||<br />
|-<br />
|'''data-hide-on'''||Zeichenkette, bei der das Element versteckt wird||'true|1|on'||<br />
|-<br />
|'''data-hide-off'''||Zeichenkette, bei der das Element angezeigt wird||'!on'||<br />
|-<br />
|'''data-hideparents'''||jQuery-Selector, um auch die Eltern-Elemente zu verstecken||||data-hideparents="#Name"<br />
|-<br />
|'''data-lock'''||Reading, mit dem das Element für eine Bedienung gesperrt wird. Gütige Werte sind 'true', '1' oder 'on' ||||<br />
|-<br />
|'''data-reachable'''||Reading, dessen Inhalt angibt, ob das Device erreichbar ist, oder nicht. Der Inhalt des Readings muss eine Ganzzahl (Integer) sein.||||<br />
|-<br />
|'''data-icon'''||Name des Icons im Vordergrund||'fa-power-off'||<br />
|-<br />
|'''data-background-icon'''||Name des Icons, das als Hintergrund verwendet werden soll||'fa-circle'||<br />
|-<br />
|'''data-off-color'''||Feste Iconfarbe für den Zustand OFF, oder '''<device>:<reading>''', um einen entsprechenden Wert dynamisch aus FHEM abzurufen.||'#505050'||<br />
|-<br />
|'''data-off-background-color'''||Feste Hintergrundfarbe für den Zustand OFF, oder '''<device>:<reading>'''||'#505050'||<br />
|}<br />
<br />
==Beispiele==<br />
===Alle Lampen einschalten===<br />
<br />
<source lang="html"><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set-on="on"><br />
</div><br />
</source><br />
<br />
===Steuerung hoch/runter (horizontal)===<br />
[[File:Push1.png]]<br />
<br />
<source lang="html"><br />
<div><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set-on="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set-on="down"><br />
</div><br />
</div><br />
</div><br />
</source><br />
<br />
===Steuerung hoch/runter (vertikal)===<br />
[[File:Push2.png]]<br />
<br />
<source lang="html"><br />
<div><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set-on="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set-on="down"><br />
</div><br />
</div><br />
</div><br />
</source><br />
<br />
===Lampe für 5 Minuten einschalten===<br />
Das Push-Widget zeigt einen einen abnehmenden Kreis, solange der Countdown läuft. Die Dauer wird automatisch aus dem '''on-for-timer'''-Befehl erkannt. Mit '''data-countdown''' kann jedoch auch auch ein eigener Wert angegeben werden.<br />
<br />
[[File:Ftui_widget_push_on-for-timer.png]]<br />
<br />
<source lang="html"><br />
<div data-type="push" data-device="MyLamp" data-set-on="on-for-timer 300" ></div><br />
</source><br />
<br />
===Push-Widget verstecken===<br />
<br />
<source lang="html"><br />
<div class="hbox"><br />
<div class="vbox"><br />
<div data-type="push" data-device="ftuitest" data-set-on="1"></div><br />
<div>on</div><br />
</div><br />
<div class="vbox"><br />
<div data-type="push" data-device="ftuitest" data-set-on="0"></div><br />
<div>off</div><br />
</div><br />
<div class="vbox"><br />
<div data-type="push" data-device="dummy1" data-get="STATE" data-get-on="on" data-hide="ftuitest:STATE" data-hide-on="1" class=""></div><br />
</div><br />
</div><br />
<br />
</source><br />
<br />
[[Kategorie:FHEM Tablet UI]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Blocking_Call&diff=17130Blocking Call2016-11-10T08:47:04Z<p>Nobby1805: typo</p>
<hr />
<div>Dieser Artikel soll Hinweise und Best Practices im Umgang mit dem Modul Blocking.pm und den daraus bereitgestellten Funktionen bieten.<br />
<br />
= Allgemein =<br />
<br />
Das Modul Blocking.pm wurde von Rudolf König entwickelt um in FHEM Funktionsaufrufe zu ermöglichen die relativ viel Zeit in Anspruch nehmen und normalerweise FHEM damit zum Stillstand für die Dauer der Ausführung einer solchen Funktion bringen würde. <br />
<br />
Um so etwas zu verhindern kann man mit Hilfe von Blocking.pm eine Funktion über einen Fork des Hauptprozesses unabhängig davon abarbeiten und das Ergebniss dieser Funktion optional an den Hauptprozess übergeben.<br />
<br />
= Benutzung =<br />
<br />
Das Modul stellt primär die Funktion BlockingCall() zur Verfügung um eine Perl-Funktion "non-blocking" auszuführen. <br />
<br />
'''BlockingCall($blockingFn, $arg, $finishFn, $timeout, $abortFn, $abortArg);'''<br />
<br />
{| class="wikitable"<br />
|-<br />
! Argument !! Optional !! Beispiel !! Beschreibung<br />
|-<br />
| '''<code>$blockingFn</code>''' || nein || "speedtest_DoSpeedtest" || Der Name der Perlfunktion, die "non-blocking" ausgeführt werden soll (ohne Klammern, nur der reine Funktionsname).<br />
|-<br />
| '''<code>$arg</code>''' || nein || <nowiki>"DeviceName|Argument1|Argument2"</nowiki> || Das Funktionsargument, das der blockingFn übergeben werden soll.<br />
|-<br />
| '''<code>$finishFn</code>''' || ja || "speedtest_SpeedtestDone" || Die Funktion, die mit dem Funktionsergebnis der blockingFn als Parameter aufgerufen werden soll, sobald diese zuende ist. Diese Funktion wird dabei mit dem Returnwert als erstes Argument aufgerufen.<br />
|-<br />
| '''<code>$timeout</code>''' || ja || 120 || Sofern eine finishFn verwendet wird, kann ein optionales Timeout gesetzt werden, sobald der Aufruf abgebrochen wird, sobald dieser timeout in Sekunden verstrichen ist.<br />
|-<br />
| '''<code>$abortFn</code>''' || ja|| speedtest_SpeedtestAborted|| Wenn der Aufruf aufgrund eines überschrittenen Timeouts abgebrochen wird, so wird die abortFn aufgerufen, sofern eine definiert ist.<br />
|-<br />
| '''<code>$abortArg</code>''' || ja|| $hash || Im Falle eines Abruchs soll die abortFn mit diesem Argument aufgerufen werden. (Dient primär der Zuordnung eines solchen Abbruchs für Modulentwickler.<br />
|}<br />
<br />
<br />
Die Funktion BlockingCall() gibt bei Erfolg eine Hashreferenz mit mehreren Items zurück. Dieser Hash ist folgendermaßen aufgebaut.<br />
<br />
{|<br />
|-<br />
| '''<code>$hash->{pid}</code>''' || → Die Prozess-Id, unter der dieser Aufruf abgearbeitet wird.<br />
|-<br />
| '''<code>$hash->{fn}</code>''' || → Der Name der blockigen, der mit diesem Aufruf abgearbeitet wird.<br />
|-<br />
| '''<code>$hash->{finishFn}</code>''' || → Der Name der finishFn, die diesen Aufruf nach Erfolg verarbeiten wird.<br />
|-<br />
| '''<code>$hash->{abortFn}</code>''' || → Der Name der abortFn, die im Fehlerfall aufgerufen wird.<br />
|-<br />
| '''<code>$hash->{abortArg}</code>''' || → Das Argument, das im Fehlerfall an die abortFn übergeben werden soll.<br />
|}<br />
<br />
= Einschränkungen =<br />
<br />
Aktuell sind beim Einsatz von Blocking.pm folgende Einschränkungen zu beachten.<br />
<br />
* Veränderungen an internen Variablen von FHEM (Device Hashes, Timers, usw.) werden innerhalb eines BlockingCalls durchgeführt und sind dort auch sichtbar, haben aber keinerlei Einfluss auf den eigentlichen FHEM Hauptprozess und alle Definitionen. Solche Veränderungen müssen an die finishFn delegiert werden (z.B. durch zusätzliche Rückgabewerte), da es sich um einen Fork-Prozess handelt, der sich nach Abschluss des BlockingCall selbst zerstört.<br />
* Wenn viele Definitionen aktiv sind, welche BlockingCalls parallel starten kann es zu einem relativ hohen Memory-Footprint kommen aufgrund mehrfach laufenden Fork-Prozessen. Dies kann auf schwachbrüstiger Hardware zu Speicherengpässen führen. Ab FHEM Revision 11917 lassen sich die maximal parrallel laufenden BlockingCalls durch das globale Attribut <code>blockingCallMax</code> begrenzen (Standardwert: ''unbegrenzt''). Sofern die maximale parallele Anzahl an BlockingCalls erreicht ist, werden weitere Calls in eine Warteschlange eingereiht und ausgeführt, sobald laufende Calls beendet werden.<br />
<br />
= Blocking.pm für Modulentwickler =<br />
<br />
Blocking.pm ist aktuell sowohl für Enduser, als auch für Modulentwickler gedacht. Die Benutzung in einem Modul birgt allerdings einige Stolperfallen auf die hier näher eingegangen wird.<br />
<br />
== return-Wert von BlockingCall immer in $hash abspeichern ==<br />
<br />
Die Funktion BlockingCall() gibt als return-Wert einen Hash mit mehreren Informationen zurück. Dieser Ergebnis-Hash ist in mehrerer Hinsicht sehr wichtig für die Benutzung in einem Modul, dazu in den folgenden Punkten mehr.<br />
<br />
Eine gute Möglichkeit ist es dieses Ergebnis unterhalb von $hash->{helper} zu platzieren. So sieht es der Enduser nicht, kann aber bei Bedarf via list-Befehl angezeigt werden.<br />
<br />
<u>Beispiel:</u><br />
<br />
$hash->{helper}{RUNNING_PID} = BlockingCall( <font color="grey">…</font> );<br />
<br />
== Sicherstellen, dass immer nur ein BlockingCall gleichzeitig läuft ==<br />
<br />
Sobald ein BlockingCall läuft könnte man reintheoretisch direkt einen weiteren BlockingCall starten usw. Dadurch würden mehrer parallele Durchläufe nebenher laufen und könnten den FHEM-Server dadurch unnötig belasten oder sogar auch überlasten. Daher sollte man immer beim Start eines BlockingCall prüfen, ob bereits ein weiterer BlockingCall läuft oder bei mehreren parallelen Blocking Calls eine entsprechende Prüfung einführen um die maximale Anzahl an gleichzeitigen BlockingCalls innerhalb einer Definition zu begrenzen.<br />
<br />
<font color="grey">$hash->{helper}{RUNNING_PID} = BlockingCall(…)</font> unless(exists($hash->{helper}{RUNNING_PID}));<br />
Dies funktioniert nur dann, wenn man in der finishFn (und später auch abortFn) $hash->{helper}{RUNNING_PID} wieder löscht. Somit ist immer sichergestellt, das nur ein BlockingCall zur gleichen Zeit läuft. Wenn gerade ein BlockingCall aktiv ist aufgrund eines Set-Befehls, könnte man eine Meldung ausgeben.<br />
<br />
<u>Beispiel:</u><br />
<br />
BlockingCall(<font color="grey">"speedtest_DoSpeedtest", $name."|".$server, </font>"speedtest_SpeedtestDone"<font color="grey">, 120, …</font>);<br />
<br />
speedtest_SpeedtestDone($)<br />
{<br />
…<br />
delete($hash->{helper}{RUNNING_PID});<br />
…<br />
}<br />
<br />
== Nutzung von abortFn und abortArg ==<br />
<br />
Mal angenommen man führt einen BlockingCall aus und dieser wird innerhalb des gesetzten Timeouts von 5 Sekunden nicht durchgeführt. Dann erhält man kein Ergebnis via der gesetzten finishFn. Das kann dazu führen, das ein InternalTimer nicht mehr neu gestartet werden kann, der zyklisch diesen BlockingCall ausführen soll um Daten zu ermitteln oder einen Status. <br />
<br />
Um einen solchen Abbruch aufgrund des erreichten Timeouts innerhalb eines Moduls zu erkennen, muss der BlockingCall mit einer abortFn und einem abortArg gestartet werden.<br />
<br />
* '''abortFn''' - die Funktion die im Falle eines Abbruch des Aufrufs gestartet werden soll<br />
* '''abortArg''' - das Argument mit der diese Funktion aufgerufen werden soll. Dies díent in einer Modulumgebung der Zuordnung des korrekten Devices bei mehreren Definitionen. Üblicherweise wird hierfür $hash verwendet.<br />
<br />
BlockingCall(<font color="grey">"speedtest_DoSpeedtest", $name."|".$server,"speedtest_SpeedtestDone", 120,</font> "speedtest_SpeedtestAborted", $hash);<br />
<br />
sub<br />
speedtest_SpeedtestAborted($)<br />
{<br />
my ($hash) = @_;<br />
<br />
delete($hash->{helper}{RUNNING_PID});<br />
<br />
Log3 $hash->{NAME}, 3, "BlockingCall for ".$hash->{NAME}." was aborted";<br />
<br />
RemoveInternalTimer($hash);<br />
InternalTimer(<font color="grey">gettimeofday()+10, …</font>) # falls mit disable-Attribut gearbeitet wird, muss dieses hier geprüft werden<br />
}<br />
<br />
== BlockingCall muss als Argument eine Referenz auf das Ursprungs-Device enthalten ==<br />
<br />
Um später die Ergebnisse korrekt zuordnen zu können, ist es wichtig das korrekte Device zu kennen. Normalerweise wird in FHEM dazu der $hash-Zeiger verwendet um auf das entsprechende Device zu verweisen. Als Argumente für die BlockingFn können Hashes, Zeiger und sonstiges verwendet werden. Wichtig dabei ist, dass man aus den Argumenten irgendwie den Device-Namen ableiten kann, da man diesen später in der finishFn über die Variable $defs{…} wieder in die $hash-Referenz umwandeln kann.<br />
<br />
<u>Beispiel</u><br />
<br />
BlockingCall(<font color="grey">"speedtest_DoSpeedtest",</font> <b>$hash->{NAME}</b>."|".$server<font color="grey">,…</font>);<br />
<br />
sub<br />
speedtest_DoSpeedtest($)<br />
{<br />
my ($string) = @_;<br />
my ($name, $server) = split("\\|", $string);<br />
<br />
…<br />
<br />
return "<b>$name</b>|$speedarr[0]|$speedarr[1]|$speedarr[2]";<br />
}<br />
<br />
sub<br />
speedtest_SpeedtestDone($)<br />
{<br />
my ($string) = @_;<br />
<br />
return unless(defined($string));<br />
<br />
my @a = split("\\|",$string);<br />
my <b>$hash</b> = <b>$defs{$a[0]}</b>;<br />
<br />
…<br />
}<br />
<br />
== Rückgabewerte des BlockingCalls nur als Einzeiler-String ==<br />
<br />
Bei Funktionen die mit BlockingCall aufgerufen werden muss der Rückgabewert entweder eine Zahl, oder ein einzeiliger String sein, da dieser über den Telnetprompt als Perl-Befehl ( ''{finishFn("returnvalue")}'' ) zurückgegeben wird. <br />
<br />
Wenn man mehrere separate Werte zurückgeben möchte, kann man diese entweder mit einem Trennzeichen (z.B. Pipe) versehen, oder bei einem Text mit Zeilenumbrüchen alles mit Base64 oder Hex encoden.<br />
<br />
So kann man z.B. den Rückgabestring "Wert1|Wert2|Wert3" verwenden und diesen anschließend mit split() wieder in ein Array verwandeln und dann via Index gezielt darauf zugreifen.<br />
<br />
Eine weitere Möglichkeit auch kompliziertere Datenstrukturen zurück zu geben ist <code>encode_json</code> zum serialisieren und <code>decode_json</code> zum deserialisieren zu verwenden.<br />
<br />
== Rückgabewert muss unbedingt den Namen des Devices enthalten, von dem der Call gestartet wurde ==<br />
<br />
Um einen Rückgabewert dem korrekten Device zuordnen zu können muss im Rückgabewert der Funktion, die mit BlockingCall gestartet wird, der Device-Name enthalten sein, um damit die Referenz auf das richtige Device herstellen zu können.<br />
<br />
z.B. als Returnstring "Devicenamen|Readingwert1|Readingwert2|…"<br />
<br />
Daher ist es wichtig, den Devicenamen beim Start des Blockingcalls zu übergeben.<br />
<br />
== Verwenden einer UndefFn um laufende BlockingCalls zu beenden ==<br />
<br />
Wenn gerade ein BlockingCall läuft und man will FHEM herunterfahren oder neustarten kann das problematisch werden, da ja immer noch Unterprozesse laufen und so einen kompletten Stop verhindern können.<br />
<br />
Daher muss in der UndefFn des Moduls sichergestellt werden, dass ein laufender BlockingCall beendet wird. Dazu wird als Argument der Return-Hash von BlockingCall benötigt in dem unter anderem die PID des Unterprozesses enthalten ist. Die Funktion BlockingKill() erledigt dann den Rest.<br />
<br />
<u>Beispiel</u><br />
<br />
sub<br />
speedtest_Undefine($$)<br />
{<br />
my ($hash, $arg) = @_;<br />
<br />
RemoveInternalTimer($hash);<br />
<br />
BlockingKill($hash->{helper}{RUNNING_PID}) if(defined($hash->{helper}{RUNNING_PID}));<br />
<br />
return undef;<br />
}<br />
<br />
= Module, die Blocking.pm verwenden =<br />
<br />
Folgende Module verwenden aktuell Blocking.pm um langwierige Funktionalitäten auszulagern:<br />
<br />
* '''10_pilight_ctrl.pm'''<br />
* '''23_KOSTALPIKO.pm'''<br />
* '''23_LUXTRONIK2.pm'''<br />
* '''38_JawboneUp.pm'''<br />
* '''42_SYSMON.pm'''<br />
* '''55_GDS.pm'''<br />
* '''59_OPENWEATHER.pm'''<br />
* '''59_PROPLANTA.pm'''<br />
* '''70_EFR.pm'''<br />
* '''70_JSONMETER.pm'''<br />
* '''70_Jabber.pm'''<br />
* '''70_SML.pm'''<br />
* '''72_FRITZBOX.pm'''<br />
* '''73_MPD.pm'''<br />
* '''73_PRESENCE.pm''' (siehe dazu [[Anwesenheitserkennung]])<br />
* '''93_DbRep.pm'''<br />
* '''98_HMinfo.pm'''<br />
* '''98_Text2Speech.pm'''<br />
* '''98_UbiquitiMP.pm'''<br />
* '''98_WOL.pm'''<br />
* '''98_update.pm'''<br />
<br />
[[Kategorie:Development]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=15928HM-CFG-LAN LAN Konfigurations-Adapter2016-07-26T21:48:26Z<p>Nobby1805: /* Vorbereitung */ neuer Link zeigte auf dir V 1.520 und nicht auf die V 1.512</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-CFG-LAN.jpg<br />
|Bildbeschreibung=HM-CFG-LAN, Draufsicht und Seitenansicht<br />
|HWProtocol=HomeMatic<br />
|HWType=[[Interface]]<br />
|HWCategory=<br />
|HWComm=868,3&nbsp;MHz<br />
|HWChannels=n/a<br />
|HWVoltage=7,5&nbsp;VDC<br />
|HWPowerConsumption=ca.&nbsp;100&nbsp;mA<br />
|HWPoweredBy=Steckernetzteil<br />
|HWSize=100x30mm (ø&nbsp;x&nbsp;H)<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#HMLAN 00_HMLAN.pm]<br />
|ModOwner={{Link2FU|251|Martin / martinp876}}<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
Der [[HM-CFG-LAN LAN Konfigurations-Adapter]] ([http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/hm-cfg-lan.html HM-CFG-LAN]), kurz HMLAN Konfigurator, ist ein [[Interface|Schnittstellengerät]] (IO) ohne wesentliche Intelligenz. Die Aufgabe ist, ein Interface von der Zentrale zu den Geräten bereitzustellen. Ein HMLAN Konfigurator selbst steuert keine Geräte, er überträgt nur Nachrichten in beide Richtungen.<br />
<br />
== Alternativen ==<br />
Alternativen zu einem HMLAN Konfigurator sind [[HM-CFG-USB USB Konfigurations-Adapter]], [[CUN]], [[CUNO]] und [[CUL]].<br />
<br />
;HMUSB<br />
:Ein HMUSB hat nahezu identische Eigenschaften wie ein HMLAN Konfigurator. Der wesentliche Unterschied ist die Anbindung über USB anstatt Ethernet. Es hat sich erwiesen, dass USB eine bessere Latenz hat als LAN - also eine kürzere Verzögerung. Damit hat ein HMUSB leichte Vorteile zu HMLAN Konfigurator, was aber in den bei Weitem meisten Fällen durch die interne Timing Kalkulation abgefangen wird. Zudem können über den HMUSB (ab Version 2) auch Firmware-Updates OTA (over-the-air, also per Funkverbindung) auf entsprechende HM-Geräte (z.B. den HM-CC-RT-DN) durchgeführt werden.<br />
:Dafür bietet der HMLAN Konfigurator mit seinem Netzwerkanschluss Vorteile bei der Platzierung und bei der Ansteuerung (teilweise Timing-Probleme beim Anschluss von USB-Geräten an langsamere Raspberries und beim Durchschleifen von USB an fhem in einer virtuellen Maschine).<br />
<br />
; CUL/CUN(O)<br />
* Die Devices liefern keine eigenen Zeitstempel, wodurch eine Timingkorrektur durch FHEM nicht möglich ist. Je nach Systemgeschwindigkeit kann dies zu Problemen, Nachrichtenwiederholung und ggf. auch Nachrichtenverlust führen<br />
* Da USB kurze Reaktionszeiten und geringe Timingschwankungen hat ist der Einsatz von [[CUL]] und [[CUNO]] mit HM möglich. <br>Die Timingschwankungen der Ethernet-schnittstelle hingegen können in FHEM nicht ausgeglichen werden. Daher kann der Einsatz der [[CUNO]] über Ethernet '''nicht empfohlen''' werden.<br />
* Der Übertragungsmodus ''lazyConfig'' wird nicht unterstützt<br />
<br />
== Funktionen ==<br />
=== AES ===<br />
siehe [[AES Encryption]].<br />
<br />
=== Übertragungsmodus ===<br />
Es werden alle HM-Modi unterstützt. Diese sind Always, Burst, Wakeup und Config. Weiter gibt es lazyConfig und conditionalBurst. Siehe [[HomeMatic]] für Details.<br />
<br />
=== KeepAlive ===<br />
Der HMLAN Konfigurator baut eine Verbindung zur Zentrale über das LAN Interface auf. Der HMLAN Konfigurator erwartet alle 30 Sekunden eine keep-alive Nachricht von der Zentrale. Sollte diese ausbleiben, baut der HMLAN Konfigurator die LAN-Verbindung ab. Das führt zu einem Disconnect, der in State gemeldet wird. Die Verbindung wird automatisch wieder aufgebaut. <br />
FHEM sendet den keep-alive alle 25 Sekunden, was einen 5 Sekunden Puffer einräumt. In Internals '''msgKeepAlive''' kann man sehen, wie hoch die maximale Verzögerung der Zentrale beim Senden war und wie viel Puffer (in Sekunden) noch verfügbar war. <br />
Die Wiederholrate von 25 Sekunden des keep-alive kann mit dem Attribut '''wdTimer''' reduziert werden, was den Puffer erhöhen. Es wird jedoch dringend geraten, im Problemfall die Ursache der Verzögerung zu suchen und zu eliminieren.<br />
<br />
=== Nachrichtenübertragung - Performance ===<br />
* Mit Internal ''msgParseDly'' kann man ablesen, welche Verzögerung eine Nachricht vom Empfang im HMLAN Konfigurator bis zur Verarbeitung in der Zentrale hat.<br />
* Der HMLAN Konfigurator hält sich an den Funkstandard, der einem Sender maximal 36 Sekunden Sendezeit je Stunde erlaubt. Wird dieser Wert überschritten, stellt der HMLAN Konfigurator das Senden ein. Empfangen wird weiter. Ist eine Nutzung des Zeitslots zu 90% erreicht, wird im Reading ''cond'' ''Warning-HighLoad'' gemeldet. Bei cond ''ERROR-Overload'' wird das Senden eingestellt.<br />
<br />
=== Loggen/Mitschneiden ===<br />
Es stehen die üblichen Funktionen des Attribute [[verbose]] zu Verfügung. Darüber hinaus gibt es die Attribute ''hmProtocolEvents'' und ''logIDs''. Siehe auch [[Homematic Nachrichten sniffen]].<br />
<br />
== Vorbereitung ==<br />
{{Randnotiz|RNText='''"Usersoftware"/Firmware'''<br />
* V1.512 / 19.12.2013 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_512.zip Download]<br />
* V1.515 / 12.08.2014 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_515.zip Download]<br />
* V1.520 / 10.12.2015 / [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Download]<br />
'''Firmware Update Tool / Firmware / Datum'''<br />
* V1.2 / 0.965 / 11.02.2016 / [http://www.eq-3.de/Downloads/Software/Firmware%20Update%20Tool/HM-Firmware-Update-Tool_V1_2_eQ-3_160211.zip Download]<br />
<br />
}}<br />
[[Datei:HMLAN_CONFIG_IP_AES.png|300px|thumb|right|HomeMatic Lan-Interface Configurator]][[Datei:HMLAN_CONFIG_AES.png|300px|thumb|right|HomeMatic Konfigurator]]<br />
Bevor man den HMLAN mit Fhem nutzen kann, müssen noch Einstellungen vorgenommen werden. Dazu braucht man Software die bei [http://www.eq-3.de/software.html HomeMatic] in der Version 1.512 (Stand 19. Dezember 2013) herunter zu laden ist und nach der Installation mit der Verknüpfung "HomeMatic-Lan-Interface konfigurieren" oder "HomeMatic-Komponenten konfigurieren" gestartet wird und unter Windows läuft. Für andere Betriebssystem (siehe Anhang im Beitrag {{Link2Forum|Topic=11506|Message=67417|LinkText=Anleitung für OS X}}) braucht man eine Windows-Emulation. Dem HMLAN liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das richtige zu verwenden. Wenn das Konfigurationsprogramm den HMLAN-Konfigurator nicht findet, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe {{Link2Forum|Topic=10933|Message=62960|LinkText=Beitrag im Fhem Forum}} und [[HM-CFG-LAN_LAN_Konfigurations-Adapter#Bekannte_Probleme|bekannte Probleme]].<br />
<br />
=== Firmware ===<br />
Die aktuelle Firmware Version des HMLAN Konfigurators ist 0.965 (Stand Februar 2016). Ein Update ist mit dem ''"Firmware Update Tool"'' möglich, die Firmware ist Bestandteil des Tools.<br />
<br />
Um einen mit Fhem benutzten HM-LAN zu aktualisieren, reicht es,<br />
# im HMLAN-Device mit <code>attr <myHMLAN> dummy 1</code> den Adapter vorübergehend zu deaktivieren,<br />
# mit dem (Windows) Firmware Update Tool die Firmware auf den HM-LAN aufzuspielen<br />
# nach dem Stoppen des Update Tools mit <code>deleteattr <myHMLAN> dummy</code> das Device in Fhem wieder zu aktivieren.<br />
Version 1.2 des Firmware Update Tools läuft auch unter Windows 10.<br />
<br />
=== IP Adresse ===<br />
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Servers von diesem eine IP-Adresse. Da Fhem zwecks Kommunikation die IP-Adresse wissen muss, ist es sinnvoll, dem HMLAN Konfigurator eine statische Adresse zuzuweisen. <br />
* mit der auf der CD mitgelieferten ''"HomeMatic Lan-Interface Configurator"'' Software unter ''"Change IP Settings"'' oder<br />
* im DHCP-Server eine feste IP-Adresse zuzuweisen (sofern dies vom gegeben DHCP Server als Konfigurationsoption unterstützt wird).<br />
<br />
=== AES Encryptet LAN Communication ===<br />
Wichtig ist, dass vor Verwendung die "AES Encryptet LAN Communication" abgeschaltet wird, da diese von FHEM nicht unterstützt wird. Dies ist unter ''"Change IP Settings"'' der ''"HomeMatic Lan-Interface Configurator"'' Software möglich. AES auf dem LAN ist zu unterscheiden von HMLAN auf der Funktschnittstelle. siehe [[AES Encryption]].<br />
<br />
== Einbindung in FHEM ==<br />
Der HMLAN-Konfigurator muss in FHEM [[Konfiguration|konfiguriert]] werden. Das erfolgt mit diesen Befehlen:<br />
:<code>define HMLAN1 HMLAN <IP Adresse>:1000</code><br />
:<code>attr HMLAN1 hmId 123ABC</code><br />
Der Name (im obigen Beispiel ''HMLAN1'') kann frei vergeben werden. Standard IP-Port des HMLAN-Konfigurators ist 1000.<br />
<br />
HMLAN kennt mehrere Attribute ([http://fhem.de/commandref.html#HMLAN commandref]). <br />
Wichtig ist es, die '''hmId''' zu vergeben. Diese ist ein 3-Byte hexadezimal-Wert, somit eine 6-stellige Zeichenfolge in '''Großbuchstaben'''. 000000 und FFFFFF sind ungültig. <br />
Wenn HM-Geräte mit der Zentrale [[Pairing (HomeMatic)|gepairt]] werden, wird ihnen diese hmId eingetragen. Wechselt man die hmId müssen '''alle''' damit gepairten Geräte neu gepairt werden. <br />
<br />
Die Adresse wird in Grossbuchstaben eingegeben, siehe [[HMLAN_Konfigurator#Bekannte_Probleme|"Bekannte Probleme"]].<br />
<br />
Ein '''gleichzeitiger''' Zugriff von Fhem und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine Verbindung zulässt. Wollen Sie temporär z.B. mit der Windows-Software von HomeMatic zugreifen, ist Fhem zu deaktivieren.<br />
Sinnvoll ist es, die hmId mit der der PC-Software gleichzusetzen. Dann kann man von beiden Zentralen alternativ zugreifen ohne pairen zu müssen.<br />
<br />
=== Nutzung mehrere IOs ===<br />
==== Empfangen ====<br />
Man kann an einem FHEM mehrere IOs (HMLAN/USB, CUL/CUNO) betreiben. Generell empfangen alle IOs von allen Geräten in ihrem Empfangsbereich - unabhängig von der hmId. <br />
<br />
==== Senden ====<br />
An ein Gerät wird nur über das IO gesendet, das in Internals->IODev angezeigt wird. Nutzt man mehrere IOs sollte im HM Device das Attribut IODev auf das gewünschte IO setzen. Ansonsten sucht FHEM zufällig ein IO aus.<br />
<br />
==== hmId bei mehreren IOs ====<br />
Man kann allen IOs die gleiche HMId setzen. Das erlaubt die wahlfreie Umschaltung des Sende-IOs für das Device. Sollte man unterschiedliche hmIds wählen simuliert dies mehrere Zentralen. Das Device, an das man sendet, muss über ein IO angesprochen werden, mit einer hmId auf die das Device gepairt ist. <br />
<br />
<br />
=== Virtueller Controller VCCU ===<br />
Speziell wenn mehrere IOs verwendet werden sollen, empfiehlt sich die Verwendung einer [[Virtueller Controller VCCU|VCCU]], da ein redundante Nutzung mehrerer Schnittstellen dann wesentlich einfacher einzurichten ist. Das Einrichten einer VCCU lohnt sich aber schon bei der Benutzung nur eines HomeMatic I/O, also wenn man z.b. nur einen HMLAN Konfigurator einsetzen will. Zum Einen ist es wesentlich einfacher ggf. später weitere Schnittstellen dazu zu konfigurieren, zum Anderen adressiert die VCCU die auch bereits bei einer Schnittstelle auftauchende Probleme wie die "<code>Unknown code</code>" Meldungen im Log.<br />
<br />
Die Einrichtung einer VCCU ist nicht sehr aufwändig und wird dringend empfohlen.<br />
<br />
=== Attribute ===<br />
* '''hmId''': Adresse, die das IO auf der Funkstrecke nutzt. Es ist ein 3-byte hexwert (6 Zeichen) in Großbuchstaben. <br />
* '''hmkey, hmkey2..5''': bis zu 5 AES keys, die auf der Funkstrecke genutzt werden. Siehe [[AES Encryption]]<br />
* '''hmLanQlen''' legt fest, wie viele Nachrichten parallel gesendet werden dürfen, also auf wie viele Antworten die Zentrale parallel warten darf. Ein Wert von 1 ist max defensiv, erzeugt aber eine höhere Verzögerung. Wählt man einen höheren Wert kann es zu Nachrichten-Wiederholunge kommen. <br />
* '''hmProtocolEvents''': alle Nachrichten werden dekodiert ausgegeben. Diese Einstellung benötigt einige Performance insbesondere bei höheren Level. Man sollte es vorsichtig nutzen. <br />
* '''logIDs''': zeichnet Rohmessages auf und bietet die genaueste Methode bei der Fehlersuche. Da Nachrichten undekodiert ausgegeben werden ist es im Wesentlichen für Spezialisten von Bedeutung. Man gibt eine Komma getrennte Liste von IDs an, die geloggt werden sollen. Mit '''all''' werden alle IDs aufgezeichnet. '''sys''' zeichnet zusätzlich Systemmessages auf. '''sys,all''' somit alles.<br />
* '''respTime''': Antwortzeit des HMLAN auf ein keep-alive kann hier eingestellt werden. Normalerweise sollte das HMLAN in einer Sekunde der Zentrale antworten. Sollte dies nicht passieren, wird die Message wiederholt. Der Wert sollte nur in Ausnahmefällen verändert werden.<br />
<br />
=== Readings ===<br />
* '''Xmit-Events''': Anzahl der Ereignisse <br />
* '''cond''': aktueller Zustand des IO. <br />
** ok<br />
** Warning-HighLoad: 90% der 1h sendekapazität sind erreicht<br />
** ERROR-Overload: 100% der sendekapazität sind erreicht, '''das IO sendet nicht mehr'''<br />
** timeout<br />
** disconnected: die Verbindung FHEM /IO ist unterbrochen<br />
** Overload-released: das IO ist aus ERROR-Overload zurück im Sendebetrieb<br />
** init: Das IO wurde neu initialisiert. <br />
* '''prot_ERROR-Overload''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_Warning-HighLoad''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_disconnected''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_init''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_ok''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_timeout''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
<br />
=== Internals ===<br />
* '''XmitOpen''': 1 = HMLAN ist sende bereit<br />
* '''assignedIDs''': HMIDs der HM Devices, die über dieses IO bedient werden<br />
* '''assignedIDsCnt''': Anzahl der zugewiesenen HMIds von FHEM<br />
* '''assignedIDsReport''': Anzahl der HMIds, die das HMLAN angibt zu bedienen. Die Zahl sollte identisch sein mit assignedIDsCnt<br />
* '''msgKeepAlive''': dlyMax: maximale Verzögerung, die ein keep-alive hatte. bufferMin: der minimale Zeitpuffer, der übrig blieb, bis das keep-alive zu spät gekommen wäre. Der Puffer sollte 2 oder größer sein, sonst könnte man gelegentlich disconnects bekommen. <br />
* '''msgLoadEst''': Funkbelastung des HMLAN. Der Wert wird über 1 Stunde akkumuliert. Sollten 100% erreicht sein, wird das HMLAN den Sendebetrieb einstellen. Der Wert ist eine Hochrechnung in FHEM. Es ist möglich, dass das HMLAN mehr belastet ist. Die 10 min werte zeigen die Belastung in den letzten 10min Perioden an.<br />
* '''msgParseDly''': Verzögerung der Message Verarbeitung vom Empfang im IO bis zur Verarbeitung in FHEM. Eine Verzögerung kann durch Prozesse an LAN, durch FHEM Prozesse oder sonstige Prozesse/Applikationen der CPU hervorgerufen werden.<br />
<br />
== Pairen von Geräten ==<br />
Jedes HM Gerät muss vor Verwendung mit der HM-Zentrale [[Pairing (HomeMatic)|gepairt]] werden. Dabei wird die hmId des gewählten IOs in das Device programmiert. Ändert man die hmId des IO, mit man das Device anspricht, muss man das Device neu pairen. <br />
Alle Geräte haben eine eigene Seriennummer, die nicht änderbar ist. Details zum Pairen auf der Seite [[HomeMatic Devices pairen]].<br />
<br />
== Bekannte Probleme ==<br />
=== Verbindung wird abgelehnt ===<br />
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreiem Betrieb die Verbindung ab:<br />
<pre style="width:400px;"><br />
Opening HMLAN1 device 192.168.168.60:1000<br />
192.168.168.60:1000 connection refused<br />
</pre><br />
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder Fhem) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurators, selbst wenn die installierte Version aktuell ist.<br />
<br />
Wenn das Konfigurationsprogramm Probleme hat, den HM-CFG-LAN LAN Konfigurations-Adapter zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden. Vereinzelt gibt es Hinweise darauf, dass es unter Windows 7 eventuell nicht reicht, die Netzwerkverbindungen im "Netzwerk- und Freigabecenter" zu deaktivieren, sondern ein Deaktivierung der Netzwerkadapter im Gerätemanager erforderlich ist.<br />
<br />
=== Häufiger automatischer Neustart ("Reboot") ===<br />
Der HMLAN Adapter startet ohne erkennbaren äußeren Anlass häufig neu. Das Problem ist auch im Forum unter der Überschrift {{Link2Forum|Topic=20776|LinkText=HMLAN Adapter wechselt permanent zwischen disconnected / connected}} beschrieben. Im FHEM Log erscheinen in diesem Fall folgende Meldungen:<br />
<pre style="width:600px;"><br />
... HMLAN_Parse: myHMLAN new condition timeout (je nach Timing, manchmal)<br />
... HMLanHostname:1000 disconnected, waiting to reappear (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition disconnected<br />
... HMLanHostname:1000 reappeared (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition init<br />
... HMLAN_Parse: myHMLAN new condition ok<br />
</pre><br />
Dieses Problem ist bei ELV [http://www.elv.de/topic/hm-lan-reboots.html bekannt] und soll mit der [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Konfigurationsadapter LAN Usersoftware V1.520 (10.12.2015)], bzw. der darin enthaltenen Firmware Version, behoben sein. Stand 11.12.2015 18:17 ist es noch niemanden gelungen die neue Firmware zu aktivieren oder die Versionsnummer der Firmware (0.964) wurde nicht verändert, es läuft z.Zt. eine Anfrage ob das Paket überhaupt die neue Firmware enthält.<br />
<br />
== Verbesserung der Antennenleistung ==<br />
Die Sende- und Empfangsleistung kann man verbessern. Details [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|hier]].<br />
<br />
== Wechsel von CUL zu HMLAN ==<br />
{{Randnotiz|RNTyp=y|RNText=Der hier beschriebene Wechsel sollte mittlerweile einfacher über die [[Virtueller Controller VCCU|VCCU]] realisierbar sein, indem erst ein weiteres IO-Device hinzugefügt und anschließend das zu ersetzende entfernt wird.}}<br />
Sollten ein [[CUL]] als IO für Homematic-Geräte dienen und ein Wechsel auf den HMLAN Konfigurator geplant sein, kann die folgende Vorgehensweise gewählt werden:<br />
<br />
* deaktivieren Sie das CUL in der ''fhem.cfg''.<br />
* konfigurieren Sie den HMLAN Konfigurator '''von Hand''' <br />
* Ändern sie das Attribut IODev aller HM-Devices vom Namen der CUL auf den Namen des HMLAN<br />
* sollte sie das Attribut IODev nicht nutzen (nicht empfohlen) achten sie darauf, dass im fhem.cfg das IO vor allen HM-devices definiert wird. Eine automatischen Zuweisung des IO zu den Devices ist sonst nicht möglich. <br />
** der HMLAN '''muss''' die gleiche ''hmId'' wie das bisherige CUL erhalten. Ansonsten müssen alle Geräte neu gepairt / angelernt werden.<br />
** AES muss im HMLAN abgeschaltet werden.<br />
* verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.<br />
* geben Sie in der FHEM-Befehlszeile ''shutdown restart'' gefolgt von &lt;Enter&gt; (nicht "save") ein (evtl. reicht auch ein ''rereadcfg'').<br />
* kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von Fhem die Kommunikation.<br />
<br />
Bitte beachten: Falls dem CUL keine explizite hmId per Attribut zugewiesen wurde, wird diese ID aus "F1&lt;FHT-ID&gt;" zusammengebaut. Die hmId muss auf dem HMLAN explizit gesetzt werden.<br />
<br />
== Links ==<br />
* [http://www.elv.de/homematic-lan-konfigurations-adapter.html Produktseite] bei ELV<br />
* [http://www.eq-3.de/software.html Software] für den Konfigurationsadapter von der eQ-3 Site<br />
* [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|HM LAN Konfig-Adapter Antenne verbessern]]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Interfaces]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-SEC-SD_Rauchmelder&diff=15866HM-SEC-SD Rauchmelder2016-07-21T09:24:53Z<p>Nobby1805: /* Links */ aktualisiert</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-SEC-SD o.jpeg <!-- HM-SEC-SD o.jpeg --><br />
|Bildbeschreibung=HomeMatic HM-SEC-SD Rauchmelder Oberseite<br />
|HWProtocol=HomeMatic<br />
|HWType=Aktor<br />
|HWCategory=HomeMatic<br />
|HWComm=868MHz<br />
|HWChannels=<br />
|HWVoltage=9V<br />
|HWPowerConsumption= W im Standby<br />
|HWPoweredBy=3 x 1,5 V LR6/AA<br />
|HWSize=120x44mm<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
== Features ==<br />
Der [[HM-SEC-SD Rauchmelder|HM-SEC-SD]] ist ein VdS-zertifizierter Rauchmelder. Mehrere Rauchmelder können unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden. Auch ohne FHEM-Zentrale meldet ein Rauchmelder seinen Alarm immer an die anderen vernetzten Rauchmelder weiter.<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
Der HM-SEC-SD Rauchmelder beherrscht kein AES. Der Betrieb ist mit [[HMLAN Konfigurator]] oder mit [[CUL]] möglich. Das Pairing sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.<br />
<br />
=== Teams ===<br />
Rauchmelder können/sollen in Teams gruppiert werden. Jeder SD kann einem Team angehören - und das sollte man auch einrichten. Nutzt man nur einen SD sollte man diesen mit sich selbst Teamen.<br />
<br />
Beispiele:<br />
nutzt man einen SD und will diesen nicht mit anderen in einem team haben peert man ihn mit sich selbst. Damit ist der SD sein eigener TeamLead. <br />
:<code>set Rauchmelder_Flur peerChan 0 Rauchmelder_Flur single set actor</code><br />
<br />
Hat man mehrere SDs, die in einem Team zusammengefasst werden sollen, wird der TeamLead festgelegt und alle SDs werden mit ihm gepeert. Das Team kann jederzeit erweitert werden. <br />
<pre>set Rauchmelder_Flur peerChan 0 Rauchmelder_Flur single set actor <br />
set Rauchmelder_Flur peerChan 0 Rauchmelder_WZ single set actor <br />
set Rauchmelder_Flur peerChan 0 Rauchmelder_SZ single set actor <br />
set Rauchmelder_Flur peerChan 0 Rauchmelder_KZ single set actor </pre><br />
<br />
Nutzt man einen virtuellen TeamLead - (siehe [[#virtueller TeamLead|virtueller TeamLead]]) - werden alle realen SDs mit diesem gepeert<br />
<pre>set Rauchmelder_Team peerChan 0 Rauchmelder_Flur single set actor<br />
set Rauchmelder_Team peerChan 0 Rauchmelder_WZ single set actor<br />
set Rauchmelder_Team peerChan 0 Rauchmelder_SZ single set actor<br />
set Rauchmelder_Team peerChan 0 Rauchmelder_KZ single set actor<br />
</pre><br />
<br />
Ein SD kann aus einem Team mittels unset entfernt werden.<br />
:<code>set Rauchmelder_Flur peerChan 0 Rauchmelder_Flur single unset actor </code><br />
<br />
Um einen SD von einem Team in ein anderes zu transferieren, muss man ihn erst mit ''unset'' aus dem Team entfernen, dann mit ''set'' in das neue Team eintragen. Einen physkalischen TeamLead kann man nur aus dem Team nehmen, indem man ihn aus allen Teammitgliedern entfernt. <br />
<br />
Die korrekte Gruppierung sollte nach der Konfiguration durch einen teamCall geprüft werden.<br />
<br />
Der Betrieb mehrer Teams ist möglich, ein SD kann aber nur einem Team angehören. Will man einen SD von einem Team in ein anderes umhängen, muss man ihn erst aus dem ersten Team entfernen und dann in das Neue aufnehmen.<br />
<br />
=== TeamLead ===<br />
Für ein Team muss immer ein TeamLead festgelegt werden. Anders als der Name suggeriert, gibt es hier keinen Master. Sinn und Zweck ist einzig, eine Team-Adresse (HMId) festzulegen, unter der man alle SDs eines Teams ansprechen kann. Diese muss, wie alle HMIds, einzig im System sein. Um dies zu erreichen, verwendet HM beim Teamen ohne Zentrale die HMId eines der SDs. Verwendet man eine Zentrale (FHEM) kann man dies auch entzerren und einen virtuellen SD als TeamLead nutzen. Siehe hierzu [[#virtueller TeamLead|virtueller TeamLead]].<br />
<br />
Nutzt man nur einen einzelnen SD, sollte man diesen mit sich selbst teamen.<br />
<br />
=== Kommandos ===<br />
Es gibt Team-Nachrichten, die jeder SD senden kann und auf die jeder SD im Team reagiert. Jeder SD kann somit einen teamcall auslösen oder einen Alarm ausgeben. Die Kommandos werden '''nicht''' von einem SD zum anderen weitergereicht. Auch der TeamLead hat '''keine''' Sonderfunktion. Der einzelne SD sendet seine Nachricht an das Team und jeder im Team reagiert darauf.<br />
<br />
Es ist somit darauf zu achten, dass auch die entferntesten SDs sich gegenseitig erreichen können.<br />
<br />
Die Kommandos können von der Zentrale getriggert werden. Da sie unter der TeamId gesendet werden, stehen sie nur bei der Komponente des TeamLeads zu Verfügung.<br />
<br />
Dazu gehören teamCall, alarmOn und alarmOff.<br />
<br />
Sie stehen nur für die Entity des TeamLeads zu Verfügung.<br />
<pre>set EurerTeamLeader alarmOn<br />
set EurerTeamLeader alarmOff<br />
set EurerTeamLeader teamCall</pre><br />
<br />
'''teamCall''' testet die Zugehörigkeit und Erreichbarkeit aller SDs im Team. Alle SDs sollten 10 mal leise piepen.<br />
<br />
Einzelne SDs kann man mit "statusRequest" abfragen.<br />
<br />
== virtueller TeamLead ==<br />
Nutzt man nur einen einzelnen SD, kann/sollte man diesen mit sich selbst teamen (peerChan). In allen andere Fällen braucht man einen TeamLead um eine team-ID zu erhalten. Man kann hierzu einen der SDs nutzen. Wird dieser einmal ausgewechselt, hat man allerdings seine team-ID verloren.<br />
<br />
Wenn man mit Zentrale (FHEM) arbeitet, gibt es eigentlich keinen vernünftigen Grund (ausser 1-SD-Teams), einen der SDs als lead zu nutzen. Man kann genauso gut einen virtuellen Aktor bauen und diesen zum Lead machen. Das ergibt eine sauberere Struktur.<br />
<br />
Erzeugen eines virtuellen TeamLeads könnte so aussehen:<br />
<pre>define TeamDev CUL_HM 111111 <br />
set TeamDev virtual 1<br />
rename TeamDev_Btn1 Rauchmelder_Team</pre><br />
<br />
Bitte beachten: '''die HMID muss für die gesamte Installation einmalig sein'''.<br />
<br />
Anschließend muss man noch einen Homematic-Kanal für das Peering definieren.<br />
<br />
Jeder Rauchmelder muss jetzt in das Team aufgenommen werden:<br />
<pre>set Rauchmelder_Team peerChan 0 Rauchmelder_Flur single set actor<br />
set Rauchmelder_Team peerChan 0 Rauchmelder_WZ single set actor<br />
...<br />
save</pre><br />
<br />
Hierbei ist "Rauchmelder_Team" der Name des virtuellen TeamLeaders und "Rauchmelder_Flur" der Name des jeweiligen Rauchmelders.<br />
<br />
Das "save" ist notwendig, um auch die Einstellungen des virtuellen SDs in der [[Konfiguration]] zu sichern.<br />
<br />
Bei jedem Rauchmelder sollte der Name des virtuellen TeamLeaders in der peerList stehen und beim virtuellen TeamLeader jeder Rauchmelder.<br />
<br />
Mit teamCall sollte man die korrekte Funktion des Teams prüfen, wer will auch mit alarmOn.<br />
<br />
== Variablen ==<br />
=== Internals ===<br />
Keine Spezifischen.<br />
<br />
=== Readings ===<br />
Für '''jeden''' SD sind folgende Readings relevant:<br />
<br />
teamCall from <name>:<count><br />
state:[off|smoke-Alarm_<count>]<br />
smoke_detect:<von_name><br />
battery:[ok|low]<br />
level:<0..200><br />
<br />
*'''count''' ist ein Zähler, den das Gerät liefert um neue Alarme unterscheiden zu können<br />
*'''level''' ist ein Wert zwischen 0 und 200. 200 ist Alarm, 199 bedeutet Alarm, aber die Sirene ist abgeschaltet.<br />
<br />
Beim '''TeamLead''' laufen alle Alarme auf<br />
<br />
teamCall: from <name>:<count><br />
recentAlarm:<von_name><br />
level:<0..200><br />
eventNo:<count><br />
state:[off|smoke-Alarm_<count>]<br />
smoke_detect:<von_name><br />
SDteam:[add_<name>|remove_<name>]<br />
<br />
*'''von_name''' ist der Name des SD, der gemeldet hat. <br />
*'''smoke_detect''' ist der aktuelle Alarm, während '''recentAlarm''' die letzte Alarmquelle anzeigt, auch wenn der Alarm schon behoben ist.<br />
*'''SDteam''' kommt gelegentlich bei Konfigurationsereignissen zum Tragen.<br />
<br />
=== Attribute ===<br />
besondere Attribute<br />
* '''msgRepeat''' sollte auf 1 stehen. SD ist ein burst device, wiederholen von Nachrichten belastet das HMLAN besonders. Die Team-kommandos sind hiervon nicht beeinflusst, also auch nicht das Auslösen eines Alarms. <br />
* '''actCycle''' wird auf 99 Stunden gesetzt. Ein SD meldet sich alle 3 Tage bei der Zentrale, was der ActionDetector prüft.<br />
* '''msgRepeat''' 1<br />
Allgemein vorgeschlagen<br />
:'''IODev''' [HMLAN/HMUSB/CUL]<br />
:'''autoReadReg''' 5_readMissing<br />
:'''event-on-change-reading''' .*<br />
Optional, nur als Anregung zu verstehen<br />
:'''devStateIcon''' off:general_ok *:secur_alarm<br />
:'''group''' smokeDetect<br />
:'''icon''' secur_smoke_detector<br />
<br />
== Alarme ==<br />
Meldet ein SD einen Alarm, wird dieser in dem SD und im TeamLead angezeigt.<br />
<br />
Nutzt man [[HomeMatic HMInfo|HMinfo]], wird ein Rauchalarm auch hier als "Error" gemeldet. In HMinfo wird dies für alle SD-teams im System gemacht.<br />
<br />
== Nützliche Notifies ==<br />
Codefragmente, die man einsetzen kann. Ggf. muss man etwas anpassen, zumindest können sie als Anregung nützlich sein. <br />
* Bei Alarm email schicken und Licht im Flur anschalten<br />
<pre><br />
define sd.nf.report notify sdTeam:.*smoke-Alarm.* {\<br />
<Mail versenden>;;<br />
fhem("set LichtTreppenhaus on");;<br />
}\<br />
</pre><br />
<br />
* Bei Alarm alle SDs des Team stumm schalten durch stumm Schalten eines einzelnen<br />
:<code>define sd.nf.quiet notify sdTeam:.*level:.199 set sdTeam alarmOff</code><br />
<br />
== Links ==<br />
* [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-Sec-SD_GE_UM_V1.5_150407.pdf Anleitung (PDF)]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Rauchmelder]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&diff=15813HM-Sec-SCo Tür-Fensterkontakt, optisch2016-07-11T10:30:27Z<p>Nobby1805: /* Links */ Fix eQ-3 Adressen</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-SEC-SCo.jpg<br />
|Bildbeschreibung=HomeMatic Tür-Fensterkontakt, optisch<br />
|HWProtocol=HomeMatic<br />
|HWType=Sensor<br />
|HWCategory=HomeMatic<br />
|HWComm=868MHz<br />
|HWChannels=1<br />
|HWVoltage=1,5 V DC<br />
|HWPowerConsumption=max. 100 mA<br />
|HWPoweredBy=Batterie (1x 1,5V LR03/Micro/AAA)<br />
|HWSize=15x100x18mm<br />
|HWDeviceFHEM=[[CUL_HM]]<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
== Features ==<br />
[[HomeMatic]] Funk-Tür-/Fensterkontakt zur optischen Erkennung von Tür- bzw. Fensteröffnungen oder -schließungen, z.B. zur Sicherheit oder um automatisch, bei vorhandenem [[HM-CC-RT-DN]], die Heizung herunter zu regeln, sobald ein Fenster oder eine Tür geöffnet wird.<br />
<br />
== Hinweis ==<br />
Das meiste zum [[HM-SEC-SC Tür-Fensterkontakt|HM-SEC-SC]] Beschriebene zur Nutzung gilt auch für den HM-Sec-SCo.<br />
<br />
Wird mit aktiviertem [[AES Encryption|AES]] ausgeliefert und kann nur mit Gateways, die AES unterstützen, gepaired werden ([[HM-CFG-USB USB Konfigurations-Adapter|HM-LAN-CFG]], [[HM-CFG-LAN LAN Konfigurations-Adapter|HM-USB-CFG]] und [[CUL]] (seit Juli 2015)).<br />
<br />
Mindestens bei Benutzung mit einem CUL (vermutlich auch via HM-CFG-USB und HM-CFG-LAN) muss FHEM auf das Perl-Modul Crypt::Rijndael zugreifen können. Wenn es nicht zur Verfügung steht, bleibt das Pairing unvollständig. Siehe auch [[AES_Encryption#IO <-> Gerät|den Abschnitt über AES-Encryption zwischen IO-Device und Gerät]].<br />
<br />
== Betrieb mit FHEM ==<br />
=== Event-Monitor ===<br />
Wird z. B. das Fenster geöffnet, wird Folgendes vom Gerät übermittelt:<br />
<pre><br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG trigger_cnt: 11<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG trigDst_2573FB: noConfig<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG battery: ok<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG open<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG contact: open (to MyHMLAN)<br />
</pre><br />
<br />
Beim Schließen wird Folgendes übermittelt:<br />
<pre><br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG trigger_cnt: 12<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG trigDst_2573FB: noConfig<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG battery: ok<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG closed<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG contact: closed (to MyHMLAN)<br />
</pre><br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText='''Info zum Bausatz'''<br />
Das Gerät ist als Bausatz verfügbar, es sind nur<br />
* das Funkmodul mit einer 8-poligen Stiftleiste<br />
* der Batteriekontakt (Minuspol) mit einem kurzen Drahtstück<br />
[[Datei:HM-Sec-SCo_Basisplatine.jpg|mini|250px|Markiert: Antennendurchführung (1), Batterieanschluss (2), sehr schmaler Platinensteg (3)]]<br />
an der Basisplatine anzulöten.<br />
Zu beachten ist noch, dass die Antenne '''vor''' dem Auflöten des Funkmoduls durch das markierte Loch der Basisplatine geführt werden muss.<br />
<br />
Die fertig montierte Platine muss sich leicht in das Gehäuse einsetzen lassen, anderenfalls wird der schmale Platinensteg u.U. zu stark belastet und kann brechen!<br />
'''Bauzeit''': <&nbsp;15&nbsp;Minuten<br />
}}<br />
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen beim Pairen selbstständig erstellt.<br />
<br />
<pre><br />
define HM_Fensterstatus_BadEG CUL_HM 35E390<br />
attr HM_Fensterstatus_BadEG IODev MyHMLAN<br />
attr HM_Fensterstatus_BadEG actCycle 000:50<br />
attr HM_Fensterstatus_BadEG actStatus dead<br />
attr HM_Fensterstatus_BadEG autoReadReg 4_reqStatus<br />
attr HM_Fensterstatus_BadEG expert 2_full<br />
attr HM_Fensterstatus_BadEG firmware 1.0<br />
attr HM_Fensterstatus_BadEG model HM-SEC-SCo<br />
attr HM_Fensterstatus_BadEG peerIDs 00000000,<br />
attr HM_Fensterstatus_BadEG room CUL_HM<br />
attr HM_Fensterstatus_BadEG serialNr LEQxxxxxxx<br />
attr HM_Fensterstatus_BadEG subType threeStateSensor<br />
</pre><br />
<br />
== Beispiele ==<br />
=== Aktionen durchführen, wenn Fenster zu lange geöffnet ist ===<br />
Mit der nachfolgenden [[DOIF]]-Definition wird ein [[FileLog|Log]]-Eintrag erzeugt, eine Meldung auf der [[Enigma2 Receiver (Dreambox, VUplus etc.) steuern|Dreambox]] angezeigt, falls diese angeschaltet ist, und eine Nachricht per Prowl (funktioniert vermutlich nur unter Linux) verschickt.<br />
<br />
Der Code ist hier so angegeben, wie er in der Weboberfläche nach einem Klick auf das [[Konfiguration|DEF-Feld]] übernommen werden kann. Das DOIF ist vorab zu definieren, zum Beispiel mit:<br />
:<code>def DOIF_FensterOffenMsg DOIF ([HM_Fensterstatus_BadEG])</code><br />
und kann dann anschließend in den Device-Details vervollständigt werden:<br />
<source lang="perl"><br />
([HM_Fensterstatus_BadEG] eq "open") ({<br />
Log 1, "Fenster seit mehr als 2 Stunden (7200 Sekunden) offen";;<br />
system( "/path/to/prowl.pl -apikeyfile=/path/to/prowl-apikey -event=Info -notification='Fenster ist noch offen' &" );;<br />
fhem( "set E2_Dreambox showText Fenster ist noch offen" ) if ReadingsVal("E2_Dreambox","state","") eq "on";;<br />
})<br />
DOELSE<br />
</source><br />
<br />
Damit der Code-Block erst nach 7200 Sekunden getriggert wird, ist noch Folgendes auszuführen:<br />
<br />
:<code>attr DOIF_FensterOffenMsg wait 7200:0</code><br />
<br />
=== Anzeige des Zeitpunkts der letzten Öffnung im STATE ===<br />
Das Reading ''contact'' beinhaltet die Zustände ''open'' und ''closed''. Und der Zeitstempel der Änderung wird regelmäßig aktualisiert. Aus diesem Grund fällt die Nutzung des Attributs ''showtime'' hier weg. Wenigstens, wenn man nicht den Zeitpunkt des letzten Auslesens wissen will, sondern den der letzten Öffnung.<br />
<br />
Folgende Schreibweise ermöglicht es, dass im STATE-Internal der Zeitpunkt des letzten ''open'' verbleibt (zum Übernehmen als Einzeler kopieren):<br />
:<code><nowiki>attr Sensor stateFormat {if (ReadingsVal("Sensor","contact","") =~ "open.*") {"open " . ReadingsTimestamp("Sensor","contact","")} else {InternalVal("Sensor","STATE","")}}</nowiki></code><br />
<br />
Ein Thread zu diesem Thema findet sich im Forum unter dem Titel {{Link2Forum|Topic=41347|LinkText=HM-SEC-SCo: Letzte Türöffnung im State anzeigen}}.<br />
<br />
== Bekannte Probleme ==<br />
Teilweise (siehe Diskussion im {{Link2Forum|Topic=33264|LinkText=Forum}}) werden die Fensterkontakte regelmäßig wiederkehrend als "dead" angezeigt. Grund ist, dass beim Anlernen ein actCycle von 50 Minuten eingetragen wird, während die Kontakte auch gerne mal länger brauchen, um sich bei der Zentrale zu melden.<br />
<pre style="width:500px;"><br />
2015-01-31_17:57:39 Fstr_AusgTerrasse alive: yes<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse battery: ok<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse sabotageError: off<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse closed<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse contact: closed (to HMLAN1)<br />
2015-01-31_18:54:09 Fstr_AusgTerrasse Activity: dead<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse alive: yes<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse battery: ok<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse sabotageError: off<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse closed<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse contact: closed (to HMUSB)<br />
2015-01-31_19:04:09 Fstr_AusgTerrasse Activity: alive<br />
</pre><br />
<br />
Um Abhilfe zu schaffen, den actCycle auf 01:05 setzen:<br />
:<code>attr <HM-SEC-SCo> actCycle 001:05</code><br />
<br />
Save config nicht vergessen.<br />
<br />
== Links ==<br />
* Anleitung [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-Sec-SCo_UM_GE_eQ-3_web.pdf PDF]<br />
* Datenblatt [http://www.eq-3.de/service/downloads.html?id=235&download=produkt&pid=1947 PDF] (der direkte Link auf das PDF klappt nicht, vermutlich wegen der Codierung des Umlautes :-( )<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Kontaktsensor (optisch)]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=15251HM-CFG-LAN LAN Konfigurations-Adapter2016-04-29T10:08:24Z<p>Nobby1805: /* Firmware */ dummy nach dem Update wieder löschen</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-CFG-LAN.jpg<br />
|Bildbeschreibung=HM-CFG-LAN, Draufsicht und Seitenansicht<br />
|HWProtocol=HomeMatic<br />
|HWType=[[Interface]]<br />
|HWCategory=<br />
|HWComm=868,3&nbsp;MHz<br />
|HWChannels=n/a<br />
|HWVoltage=7,5&nbsp;VDC<br />
|HWPowerConsumption=ca.&nbsp;100&nbsp;mA<br />
|HWPoweredBy=Steckernetzteil<br />
|HWSize=100x30mm (ø&nbsp;x&nbsp;H)<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#HMLAN 00_HMLAN.pm]<br />
|ModOwner={{Link2FU|251|Martin / martinp876}}<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
Der [[HM-CFG-LAN LAN Konfigurations-Adapter]] ([http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/hm-cfg-lan.html HM-CFG-LAN]), kurz HMLAN Konfigurator, ist ein [[Interface|Schnittstellengerät]] (IO) ohne wesentliche Intelligenz. Die Aufgabe ist, ein Interface von der Zentrale zu den Geräten bereitzustellen. Ein HMLAN Konfigurator selbst steuert keine Geräte, er überträgt nur Nachrichten in beide Richtungen.<br />
<br />
== Alternativen ==<br />
Alternativen zu einem HMLAN Konfigurator sind [[HM-CFG-USB USB Konfigurations-Adapter]], [[CUN]], [[CUNO]] und [[CUL]].<br />
<br />
;HMUSB<br />
:Ein HMUSB hat nahezu identische Eigenschaften wie ein HMLAN Konfigurator. Der wesentliche Unterschied ist die Anbindung über USB anstatt Ethernet. Es hat sich erwiesen, dass USB eine bessere Latenz hat als LAN - also eine kürzere Verzögerung. Damit hat ein HMUSB leichte Vorteile zu HMLAN Konfigurator, was aber in den bei Weitem meisten Fällen durch die interne Timing Kalkulation abgefangen wird. Zudem können über den HMUSB (ab Version 2) auch Firmware-Updates OTA (over-the-air, also per Funkverbindung) auf entsprechende HM-Geräte (z.B. den HM-CC-RT-DN) durchgeführt werden.<br />
:Dafür bietet der HMLAN Konfigurator mit seinem Netzwerkanschluss Vorteile bei der Platzierung und bei der Ansteuerung (teilweise Timing-Probleme beim Anschluss von USB-Geräten an langsamere Raspberries und beim Durchschleifen von USB an fhem in einer virtuellen Maschine).<br />
<br />
; CUL/CUN(O)<br />
* Die Devices liefern keine eigenen Zeitstempel, wodurch eine Timingkorrektur durch FHEM nicht möglich ist. Je nach Systemgeschwindigkeit kann dies zu Problemen, Nachrichtenwiederholung und ggf. auch Nachrichtenverlust führen<br />
* Da USB kurze Reaktionszeiten und geringe Timingschwankungen hat ist der Einsatz von [[CUL]] und [[CUNO]] mit HM möglich. <br>Die Timingschwankungen der Ethernet-schnittstelle hingegen können in FHEM nicht ausgeglichen werden. Daher kann der Einsatz der [[CUNO]] über Ethernet '''nicht empfohlen''' werden.<br />
* Der Übertragungsmodus ''lazyConfig'' wird nicht unterstützt<br />
<br />
== Funktionen ==<br />
=== AES ===<br />
siehe [[AES Encryption]].<br />
<br />
=== Übertragungsmodus ===<br />
Es werden alle HM-Modi unterstützt. Diese sind Always, Burst, Wakeup und Config. Weiter gibt es lazyConfig und conditionalBurst. Siehe [[HomeMatic]] für Details.<br />
<br />
=== KeepAlive ===<br />
Der HMLAN Konfigurator baut eine Verbindung zur Zentrale über das LAN Interface auf. Der HMLAN Konfigurator erwartet alle 30 Sekunden eine keep-alive Nachricht von der Zentrale. Sollte diese ausbleiben, baut der HMLAN Konfigurator die LAN-Verbindung ab. Das führt zu einem Disconnect, der in State gemeldet wird. Die Verbindung wird automatisch wieder aufgebaut. <br />
FHEM sendet den keep-alive alle 25 Sekunden, was einen 5 Sekunden Puffer einräumt. In Internals '''msgKeepAlive''' kann man sehen, wie hoch die maximale Verzögerung der Zentrale beim Senden war und wie viel Puffer (in Sekunden) noch verfügbar war. <br />
Die Wiederholrate von 25 Sekunden des keep-alive kann mit dem Attribut '''wdTimer''' reduziert werden, was den Puffer erhöhen. Es wird jedoch dringend geraten, im Problemfall die Ursache der Verzögerung zu suchen und zu eliminieren.<br />
<br />
=== Nachrichtenübertragung - Performance ===<br />
* Mit Internal ''msgParseDly'' kann man ablesen, welche Verzögerung eine Nachricht vom Empfang im HMLAN Konfigurator bis zur Verarbeitung in der Zentrale hat.<br />
* Der HMLAN Konfigurator hält sich an den Funkstandard, der einem Sender eine maximale Sendezeit je Stunde erlaubt. Wird dieser Wert überschritten, stellt der HMLAN Konfigurator das Senden ein. Empfangen wird weiter. Ist eine Kapazität von 90% erreicht, wird im Reading ''cond'' ''Warning-HighLoad'' gemeldet. Bei cond ''ERROR-Overload'' wird das Senden eingestellt ist.<br />
<br />
=== Loggen/Mitschneiden ===<br />
Es stehen die üblichen Funktionen des Attribute [[verbose]] zu Verfügung. Darüber hinaus gibt es die Attribute ''hmProtocolEvents'' und ''logIDs''. Siehe auch [[Homematic Nachrichten sniffen]].<br />
<br />
== Vorbereitung ==<br />
{{Randnotiz|RNText='''"Usersoftware"/Firmware'''<br />
* V1.512 / 19.12.2013 / [http://www.eq-3.de/software.html Download]<br />
* V1.515 / 12.08.2014 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_515.zip Download]<br />
* V1.520 / 10.12.2015 / [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Download]<br />
'''Firmware Update Tool / Firmware / Datum'''<br />
* V1.2 / 0.965 / 11.02.2016 / [http://www.eq-3.de/Downloads/Software/Firmware%20Update%20Tool/HM-Firmware-Update-Tool_V1_2_eQ-3_160211.zip Download]<br />
<br />
}}<br />
[[Datei:HMLAN_CONFIG_IP_AES.png|300px|thumb|right|HomeMatic Lan-Interface Configurator]][[Datei:HMLAN_CONFIG_AES.png|300px|thumb|right|HomeMatic Konfigurator]]<br />
Bevor man den HMLAN mit Fhem nutzen kann, müssen noch Einstellungen vorgenommen werden. Dazu braucht man Software die bei [http://www.eq-3.de/software.html HomeMatic] in der Version 1.512 (Stand 19. Dezember 2013) herunter zu laden ist und nach der Installation mit der Verknüpfung "HomeMatic-Lan-Interface konfigurieren" oder "HomeMatic-Komponenten konfigurieren" gestartet wird und unter Windows läuft. Für andere Betriebssystem (siehe Anhang im Beitrag {{Link2Forum|Topic=11506|Message=67417|LinkText=Anleitung für OS X}}) braucht man eine Windows-Emulation. Dem HMLAN liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das richtige zu verwenden. Wenn das Konfigurationsprogramm den HMLAN-Konfigurator nicht findet, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe {{Link2Forum|Topic=10933|Message=62960|LinkText=Beitrag im Fhem Forum}} und [[HM-CFG-LAN_LAN_Konfigurations-Adapter#Bekannte_Probleme|bekannte Probleme]].<br />
<br />
=== Firmware ===<br />
Die aktuelle Firmware Version des HMLAN Konfigurators ist 0.965 (Stand Februar 2016). Ein Update ist mit dem ''"Firmware Update Tool"'' möglich, die Firmware ist Bestandteil des Tools.<br />
<br />
Um einen mit Fhem benutzten HM-LAN zu aktualisieren, reicht es,<br />
# im HMLAN-Device mit <code>attr <myHMLAN> dummy 1</code> den Adapter vorübergehend zu deaktivieren,<br />
# mit dem (Windows) Firmware Update Tool die Firmware auf den HM-LAN aufzuspielen<br />
# nach dem Stoppen des Update Tools mit <code>deleteattr <myHMLAN> dummy</code> das Device in Fhem wieder zu aktivieren.<br />
Version 1.2 des Firmware Update Tools läuft auch unter Windows 10.<br />
<br />
=== IP Adresse ===<br />
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Servers von diesem eine IP-Adresse. Da Fhem zwecks Kommunikation die IP-Adresse wissen muss, ist es sinnvoll, dem HMLAN Konfigurator eine statische Adresse zuzuweisen. <br />
* mit der auf der CD mitgelieferten ''"HomeMatic Lan-Interface Configurator"'' Software unter ''"Change IP Settings"'' oder<br />
* im DHCP-Server eine feste IP-Adresse zuzuweisen (sofern dies vom gegeben DHCP Server als Konfigurationsoption unterstützt wird).<br />
<br />
=== AES Encryptet LAN Communication ===<br />
Wichtig ist, dass vor Verwendung die "AES Encryptet LAN Communication" abgeschaltet wird, da diese von FHEM nicht unterstützt wird. Dies ist unter ''"Change IP Settings"'' der ''"HomeMatic Lan-Interface Configurator"'' Software möglich. AES auf dem LAN ist zu unterscheiden von HMLAN auf der Funktschnittstelle. siehe [[AES Encryption]].<br />
<br />
== Einbindung in FHEM ==<br />
Der HMLAN-Konfigurator muss in FHEM [[Konfiguration|konfiguriert]] werden. Das erfolgt mit diesen Befehlen:<br />
:<code>define HMLAN1 HMLAN <IP Adresse>:1000</code><br />
:<code>attr HMLAN1 hmId 123ABC</code><br />
Der Name (im obigen Beispiel ''HMLAN1'') kann frei vergeben werden. Standard IP-Port des HMLAN-Konfigurators ist 1000.<br />
<br />
HMLAN kennt mehrere Attribute ([http://fhem.de/commandref.html#HMLAN commandref]). <br />
Wichtig ist es, die '''hmId''' zu vergeben. Diese ist ein 3-Byte hexadezimal-Wert, somit eine 6-stellige Zeichenfolge in '''Großbuchstaben'''. 000000 und FFFFFF sind ungültig. <br />
Wenn HM-Geräte mit der Zentrale [[Pairing (HomeMatic)|gepairt]] werden, wird ihnen diese hmId eingetragen. Wechselt man die hmId müssen '''alle''' damit gepairten Geräte neu gepairt werden. <br />
<br />
Die Adresse wird in Grossbuchstaben eingegeben, siehe [[HMLAN_Konfigurator#Bekannte_Probleme|"Bekannte Probleme"]].<br />
<br />
Ein '''gleichzeitiger''' Zugriff von Fhem und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine Verbindung zulässt. Wollen Sie temporär z.B. mit der Windows-Software von HomeMatic zugreifen, ist Fhem zu deaktivieren.<br />
Sinnvoll ist es, die hmId mit der der PC-Software gleichzusetzen. Dann kann man von beiden Zentralen alternativ zugreifen ohne pairen zu müssen.<br />
<br />
=== Nutzung mehrere IOs ===<br />
==== Empfangen ====<br />
Man kann an einem FHEM mehrere IOs (HMLAN/USB, CUL/CUNO) betreiben. Generell empfangen alle IOs von allen Geräten in ihrem Empfangsbereich - unabhängig von der hmId. <br />
<br />
==== Senden ====<br />
An ein Gerät wird nur über das IO gesendet, das in Internals->IODev angezeigt wird. Nutzt man mehrere IOs sollte im HM Device das Attribut IODev auf das gewünschte IO setzen. Ansonsten sucht FHEM zufällig ein IO aus.<br />
<br />
==== hmId bei mehreren IOs ====<br />
Man kann allen IOs die gleiche HMId setzen. Das erlaubt die wahlfreie Umschaltung des Sende-IOs für das Device. Sollte man unterschiedliche hmIds wählen simuliert dies mehrere Zentralen. Das Device, an das man sendet, muss über ein IO angesprochen werden, mit einer hmId auf die das Device gepairt ist. Wenn mehrere IOs verwendet werden sollen, empfiehlt sich die Verwendung einer [[Virtueller Controller VCCU|VCCU]], ansonsten kann es zu Problemen ("<code>Unknown code</code>", Angriffsmeldungen, Probleme beim Pairen, ...) kommen.<br />
<br />
=== Attribute ===<br />
* '''hmId''': Adresse, die das IO auf der Funkstrecke nutzt. Es ist ein 3-byte hexwert (6 Zeichen) in Großbuchstaben. <br />
* '''hmkey, hmkey2..5''': bis zu 5 AES keys, die auf der Funkstrecke genutzt werden. Siehe [[AES Encryption]]<br />
* '''hmLanQlen''' legt fest, wie viele Nachrichten parallel gesendet werden dürfen, also auf wie viele Antworten die Zentrale parallel warten darf. Ein Wert von 1 ist max defensiv, erzeugt aber eine höhere Verzögerung. Wählt man einen höheren Wert kann es zu Nachrichten-Wiederholunge kommen. <br />
* '''hmProtocolEvents''': alle Nachrichten werden dekodiert ausgegeben. Diese Einstellung benötigt einige Performance insbesondere bei höheren Level. Man sollte es vorsichtig nutzen. <br />
* '''logIDs''': zeichnet Rohmessages auf und bietet die genaueste Methode bei der Fehlersuche. Da Nachrichten undekodiert ausgegeben werden ist es im Wesentlichen für Spezialisten von Bedeutung. Man gibt eine Komma getrennte Liste von IDs an, die geloggt werden sollen. Mit '''all''' werden alle IDs aufgezeichnet. '''sys''' zeichnet zusätzlich Systemmessages auf. '''sys,all''' somit alles.<br />
* '''respTime''': Antwortzeit des HMLAN auf ein keep-alive kann hier eingestellt werden. Normalerweise sollte das HMLAN in einer Sekunde der Zentrale antworten. Sollte dies nicht passieren, wird die Message wiederholt. Der Wert sollte nur in Ausnahmefällen verändert werden.<br />
<br />
=== Readings ===<br />
* '''Xmit-Events''': Anzahl der Ereignisse <br />
* '''cond''': aktueller Zustand des IO. <br />
** ok<br />
** Warning-HighLoad: 90% der 1h sendekapazität sind erreicht<br />
** ERROR-Overload: 100% der sendekapazität sind erreicht, '''das IO sendet nicht mehr'''<br />
** timeout<br />
** disconnected: die Verbindung FHEM /IO ist unterbrochen<br />
** Overload-released: das IO ist aus ERROR-Overload zurück im Sendebetrieb<br />
** init: Das IO wurde neu initialisiert. <br />
* '''prot_ERROR-Overload''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_Warning-HighLoad''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_disconnected''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_init''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_ok''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_timeout''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
<br />
=== Internals ===<br />
* '''XmitOpen''': 1 = HMLAN ist sende bereit<br />
* '''assignedIDs''': HMIDs der HM Devices, die über dieses IO bedient werden<br />
* '''assignedIDsCnt''': Anzahl der zugewiesenen HMIds von FHEM<br />
* '''assignedIDsReport''': Anzahl der HMIds, die das HMLAN angibt zu bedienen. Die Zahl sollte identisch sein mit assignedIDsCnt<br />
* '''msgKeepAlive''': dlyMax: maximale Verzögerung, die ein keep-alive hatte. bufferMin: der minimale Zeitpuffer, der übrig blieb, bis das keep-alive zu spät gekommen wäre. Der Puffer sollte 2 oder größer sein, sonst könnte man gelegentlich disconnects bekommen. <br />
* '''msgLoadEst''': Funkbelastung des HMLAN. Der Wert wird über 1 Stunde akkumuliert. Sollten 100% erreicht sein, wird das HMLAN den Sendebetrieb einstellen. Der Wert ist eine Hochrechnung in FHEM. Es ist möglich, dass das HMLAN mehr belastet ist. Die 10 min werte zeigen die Belastung in den letzten 10min Perioden an.<br />
* '''msgParseDly''': Verzögerung der Message Verarbeitung vom Empfang im IO bis zur Verarbeitung in FHEM. Eine Verzögerung kann durch Prozesse an LAN, durch FHEM Prozesse oder sonstige Prozesse/Applikationen der CPU hervorgerufen werden.<br />
<br />
== Pairen von Geräten ==<br />
Jedes HM Gerät muss vor Verwendung mit der HM-Zentrale [[Pairing (HomeMatic)|gepairt]] werden. Dabei wird die hmId des gewählten IOs in das Device programmiert. Ändert man die hmId des IO, mit man das Device anspricht, muss man das Device neu pairen. <br />
Alle Geräte haben eine eigene Seriennummer, die nicht änderbar ist. Details zum Pairen auf der Seite [[HomeMatic Devices pairen]].<br />
<br />
== Bekannte Probleme ==<br />
=== Verbindung wird abgelehnt ===<br />
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreiem Betrieb die Verbindung ab:<br />
<pre style="width:400px;"><br />
Opening HMLAN1 device 192.168.168.60:1000<br />
192.168.168.60:1000 connection refused<br />
</pre><br />
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder Fhem) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurators, selbst wenn die installierte Version aktuell ist.<br />
<br />
Wenn das Konfigurationsprogramm Probleme hat, den HM-CFG-LAN LAN Konfigurations-Adapter zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden. Vereinzelt gibt es Hinweise darauf, dass es unter Windows 7 eventuell nicht reicht, die Netzwerkverbindungen im "Netzwerk- und Freigabecenter" zu deaktivieren, sondern ein Deaktivierung der Netzwerkadapter im Gerätemanager erforderlich ist.<br />
<br />
=== Häufiger automatischer Neustart ("Reboot") ===<br />
Der HMLAN Adapter startet ohne erkennbaren äußeren Anlass häufig neu. Das Problem ist auch im Forum unter der Überschrift {{Link2Forum|Topic=20776|LinkText=HMLAN Adapter wechselt permanent zwischen disconnected / connected}} beschrieben. Im FHEM Log erscheinen in diesem Fall folgende Meldungen:<br />
<pre style="width:600px;"><br />
... HMLAN_Parse: myHMLAN new condition timeout (je nach Timing, manchmal)<br />
... HMLanHostname:1000 disconnected, waiting to reappear (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition disconnected<br />
... HMLanHostname:1000 reappeared (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition init<br />
... HMLAN_Parse: myHMLAN new condition ok<br />
</pre><br />
Dieses Problem ist bei ELV [http://www.elv.de/topic/hm-lan-reboots.html bekannt] und soll mit der [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Konfigurationsadapter LAN Usersoftware V1.520 (10.12.2015)], bzw. der darin enthaltenen Firmware Version, behoben sein. Stand 11.12.2015 18:17 ist es noch niemanden gelungen die neue Firmware zu aktivieren oder die Versionsnummer der Firmware (0.964) wurde nicht verändert, es läuft z.Zt. eine Anfrage ob das Paket überhaupt die neue Firmware enthält.<br />
<br />
== Verbesserung der Antennenleistung ==<br />
Die Sende- und Empfangsleistung kann man verbessern. Details [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|hier]].<br />
<br />
== Wechsel von CUL zu HMLAN ==<br />
{{Randnotiz|RNTyp=y|RNText=Der hier beschriebene Wechsel sollte mittlerweile einfacher über die [[Virtueller Controller VCCU|VCCU]] realisierbar sein, indem erst ein weiteres IO-Device hinzugefügt und anschließend das zu ersetzende entfernt wird.}}<br />
Sollten ein [[CUL]] als IO für Homematic-Geräte dienen und ein Wechsel auf den HMLAN Konfigurator geplant sein, kann die folgende Vorgehensweise gewählt werden:<br />
<br />
* deaktivieren Sie das CUL in der ''fhem.cfg''.<br />
* konfigurieren Sie den HMLAN Konfigurator '''von Hand''' <br />
* Ändern sie das Attribut IODev aller HM-Devices vom Namen der CUL auf den Namen des HMLAN<br />
* sollte sie das Attribut IODev nicht nutzen (nicht empfohlen) achten sie darauf, dass im fhem.cfg das IO vor allen HM-devices definiert wird. Eine automatischen Zuweisung des IO zu den Devices ist sonst nicht möglich. <br />
** der HMLAN '''muss''' die gleiche ''hmId'' wie das bisherige CUL erhalten. Ansonsten müssen alle Geräte neu gepairt / angelernt werden.<br />
** AES muss im HMLAN abgeschaltet werden.<br />
* verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.<br />
* geben Sie in der FHEM-Befehlszeile ''shutdown restart'' gefolgt von &lt;Enter&gt; (nicht "save") ein (evtl. reicht auch ein ''rereadcfg'').<br />
* kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von Fhem die Kommunikation.<br />
<br />
Bitte beachten: Falls dem CUL keine explizite hmId per Attribut zugewiesen wurde, wird diese ID aus "F1&lt;FHT-ID&gt;" zusammengebaut. Die hmId muss auf dem HMLAN explizit gesetzt werden.<br />
<br />
== Links ==<br />
* [http://www.elv.de/homematic-lan-konfigurations-adapter.html Produktseite] bei ELV<br />
* [http://www.eq-3.de/software.html Software] für den Konfigurationsadapter von der eQ-3 Site<br />
* [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|HM LAN Konfig-Adapter Antenne verbessern]]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Interfaces]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Diskussion:HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=15248Diskussion:HM-CFG-LAN LAN Konfigurations-Adapter2016-04-29T10:05:24Z<p>Nobby1805: dummy beim Firmwareupdate</p>
<hr />
<div>In https://forum.fhem.de/index.php/topic,52793.0.html wird beschrieben, dass nach einem Firmwareupadte der HMLAN keine Kommandos mehr aussendet.<br />
<br />
Im Artikel steht, dass man vor dem Update ein Attribut dummy auf 1 setzen sollte und nach dem Update auf 0.<br />
<br />
Das widerspricht aber der Beschreibung von dummy in der Commandref "Setzt das Attribut dummy um Devices zu definieren, die keine Funksignale absetzen. Zugehörige notifys werden ausgeführt wenn das Signal empfangen wird. Wird beispielsweise genutzt um auf Code eines Sender zu reagieren, dennoch wird es auch dann kein Signal senden wenn es im Web Frontend getriggert wird." nicht der Wert sondern die Existenz von dummy wird geprüft.<br />
<br />
Ich habe den Artikel entsprechend angepasst --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 12:05, 29. Apr. 2016 (CEST)</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&diff=14689HM-Sec-SCo Tür-Fensterkontakt, optisch2016-03-13T16:03:38Z<p>Nobby1805: Randnotiz etwas tiefer geschoben damit es wirklich am Rand liegt und den Text nicht überdeckt</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-SEC-SCo.jpg<br />
|Bildbeschreibung=HomeMatic Tür-Fensterkontakt, optisch<br />
|HWProtocol=HomeMatic<br />
|HWType=Sensor<br />
|HWCategory=HomeMatic<br />
|HWComm=868MHz<br />
|HWChannels=1<br />
|HWVoltage=1,5 V DC<br />
|HWPowerConsumption=max. 100 mA<br />
|HWPoweredBy=Batterie (1x 1,5V LR03/Micro/AAA)<br />
|HWSize=15x100x18mm<br />
|HWDeviceFHEM=[[CUL_HM]]<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
== Features ==<br />
[[HomeMatic]] Funk-Tür-/Fensterkontakt zur optischen Erkennung von Tür- bzw. Fensteröffnungen oder -schließungen, z.B. zur Sicherheit oder um automatisch, bei vorhandenem [[HM-CC-RT-DN]], die Heizung herunter zu regeln, sobald ein Fenster oder eine Tür geöffnet wird.<br />
<br />
== Hinweis ==<br />
Das meiste zum [[HM-SEC-SC Tür-Fensterkontakt|HM-SEC-SC]] Beschriebene zur Nutzung gilt auch für den HM-Sec-SCo.<br />
<br />
Wird mit aktiviertem [[AES Encryption|AES]] ausgeliefert und kann nur mit Gateways, die AES unterstützen, gepaired werden ([[HM-CFG-USB USB Konfigurations-Adapter|HM-LAN-CFG]], [[HM-CFG-LAN LAN Konfigurations-Adapter|HM-USB-CFG]] und [[CUL]] (seit Juli 2015)).<br />
<br />
Mindestens bei Benutzung mit einem CUL (vermutlich auch via HM-CFG-USB und HM-CFG-LAN) muss FHEM auf das Perl-Modul Crypt::Rijndael zugreifen können. Wenn es nicht zur Verfügung steht, bleibt das Pairing unvollständig. Siehe auch [[AES_Encryption#IO <-> Gerät|den Abschnitt über AES-Encryption zwischen IO-Device und Gerät]].<br />
<br />
== Betrieb mit FHEM ==<br />
=== Event-Monitor ===<br />
{{Randnotiz|RNText='''Info zum Bausatz'''<br />
Das Gerät ist als Bausatz verfügbar, es sind nur<br />
* das Funkmodul mit einer 8-poligen Stiftleiste<br />
* der Batteriekontakt (Minuspol) mit einem kurzen Drahtstück<br />
an der Basisplatine anzulöten.<br />
Zu beachten ist noch, dass die Antenne '''vor''' dem Auflöten des Funkmoduls durch das markierte Loch der Basisplatine geführt werden muss.<br />
[[Datei:HM-Sec-SCo_Basisplatine.jpg|mini|250px|Markiert: Antennendurchführung (1), Batterieanschluss (2), sehr schmaler Platinensteg (3)]]<br />
Die fertig montierte Platine muss sich leicht in das Gehäuse einsetzen lassen, anderenfalls wird der schmale Platinensteg u.U. zu stark belastet und kann brechen!<br />
'''Bauzeit''': <&nbsp;15&nbsp;Minuten<br />
}}<br />
Wird z. B. das Fenster geöffnet, wird Folgendes vom Gerät übermittelt:<br />
<pre><br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG trigger_cnt: 11<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG trigDst_2573FB: noConfig<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG battery: ok<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG open<br />
2015-02-08 20:04:24 CUL_HM HM_Fensterstatus_BadEG contact: open (to MyHMLAN)<br />
</pre><br />
<br />
Beim Schließen wird Folgendes übermittelt:<br />
<pre><br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG trigger_cnt: 12<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG trigDst_2573FB: noConfig<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG battery: ok<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG closed<br />
2015-02-08 20:04:31 CUL_HM HM_Fensterstatus_BadEG contact: closed (to MyHMLAN)<br />
</pre><br />
<br />
=== Konfiguration ===<br />
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen beim Pairen selbstständig erstellt.<br />
<br />
<pre><br />
define HM_Fensterstatus_BadEG CUL_HM 35E390<br />
attr HM_Fensterstatus_BadEG IODev MyHMLAN<br />
attr HM_Fensterstatus_BadEG actCycle 000:50<br />
attr HM_Fensterstatus_BadEG actStatus dead<br />
attr HM_Fensterstatus_BadEG autoReadReg 4_reqStatus<br />
attr HM_Fensterstatus_BadEG expert 2_full<br />
attr HM_Fensterstatus_BadEG firmware 1.0<br />
attr HM_Fensterstatus_BadEG model HM-SEC-SCo<br />
attr HM_Fensterstatus_BadEG peerIDs 00000000,<br />
attr HM_Fensterstatus_BadEG room CUL_HM<br />
attr HM_Fensterstatus_BadEG serialNr LEQxxxxxxx<br />
attr HM_Fensterstatus_BadEG subType threeStateSensor<br />
</pre><br />
<br />
== Beispiele ==<br />
=== Aktionen durchführen, wenn Fenster zu lange geöffnet ist ===<br />
Mit der nachfolgenden [[DOIF]]-Definition wird ein [[FileLog|Log]]-Eintrag erzeugt, eine Meldung auf der [[Enigma2 Receiver (Dreambox, VUplus etc.) steuern|Dreambox]] angezeigt, falls diese angeschaltet ist, und eine Nachricht per Prowl (funktioniert vermutlich nur unter Linux) verschickt.<br />
<br />
Der Code ist hier so angegeben, wie er in der Weboberfläche nach einem Klick auf das [[Konfiguration|DEF-Feld]] übernommen werden kann. Das DOIF ist vorab zu definieren, zum Beispiel mit:<br />
:<code>def DOIF_FensterOffenMsg DOIF ([HM_Fensterstatus_BadEG])</code><br />
und kann dann anschließend in den Device-Details vervollständigt werden:<br />
<source lang="perl"><br />
([HM_Fensterstatus_BadEG] eq "open") ({<br />
Log 1, "Fenster seit mehr als 2 Stunden (7200 Sekunden) offen";;<br />
system( "/path/to/prowl.pl -apikeyfile=/path/to/prowl-apikey -event=Info -notification='Fenster ist noch offen' &" );;<br />
fhem( "set E2_Dreambox showText Fenster ist noch offen" ) if ReadingsVal("E2_Dreambox","state","") eq "on";;<br />
})<br />
DOELSE<br />
</source><br />
<br />
Damit der Code-Block erst nach 7200 Sekunden getriggert wird, ist noch Folgendes auszuführen:<br />
<br />
:<code>attr DOIF_FensterOffenMsg wait 7200:0</code><br />
<br />
=== Anzeige des Zeitpunkts der letzten Öffnung im STATE ===<br />
Das Reading ''contact'' beinhaltet die Zustände ''open'' und ''closed''. Und der Zeitstempel der Änderung wird regelmäßig aktualisiert. Aus diesem Grund fällt die Nutzung des Attributs ''showtime'' hier weg. Wenigstens, wenn man nicht den Zeitpunkt des letzten Auslesens wissen will, sondern den der letzten Öffnung.<br />
<br />
Folgende Schreibweise ermöglicht es, dass im STATE-Internal der Zeitpunkt des letzten ''open'' verbleibt (zum Übernehmen als Einzeler kopieren):<br />
:<code><nowiki>attr Sensor stateFormat {if (ReadingsVal("Sensor","contact","") =~ "open.*") {"open " . ReadingsTimestamp("Sensor","contact","")} else {InternalVal("Sensor","STATE","")}}</nowiki></code><br />
<br />
Ein Thread zu diesem Thema findet sich im Forum unter dem Titel {{Link2Forum|Topic=41347|LinkText=HM-SEC-SCo: Letzte Türöffnung im State anzeigen}}.<br />
<br />
== Bekannte Probleme ==<br />
Teilweise (siehe Diskussion im {{Link2Forum|Topic=33264|LinkText=Forum}}) werden die Fensterkontakte regelmäßig wiederkehrend als "dead" angezeigt. Grund ist, dass beim Anlernen ein actCycle von 50 Minuten eingetragen wird, während die Kontakte auch gerne mal länger brauchen, um sich bei der Zentrale zu melden.<br />
<pre style="width:500px;"><br />
2015-01-31_17:57:39 Fstr_AusgTerrasse alive: yes<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse battery: ok<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse sabotageError: off<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse closed<br />
2015-01-31_17:57:39 Fstr_AusgTerrasse contact: closed (to HMLAN1)<br />
2015-01-31_18:54:09 Fstr_AusgTerrasse Activity: dead<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse alive: yes<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse battery: ok<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse sabotageError: off<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse closed<br />
2015-01-31_18:58:03 Fstr_AusgTerrasse contact: closed (to HMUSB)<br />
2015-01-31_19:04:09 Fstr_AusgTerrasse Activity: alive<br />
</pre><br />
<br />
Um Abhilfe zu schaffen, den actCycle auf 01:05 setzen:<br />
:<code>attr <HM-SEC-SCo> actCycle 001:05</code><br />
<br />
Save config nicht vergessen.<br />
<br />
== Links ==<br />
* Anleitung [http://www.eq-3.de/Downloads/eq3/pdf_produkte/130873_HM-Sec-SCo_UM_GE_eQ-3_20141013_web.pdf PDF]<br />
* Datenblatt [http://www.eq-3.de/Downloads/eq3/pdf_produkte/Funk-Tuer-Fensterkontakt-optisch_130297_Produktdatenblatt_V1.2.pdf PDF]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Kontaktsensor (optisch)]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&diff=14565Diskussion:FHEM Tablet UI2016-03-08T08:42:05Z<p>Nobby1805: /* Widgets */</p>
<hr />
<div>Sollte man nicht die Widgets alphabetisch sortieren ? <br />
<br />
Ich kann das gerne machen... bzw. mache das, wenn ich keinen Widerspruch höre --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 13:05, 6. Mai 2015 (CEST)<br />
<br />
Ich habe die Reihenfolge von github übernommen. Aber klar, eine alphabetische Sortierung ist durchaus sinnvoll. Dann aber auch die Beispiele entsprechend sortieren.<br />
<br />
:Ich setz mich mal dran .. oder willst du noch aktuell noch etwas ändern ?--[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 16:48, 7. Mai 2015 (CEST)<br />
<br />
== Sprung von der Widget-Auflistung zu den Beschreibungen ==<br />
<br />
... habe ich testweise mal für CIRCLEMENU gemacht ... werde ich in den nächsten Tagen für alle nachzioehgen ... und von dort dann sinnvollerweise auch zu den Beispielen ?! --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 11:54, 14. Mai 2015 (CEST)<br />
<br />
== Update Link falsch? ==<br />
<br />
Müsste der Update Link zum hinzfügen nicht wie folgt heißen: <br />
<br />
<code>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
<br />
ich bekomme mit dem aktuell hinterlegten Link nämlich einen Fehler<br />
<br />
--[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 14:35, 16. Feb. 2016 (CET)<br />
<HR><br />
: Hallo!<br />
: Ja, Link auf Wiki-Seite war falsch; controlfile-Angabe fehlt dort.<br />
: Ist korrigiert.<br />
: Danke, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 14:52, 16. Feb. 2016 (CET)<br />
<br />
== Deutsch / Englisch ==<br />
Sollten die Texte nicht eingedeutscht werden? Inhalt ist mal deutsch mal englisch --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 06:37, 2. Mär. 2016 (CET)<br />
<br />
Ist richtig, hat nur noch keiner gemacht. Kommt daher, dass setstate es auf seiner github Seite in Englisch hat und von dort das Meiste kopiert wurde. --[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 00:57, 5. Mär. 2016 (CET)<br />
<br />
== Widgets ==<br />
zur besseren Lesbarkeit wäre es besser je Widget ein eigenen "Kapitel"/Überschrift in der Seite anzulegen. Es macht auch wenig Sinn die Beispiele eines Widgets am Ende der Seite einzuhängen. Verständlicher ist es Wenn die Beispiele bei dessen Erläuterung aufgeführt sind. Beispiele ohne Bilder machen wenig Sinn wenn ich ein UI erklären will. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 19:39, 7. Mär. 2016 (CET)<br />
:Da stimme ich nicht zu ... die jetzige Version mit den zusätzliche "Überschriften' bei Label und Level ist m.E. unübersichtlicher ... aus der alphabetischen Übersicht kommt ja immer durch die Links schnell zu den Beschreibungen und ebenfalls durch die Links zu den Beispielen ... wenn ich zu einem Widget die Argumente nachschlagen will würden m.E. die immer wieder dazwischen liegenden Beispiele eher stören --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 23:33, 7. Mär. 2016 (CET)<br />
Da diese Überschriften keine Kapitel sind ist diese Bearbeitung, Ergänzung mühselig. Das sollten zumindest Kapitel sein um das besser zu bearbeiten und in der Seiten Übersicht sind diese dann ebenfalls mit einem Blick zu sehen und man direkt von dort zum Beispiel springen. Ist eine kleinere Änderung. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:54, 8. Mär. 2016 (CET)<br />
Längere Artikel ohne Kapitel sind nur schwer zu Pflege, das dadurch ein index gebildet wird, besser ein Inhaltsverzeichnis halte ich sehr wohl als übersichtlicher, aber das sieht jeder anders. Aber bearbeite mal eine bestimmte stelle wenn du mehrere tausend Zeilen bis zur gesuchten Zeile scrollen musst. Diese Übersichtlichkeit ist ein Grund warum es die Funktion in jeder wiki Engine gibt.--[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:58, 8. Mär. 2016 (CET)<br />
:Ein seitlanges Inhaltsverzeichnis finde ich allerdings nicht so prickelnd ;) Ansonsten hast du ja nicht unrecht, ich habe schon mehrfach kleinere Änderungen an den Widgetbeschreibungen durchgeführt, das wäre einfacher wenn die Abschnitte kleiner wären. --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 09:42, 8. Mär. 2016 (CET)<br />
<br />
== Betriff Abschnitt Vorraussetungen ==<br />
Vorausgesetzt ist noch ein definierte FHEMWEB Instance, ohne das würden die Fhem Befehle nicht gesendet werden, longpoll, etc. Zwar ist das Default jeder installation, aber man sollte darauf Hinweisen. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 05:54, 8. Mär. 2016 (CET)</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&diff=14558Diskussion:FHEM Tablet UI2016-03-07T22:33:43Z<p>Nobby1805: /* Widgets */</p>
<hr />
<div>Sollte man nicht die Widgets alphabetisch sortieren ? <br />
<br />
Ich kann das gerne machen... bzw. mache das, wenn ich keinen Widerspruch höre --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 13:05, 6. Mai 2015 (CEST)<br />
<br />
Ich habe die Reihenfolge von github übernommen. Aber klar, eine alphabetische Sortierung ist durchaus sinnvoll. Dann aber auch die Beispiele entsprechend sortieren.<br />
<br />
:Ich setz mich mal dran .. oder willst du noch aktuell noch etwas ändern ?--[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 16:48, 7. Mai 2015 (CEST)<br />
<br />
== Sprung von der Widget-Auflistung zu den Beschreibungen ==<br />
<br />
... habe ich testweise mal für CIRCLEMENU gemacht ... werde ich in den nächsten Tagen für alle nachzioehgen ... und von dort dann sinnvollerweise auch zu den Beispielen ?! --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 11:54, 14. Mai 2015 (CEST)<br />
<br />
== Update Link falsch? ==<br />
<br />
Müsste der Update Link zum hinzfügen nicht wie folgt heißen: <br />
<br />
<code>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
<br />
ich bekomme mit dem aktuell hinterlegten Link nämlich einen Fehler<br />
<br />
--[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 14:35, 16. Feb. 2016 (CET)<br />
<HR><br />
: Hallo!<br />
: Ja, Link auf Wiki-Seite war falsch; controlfile-Angabe fehlt dort.<br />
: Ist korrigiert.<br />
: Danke, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 14:52, 16. Feb. 2016 (CET)<br />
<br />
== Deutsch / Englisch ==<br />
Sollten die Texte nicht eingedeutscht werden? Inhalt ist mal deutsch mal englisch --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 06:37, 2. Mär. 2016 (CET)<br />
<br />
Ist richtig, hat nur noch keiner gemacht. Kommt daher, dass setstate es auf seiner github Seite in Englisch hat und von dort das Meiste kopiert wurde. --[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 00:57, 5. Mär. 2016 (CET)<br />
<br />
== Widgets ==<br />
zur besseren Lesbarkeit wäre es besser je Widget ein eigenen "Kapitel"/Überschrift in der Seite anzulegen. Es macht auch wenig Sinn die Beispiele eines Widgets am Ende der Seite einzuhängen. Verständlicher ist es Wenn die Beispiele bei dessen Erläuterung aufgeführt sind. Beispiele ohne Bilder machen wenig Sinn wenn ich ein UI erklären will. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 19:39, 7. Mär. 2016 (CET)<br />
:Da stimme ich nicht zu ... die jetzige Version mit den zusätzliche "Überschriften' bei Label und Level ist m.E. unübersichtlicher ... aus der alphabetischen Übersicht kommt ja immer durch die Links schnell zu den Beschreibungen und ebenfalls durch die Links zu den Beispielen ... wenn ich zu einem Widget die Argumente nachschlagen will würden m.E. die immer wieder dazwischen liegenden Beispiele eher stören --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 23:33, 7. Mär. 2016 (CET)</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=14090FHEM Tablet UI2016-02-07T10:28:28Z<p>Nobby1805: /* Widgets -- Konfiguration */ Noch eine Klarstellung</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
== Positioning ==<br />
<br />
*container : new box or new row<br />
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)<br />
*inline : positioning elements in a row, no line break<br />
*top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
*left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
*right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
*top-narrow : -15px closer on top (top-narrow-2x -> -30px; top-narrow-10 -> -10px)<br />
*centered : horizontal centered<br />
*left-align : align text left<br />
*right-align : align text right<br />
*wider : 15px extra space for the widget all around<br />
*narrow : shorter distant to the widget above<br />
*fullsize : 100% in width and height<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
<br />
<div id="chart">'''CHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed<br />
|'-' or omitting this data means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int") or or array of columnspecs if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-style<br />
|name of the graph style to be used (e.g. 'SVGplot l0' or 'ftui l0dash') or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.<br />
|-<br />
|-<br />
!align="right" |data-ptype<br />
|name of the plot type (e.g. 'lines' or 'fa-cog') or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome ('fa-...'), open automation ('oa-...') and fhem symbols ('fs-...'))<br />
|'lines'<br />
|-<br />
!align="right" |data-uaxis<br />
|name of the axis to be used ('primary' or 'secondary') or or array of axis' to be used if more than one graph shall be displayed. The 'primary' axis is labelled on the left side, the 'secondary' axis is labelled on the right side<br />
|'primary'<br />
|-<br />
!align="right" |data-legend<br />
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.<br />
|-<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|10<br />
|-<br />
!align="right" |data-minvalue_sec<br />
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|30<br />
|-<br />
!align="right" |data-maxvalue_sec<br />
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines (related to primary axis). A value of 'auto' means that the value is calculated from the data displayed dynamically.<br />
|'auto'<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick lines (in minutes). A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-daysago_start<br />
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|0<br />
|-<br />
!align="right" |data-daysago_end<br />
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|-1<br />
|-<br />
!align="right" |data-nofulldays<br />
|switch to activate/deactivate rounding of the xaxis start and end values to full days ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-ytext<br />
|text to be shown besides the primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-ytext_sec<br />
|text to be shown besides the secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks for primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-crosshair<br />
|switch to activate/deactivate the crosshair cursor ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-cursorgroup<br />
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.<br />
|-<br />
|-<br />
!align="right" |data-scrollgroup<br />
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.<br />
|-<br />
|-<br />
!align="right" |data-showlegend<br />
|switch to activate/deactivate the initial display of the legend window ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-yunit_sec<br />
|unit of the value to show beside of each Y ticks for secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-width<br />
|fixed size for width (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |data-height<br />
|fixed size for height (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks, nobuttons<br />
|<br />
|-<br />
|}<br />
<br />
<code>data-logfile</code> can be omitted in this case the default value "-" will be used. This means that the current logfile is going to be used.<br />
<br />
There are several buttons that control the dynamic behaviour of the chart. The <-, ->, + and - buttons shift and zoom the displayed data. The "legend" and "cursor" buttons are switching on and off the display of the legend window and the crosshair cursor respectively.<br />
<br />
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).<br />
<br />
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.<br />
<br />
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:<br />
<br />
{| class="wikitable"<br />
!CSS class name<br />
!Description<br />
|-<br />
!.chart-background<br />
|Color etc. for the chart background<br />
|-<br />
!.text.axes<br />
|Font and color for the chart axes<br />
|-<br />
!.buttons<br />
|Size and color for the buttons (shift etc.)<br />
|-<br />
!.gridlines<br />
|Size and color for gridlines generally<br />
|-<br />
!.xaxis<br />
|Font, size and color for xaxis<br />
|-<br />
!.yaxis<br />
|Font, size and color for yaxis<br />
|-<br />
!.xticks<br />
|Font, size and color for xticks<br />
|-<br />
!.yticks<br />
|Font, size and color for yticks<br />
|-<br />
!.crosshair<br />
|Font, size and color (foreground/background) for the crosshair cursor<br />
|-<br />
!.caption<br />
|Font, size and color for text buttons for legend and cursor switching<br />
|-<br />
!.legend<br />
|Font, size and background color for legend window<br />
|-<br />
|-<br />
|}<br />
<br />
[[#Beispiel_chart|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
| name of the reading to set on FHEM (<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|<br />
|-<br />
!align="right" |data-off-background-color<br />
|fix color attribute for OFF state or DEVICE:READING for dynamic setting <br />
|#505050<br />
|-<br />
!align="right" |data-off-color<br />
|fix color attribute for Off state or DEVICE:READING for dynamic setting<br />
|#505050<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
dual state notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für OFF-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für OFF-Zustand.<br />
|'#505050'<br />
|-<br />
|}<br />
<br />
multi state notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-states<br />
|array of states. <br />
|<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-background-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|array of colors related to the data-states array<br />
|''<br />
|-<br />
!align="right" |data-background-colors<br />
|array of background-colors related to the data-states array<br />
|''<br />
|-<br />
|}<br />
<br />
data-get-on,data-get-off and data-states accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking Symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_chart">'''Chart'''</div><br />
<br />
Display a chart with similar capabilities as the FHEM plots<br />
<br />
<pre><br />
<div class="normal"><br />
data-type="chart"<br />
data-logdevice='["Log.Garden","Log.Garden","Log.Garden","Log.Predicted"]'<br />
data-columnspec='["4:Garden.T:15:","10:Garden.T:0:delta-h","10:Garden.T:0:delta-d","4:predicted.*:15:"]'<br />
data-style='["ftui l0fill","ftui l1fill","ftui l2","ftui l3dot"]'<br />
data-ptype='["lines","histeps","histeps","cubic"]'<br />
data-uaxis='["primary","secondary","secondary","primary"]'<br />
data-legend='["Temperature","Rain/hour","Rain/day","Predicted Temp."]'<br />
data-yunit="°C"<br />
data-ytext="Temperature"<br />
data-minvalue="auto"<br />
data-maxvalue="auto"<br />
data-yunit_sec="mm"<br />
data-ytext_sec="Rain (mm)"<br />
data-height="250"<br />
data-yticks="auto"<br />
data-minvalue_sec="auto"<br />
data-maxvalue_sec="auto"<br />
data-nofulldays="true"<br />
data-daysago_start="2013-08-13T00:00:00"<br />
data-daysago_end="2013-08-14T00:00:00"<br />
data-cursorgroup="1"<br />
data-scrollgroup="1"<br />
data-xticks="auto"><br />
</div><br />
</pre><br />
<br />
[[Datei:chart_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=14089FHEM Tablet UI2016-02-07T10:27:13Z<p>Nobby1805: /* Widgets -- Konfiguration */ Schreibfehler beseitigt</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
== Positioning ==<br />
<br />
*container : new box or new row<br />
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)<br />
*inline : positioning elements in a row, no line break<br />
*top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
*left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
*right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
*top-narrow : -15px closer on top (top-narrow-2x -> -30px; top-narrow-10 -> -10px)<br />
*centered : horizontal centered<br />
*left-align : align text left<br />
*right-align : align text right<br />
*wider : 15px extra space for the widget all around<br />
*narrow : shorter distant to the widget above<br />
*fullsize : 100% in width and height<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
<br />
<div id="chart">'''CHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed<br />
|'-' or omitting this data means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int") or or array of columnspecs if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-style<br />
|name of the graph style to be used (e.g. 'SVGplot l0' or 'ftui l0dash') or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.<br />
|-<br />
|-<br />
!align="right" |data-ptype<br />
|name of the plot type (e.g. 'lines' or 'fa-cog') or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome ('fa-...'), open automation ('oa-...') and fhem symbols ('fs-...'))<br />
|'lines'<br />
|-<br />
!align="right" |data-uaxis<br />
|name of the axis to be used ('primary' or 'secondary') or or array of axis' to be used if more than one graph shall be displayed. The 'primary' axis is labelled on the left side, the 'secondary' axis is labelled on the right side<br />
|'primary'<br />
|-<br />
!align="right" |data-legend<br />
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.<br />
|-<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|10<br />
|-<br />
!align="right" |data-minvalue_sec<br />
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|30<br />
|-<br />
!align="right" |data-maxvalue_sec<br />
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines (related to primary axis). A value of 'auto' means that the value is calculated from the data displayed dynamically.<br />
|'auto'<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick lines (in minutes). A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-daysago_start<br />
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|0<br />
|-<br />
!align="right" |data-daysago_end<br />
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|-1<br />
|-<br />
!align="right" |data-nofulldays<br />
|switch to activate/deactivate rounding of the xaxis start and end values to full days ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-ytext<br />
|text to be shown besides the primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-ytext_sec<br />
|text to be shown besides the secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks for primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-crosshair<br />
|switch to activate/deactivate the crosshair cursor ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-cursorgroup<br />
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.<br />
|-<br />
|-<br />
!align="right" |data-scrollgroup<br />
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.<br />
|-<br />
|-<br />
!align="right" |data-showlegend<br />
|switch to activate/deactivate the initial display of the legend window ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-yunit_sec<br />
|unit of the value to show beside of each Y ticks for secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-width<br />
|fixed size for width (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |data-height<br />
|fixed size for height (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks, nobuttons<br />
|<br />
|-<br />
|}<br />
<br />
<code>data-logfile</code> can be omitted in this case the default value "-" will be used. This means that the current logfile is going to be used.<br />
<br />
There are several buttons that control the dynamic behaviour of the chart. The <-, ->, + and - buttons shift and zoom the displayed data. The "legend" and "cursor" buttons are switching on and off the display of the legend window and the crosshair cursor respectively.<br />
<br />
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).<br />
<br />
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.<br />
<br />
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:<br />
<br />
{| class="wikitable"<br />
!CSS class name<br />
!Description<br />
|-<br />
!.chart-background<br />
|Color etc. for the chart background<br />
|-<br />
!.text.axes<br />
|Font and color for the chart axes<br />
|-<br />
!.buttons<br />
|Size and color for the buttons (shift etc.)<br />
|-<br />
!.gridlines<br />
|Size and color for gridlines generally<br />
|-<br />
!.xaxis<br />
|Font, size and color for xaxis<br />
|-<br />
!.yaxis<br />
|Font, size and color for yaxis<br />
|-<br />
!.xticks<br />
|Font, size and color for xticks<br />
|-<br />
!.yticks<br />
|Font, size and color for yticks<br />
|-<br />
!.crosshair<br />
|Font, size and color (foreground/background) for the crosshair cursor<br />
|-<br />
!.caption<br />
|Font, size and color for text buttons for legend and cursor switching<br />
|-<br />
!.legend<br />
|Font, size and background color for legend window<br />
|-<br />
|-<br />
|}<br />
<br />
[[#Beispiel_chart|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
| name of the reading to set on FHEM (<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|<br />
|-<br />
!align="right" |data-off-background-color<br />
|fix color attribute for OFF state or DEVICE:READING for dynamic setting <br />
|#505050<br />
|-<br />
!align="right" |data-off-color<br />
|fix color attribute for Off state or DEVICE:READING for dynamic setting<br />
|#505050<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
dual state notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für OFF-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für OFF-Zustand.<br />
|'#505050'<br />
|-<br />
|}<br />
<br />
multi state notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-states<br />
|array of states. <br />
|<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-background-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|array of colors related to the data-states array<br />
|''<br />
|-<br />
!align="right" |data-background-colors<br />
|array of background-colors related to the data-states array<br />
|''<br />
|-<br />
|}<br />
<br />
data-get-on,data-get-off and data-states accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking Symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_chart">'''Chart'''</div><br />
<br />
Display a chart with similar capabilities as the FHEM plots<br />
<br />
<pre><br />
<div class="normal"><br />
data-type="chart"<br />
data-logdevice='["Log.Garden","Log.Garden","Log.Garden","Log.Predicted"]'<br />
data-columnspec='["4:Garden.T:15:","10:Garden.T:0:delta-h","10:Garden.T:0:delta-d","4:predicted.*:15:"]'<br />
data-style='["ftui l0fill","ftui l1fill","ftui l2","ftui l3dot"]'<br />
data-ptype='["lines","histeps","histeps","cubic"]'<br />
data-uaxis='["primary","secondary","secondary","primary"]'<br />
data-legend='["Temperature","Rain/hour","Rain/day","Predicted Temp."]'<br />
data-yunit="°C"<br />
data-ytext="Temperature"<br />
data-minvalue="auto"<br />
data-maxvalue="auto"<br />
data-yunit_sec="mm"<br />
data-ytext_sec="Rain (mm)"<br />
data-height="250"<br />
data-yticks="auto"<br />
data-minvalue_sec="auto"<br />
data-maxvalue_sec="auto"<br />
data-nofulldays="true"<br />
data-daysago_start="2013-08-13T00:00:00"<br />
data-daysago_end="2013-08-14T00:00:00"<br />
data-cursorgroup="1"<br />
data-scrollgroup="1"<br />
data-xticks="auto"><br />
</div><br />
</pre><br />
<br />
[[Datei:chart_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=14088FHEM Tablet UI2016-02-07T10:25:36Z<p>Nobby1805: /* Widgets -- Konfiguration */ Beschreibung SYMBOL aktualisiert</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
== Positioning ==<br />
<br />
*container : new box or new row<br />
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)<br />
*inline : positioning elements in a row, no line break<br />
*top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
*left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
*right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
*top-narrow : -15px closer on top (top-narrow-2x -> -30px; top-narrow-10 -> -10px)<br />
*centered : horizontal centered<br />
*left-align : align text left<br />
*right-align : align text right<br />
*wider : 15px extra space for the widget all around<br />
*narrow : shorter distant to the widget above<br />
*fullsize : 100% in width and height<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
<br />
<div id="chart">'''CHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed<br />
|'-' or omitting this data means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int") or or array of columnspecs if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-style<br />
|name of the graph style to be used (e.g. 'SVGplot l0' or 'ftui l0dash') or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.<br />
|-<br />
|-<br />
!align="right" |data-ptype<br />
|name of the plot type (e.g. 'lines' or 'fa-cog') or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome ('fa-...'), open automation ('oa-...') and fhem symbols ('fs-...'))<br />
|'lines'<br />
|-<br />
!align="right" |data-uaxis<br />
|name of the axis to be used ('primary' or 'secondary') or or array of axis' to be used if more than one graph shall be displayed. The 'primary' axis is labelled on the left side, the 'secondary' axis is labelled on the right side<br />
|'primary'<br />
|-<br />
!align="right" |data-legend<br />
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.<br />
|-<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|10<br />
|-<br />
!align="right" |data-minvalue_sec<br />
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|30<br />
|-<br />
!align="right" |data-maxvalue_sec<br />
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines (related to primary axis). A value of 'auto' means that the value is calculated from the data displayed dynamically.<br />
|'auto'<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick lines (in minutes). A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-daysago_start<br />
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|0<br />
|-<br />
!align="right" |data-daysago_end<br />
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|-1<br />
|-<br />
!align="right" |data-nofulldays<br />
|switch to activate/deactivate rounding of the xaxis start and end values to full days ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-ytext<br />
|text to be shown besides the primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-ytext_sec<br />
|text to be shown besides the secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks for primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-crosshair<br />
|switch to activate/deactivate the crosshair cursor ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-cursorgroup<br />
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.<br />
|-<br />
|-<br />
!align="right" |data-scrollgroup<br />
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.<br />
|-<br />
|-<br />
!align="right" |data-showlegend<br />
|switch to activate/deactivate the initial display of the legend window ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-yunit_sec<br />
|unit of the value to show beside of each Y ticks for secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-width<br />
|fixed size for width (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |data-height<br />
|fixed size for height (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks, nobuttons<br />
|<br />
|-<br />
|}<br />
<br />
<code>data-logfile</code> can be omitted in this case the default value "-" will be used. This means that the current logfile is going to be used.<br />
<br />
There are several buttons that control the dynamic behaviour of the chart. The <-, ->, + and - buttons shift and zoom the displayed data. The "legend" and "cursor" buttons are switching on and off the display of the legend window and the crosshair cursor respectively.<br />
<br />
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).<br />
<br />
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.<br />
<br />
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:<br />
<br />
{| class="wikitable"<br />
!CSS class name<br />
!Description<br />
|-<br />
!.chart-background<br />
|Color etc. for the chart background<br />
|-<br />
!.text.axes<br />
|Font and color for the chart axes<br />
|-<br />
!.buttons<br />
|Size and color for the buttons (shift etc.)<br />
|-<br />
!.gridlines<br />
|Size and color for gridlines generally<br />
|-<br />
!.xaxis<br />
|Font, size and color for xaxis<br />
|-<br />
!.yaxis<br />
|Font, size and color for yaxis<br />
|-<br />
!.xticks<br />
|Font, size and color for xticks<br />
|-<br />
!.yticks<br />
|Font, size and color for yticks<br />
|-<br />
!.crosshair<br />
|Font, size and color (foreground/background) for the crosshair cursor<br />
|-<br />
!.caption<br />
|Font, size and color for text buttons for legend and cursor switching<br />
|-<br />
!.legend<br />
|Font, size and background color for legend window<br />
|-<br />
|-<br />
|}<br />
<br />
[[#Beispiel_chart|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
| name of the reading to set on FHEM (<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|<br />
|-<br />
!align="right" |data-off-background-color<br />
|fix color attribute for OFF state or DEVICE:READING for dynamic setting <br />
|#505050<br />
|-<br />
!align="right" |data-off-color<br />
|fix color attribute for Off state or DEVICE:READING for dynamic setting<br />
|#505050<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
dual state notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für OFF-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
|}<br />
<br />
multi state Notation<br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-states<br />
|array of states. <br />
|<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-background-icons<br />
|Array mit Icons zu data-states Array<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|array of colors related to the data-states array<br />
|''<br />
|-<br />
!align="right" |data-background-colors<br />
|array of background-colors related to the data-states array<br />
|''<br />
|-<br />
|}<br />
<br />
data-get-on,data-get-off and data-states accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking Symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_chart">'''Chart'''</div><br />
<br />
Display a chart with similar capabilities as the FHEM plots<br />
<br />
<pre><br />
<div class="normal"><br />
data-type="chart"<br />
data-logdevice='["Log.Garden","Log.Garden","Log.Garden","Log.Predicted"]'<br />
data-columnspec='["4:Garden.T:15:","10:Garden.T:0:delta-h","10:Garden.T:0:delta-d","4:predicted.*:15:"]'<br />
data-style='["ftui l0fill","ftui l1fill","ftui l2","ftui l3dot"]'<br />
data-ptype='["lines","histeps","histeps","cubic"]'<br />
data-uaxis='["primary","secondary","secondary","primary"]'<br />
data-legend='["Temperature","Rain/hour","Rain/day","Predicted Temp."]'<br />
data-yunit="°C"<br />
data-ytext="Temperature"<br />
data-minvalue="auto"<br />
data-maxvalue="auto"<br />
data-yunit_sec="mm"<br />
data-ytext_sec="Rain (mm)"<br />
data-height="250"<br />
data-yticks="auto"<br />
data-minvalue_sec="auto"<br />
data-maxvalue_sec="auto"<br />
data-nofulldays="true"<br />
data-daysago_start="2013-08-13T00:00:00"<br />
data-daysago_end="2013-08-14T00:00:00"<br />
data-cursorgroup="1"<br />
data-scrollgroup="1"<br />
data-xticks="auto"><br />
</div><br />
</pre><br />
<br />
[[Datei:chart_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=13621FHEM Tablet UI2016-01-18T22:36:51Z<p>Nobby1805: /* Widgets -- Konfiguration */</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
== Positioning ==<br />
<br />
*container : new box or new row<br />
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)<br />
*inline : positioning elements in a row, no line break<br />
*top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
*left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
*right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
*top-narrow : -15px closer on top (top-narrow-2x -> -30px; top-narrow-10 -> -10px)<br />
*centered : horizontal centered<br />
*left-align : align text left<br />
*right-align : align text right<br />
*wider : 15px extra space for the widget all around<br />
*narrow : shorter distant to the widget above<br />
*fullsize : 100% in width and height<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
<br />
<div id="chart">'''CHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed<br />
|'-' or omitting this data means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int") or or array of columnspecs if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-style<br />
|name of the graph style to be used (e.g. 'SVGplot l0' or 'ftui l0dash') or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.<br />
|-<br />
|-<br />
!align="right" |data-ptype<br />
|name of the plot type (e.g. 'lines' or 'fa-cog') or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome ('fa-...'), open automation ('oa-...') and fhem symbols ('fs-...'))<br />
|'lines'<br />
|-<br />
!align="right" |data-uaxis<br />
|name of the axis to be used ('primary' or 'secondary') or or array of axis' to be used if more than one graph shall be displayed. The 'primary' axis is labelled on the left side, the 'secondary' axis is labelled on the right side<br />
|'primary'<br />
|-<br />
!align="right" |data-legend<br />
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.<br />
|-<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|10<br />
|-<br />
!align="right" |data-minvalue_sec<br />
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|30<br />
|-<br />
!align="right" |data-maxvalue_sec<br />
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines (related to primary axis). A value of 'auto' means that the value is calculated from the data displayed dynamically.<br />
|'auto'<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick lines (in minutes). A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-daysago_start<br />
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|0<br />
|-<br />
!align="right" |data-daysago_end<br />
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|-1<br />
|-<br />
!align="right" |data-nofulldays<br />
|switch to activate/deactivate rounding of the xaxis start and end values to full days ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-ytext<br />
|text to be shown besides the primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-ytext_sec<br />
|text to be shown besides the secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks for primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-crosshair<br />
|switch to activate/deactivate the crosshair cursor ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-cursorgroup<br />
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.<br />
|-<br />
|-<br />
!align="right" |data-scrollgroup<br />
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.<br />
|-<br />
|-<br />
!align="right" |data-showlegend<br />
|switch to activate/deactivate the initial display of the legend window ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-yunit_sec<br />
|unit of the value to show beside of each Y ticks for secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-width<br />
|fixed size for width (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |data-height<br />
|fixed size for height (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks, nobuttons<br />
|<br />
|-<br />
|}<br />
<br />
<code>data-logfile</code> can be omitted in this case the default value "-" will be used. This means that the current logfile is going to be used.<br />
<br />
There are several buttons that control the dynamic behaviour of the chart. The <-, ->, + and - buttons shift and zoom the displayed data. The "legend" and "cursor" buttons are switching on and off the display of the legend window and the crosshair cursor respectively.<br />
<br />
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).<br />
<br />
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.<br />
<br />
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:<br />
<br />
{| class="wikitable"<br />
!CSS class name<br />
!Description<br />
|-<br />
!.chart-background<br />
|Color etc. for the chart background<br />
|-<br />
!.text.axes<br />
|Font and color for the chart axes<br />
|-<br />
!.buttons<br />
|Size and color for the buttons (shift etc.)<br />
|-<br />
!.gridlines<br />
|Size and color for gridlines generally<br />
|-<br />
!.xaxis<br />
|Font, size and color for xaxis<br />
|-<br />
!.yaxis<br />
|Font, size and color for yaxis<br />
|-<br />
!.xticks<br />
|Font, size and color for xticks<br />
|-<br />
!.yticks<br />
|Font, size and color for yticks<br />
|-<br />
!.crosshair<br />
|Font, size and color (foreground/background) for the crosshair cursor<br />
|-<br />
!.caption<br />
|Font, size and color for text buttons for legend and cursor switching<br />
|-<br />
!.legend<br />
|Font, size and background color for legend window<br />
|-<br />
|-<br />
|}<br />
<br />
[[#Beispiel_chart|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
| name of the reading to set on FHEM (<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|<br />
|-<br />
!align="right" |data-off-background-color<br />
|fix color attribute for OFF state or DEVICE:READING for dynamic setting <br />
|#505050<br />
|-<br />
!align="right" |data-off-color<br />
|fix color attribute for Off state or DEVICE:READING for dynamic setting<br />
|#505050<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-get-warn<br />
|RegEx to extract reading part for warn icon. <br />
|<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_chart">'''Chart'''</div><br />
<br />
Display a chart with similar capabilities as the FHEM plots<br />
<br />
<pre><br />
<div class="normal"><br />
data-type="chart"<br />
data-logdevice='["Log.Garden","Log.Garden","Log.Garden","Log.Predicted"]'<br />
data-columnspec='["4:Garden.T:15:","10:Garden.T:0:delta-h","10:Garden.T:0:delta-d","4:predicted.*:15:"]'<br />
data-style='["ftui l0fill","ftui l1fill","ftui l2","ftui l3dot"]'<br />
data-ptype='["lines","histeps","histeps","cubic"]'<br />
data-uaxis='["primary","secondary","secondary","primary"]'<br />
data-legend='["Temperature","Rain/hour","Rain/day","Predicted Temp."]'<br />
data-yunit="°C"<br />
data-ytext="Temperature"<br />
data-minvalue="auto"<br />
data-maxvalue="auto"<br />
data-yunit_sec="mm"<br />
data-ytext_sec="Rain (mm)"<br />
data-height="250"<br />
data-yticks="auto"<br />
data-minvalue_sec="auto"<br />
data-maxvalue_sec="auto"<br />
data-nofulldays="true"<br />
data-daysago_start="2013-08-13T00:00:00"<br />
data-daysago_end="2013-08-14T00:00:00"<br />
data-cursorgroup="1"<br />
data-scrollgroup="1"<br />
data-xticks="auto"><br />
</div><br />
</pre><br />
<br />
[[Datei:chart_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=13620FHEM Tablet UI2016-01-18T22:35:17Z<p>Nobby1805: /* Widgets -- Konfiguration */ Push aktualisiert</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
Über <br />
<code><nowiki>update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master</nowiki></code><br />
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen "update check" sieht man dann gleich alle Updates aus beiden "Welten".<br />
<br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
== Positioning ==<br />
<br />
*container : new box or new row<br />
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)<br />
*inline : positioning elements in a row, no line break<br />
*top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
*left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
*right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
*top-narrow : -15px closer on top (top-narrow-2x -> -30px; top-narrow-10 -> -10px)<br />
*centered : horizontal centered<br />
*left-align : align text left<br />
*right-align : align text right<br />
*wider : 15px extra space for the widget all around<br />
*narrow : shorter distant to the widget above<br />
*fullsize : 100% in width and height<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots <br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|-<br />
|}<br />
<br />
<br />
<div id="chart">'''CHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed<br />
|'-' or omitting this data means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int") or or array of columnspecs if more than one graph shall be displayed<br />
|-<br />
|-<br />
!align="right" |data-style<br />
|name of the graph style to be used (e.g. 'SVGplot l0' or 'ftui l0dash') or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.<br />
|-<br />
|-<br />
!align="right" |data-ptype<br />
|name of the plot type (e.g. 'lines' or 'fa-cog') or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome ('fa-...'), open automation ('oa-...') and fhem symbols ('fs-...'))<br />
|'lines'<br />
|-<br />
!align="right" |data-uaxis<br />
|name of the axis to be used ('primary' or 'secondary') or or array of axis' to be used if more than one graph shall be displayed. The 'primary' axis is labelled on the left side, the 'secondary' axis is labelled on the right side<br />
|'primary'<br />
|-<br />
!align="right" |data-legend<br />
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.<br />
|-<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|10<br />
|-<br />
!align="right" |data-minvalue_sec<br />
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|30<br />
|-<br />
!align="right" |data-maxvalue_sec<br />
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines (related to primary axis). A value of 'auto' means that the value is calculated from the data displayed dynamically.<br />
|'auto'<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick lines (in minutes). A value of 'auto' means that the value is calculated from the data displayed dynamically<br />
|'auto'<br />
|-<br />
!align="right" |data-daysago_start<br />
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|0<br />
|-<br />
!align="right" |data-daysago_end<br />
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like ('2013-10-23'), the time portion of the string is only used when <code>data-nofulldays</code> is 'true'.<br />
|-1<br />
|-<br />
!align="right" |data-nofulldays<br />
|switch to activate/deactivate rounding of the xaxis start and end values to full days ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-ytext<br />
|text to be shown besides the primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-ytext_sec<br />
|text to be shown besides the secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks for primary y axis.<br />
|-<br />
|-<br />
!align="right" |data-crosshair<br />
|switch to activate/deactivate the crosshair cursor ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-cursorgroup<br />
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.<br />
|-<br />
|-<br />
!align="right" |data-scrollgroup<br />
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.<br />
|-<br />
|-<br />
!align="right" |data-showlegend<br />
|switch to activate/deactivate the initial display of the legend window ('true' or 'false')<br />
|'false'<br />
|-<br />
!align="right" |data-yunit_sec<br />
|unit of the value to show beside of each Y ticks for secondary y axis.<br />
|-<br />
|-<br />
!align="right" |data-width<br />
|fixed size for width (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |data-height<br />
|fixed size for height (in&nbsp;% or px)<br />
|-<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks, nobuttons<br />
|<br />
|-<br />
|}<br />
<br />
<code>data-logfile</code> can be omitted in this case the default value "-" will be used. This means that the current logfile is going to be used.<br />
<br />
There are several buttons that control the dynamic behaviour of the chart. The <-, ->, + and - buttons shift and zoom the displayed data. The "legend" and "cursor" buttons are switching on and off the display of the legend window and the crosshair cursor respectively.<br />
<br />
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).<br />
<br />
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.<br />
<br />
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:<br />
<br />
{| class="wikitable"<br />
!CSS class name<br />
!Description<br />
|-<br />
!.chart-background<br />
|Color etc. for the chart background<br />
|-<br />
!.text.axes<br />
|Font and color for the chart axes<br />
|-<br />
!.buttons<br />
|Size and color for the buttons (shift etc.)<br />
|-<br />
!.gridlines<br />
|Size and color for gridlines generally<br />
|-<br />
!.xaxis<br />
|Font, size and color for xaxis<br />
|-<br />
!.yaxis<br />
|Font, size and color for yaxis<br />
|-<br />
!.xticks<br />
|Font, size and color for xticks<br />
|-<br />
!.yticks<br />
|Font, size and color for yticks<br />
|-<br />
!.crosshair<br />
|Font, size and color (foreground/background) for the crosshair cursor<br />
|-<br />
!.caption<br />
|Font, size and color for text buttons for legend and cursor switching<br />
|-<br />
!.legend<br />
|Font, size and background color for legend window<br />
|-<br />
|-<br />
|}<br />
<br />
[[#Beispiel_chart|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
| name of the reading to set on FHEM (<command> <device> <reading> <value>) |<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|<br />
|-<br />
!align="right" |data-off-background-color<br />
|fix color attribute for OFF state or DEVICE:READING for dynamic setting <br />
|#505050<br />
|-<br />
!align="right" |data-off-color<br />
|fix color attribute for Off state or DEVICE:READING for dynamic setting<br />
|#505050<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-get-warn<br />
|RegEx to extract reading part for warn icon. <br />
|<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_chart">'''Chart'''</div><br />
<br />
Display a chart with similar capabilities as the FHEM plots<br />
<br />
<pre><br />
<div class="normal"><br />
data-type="chart"<br />
data-logdevice='["Log.Garden","Log.Garden","Log.Garden","Log.Predicted"]'<br />
data-columnspec='["4:Garden.T:15:","10:Garden.T:0:delta-h","10:Garden.T:0:delta-d","4:predicted.*:15:"]'<br />
data-style='["ftui l0fill","ftui l1fill","ftui l2","ftui l3dot"]'<br />
data-ptype='["lines","histeps","histeps","cubic"]'<br />
data-uaxis='["primary","secondary","secondary","primary"]'<br />
data-legend='["Temperature","Rain/hour","Rain/day","Predicted Temp."]'<br />
data-yunit="°C"<br />
data-ytext="Temperature"<br />
data-minvalue="auto"<br />
data-maxvalue="auto"<br />
data-yunit_sec="mm"<br />
data-ytext_sec="Rain (mm)"<br />
data-height="250"<br />
data-yticks="auto"<br />
data-minvalue_sec="auto"<br />
data-maxvalue_sec="auto"<br />
data-nofulldays="true"<br />
data-daysago_start="2013-08-13T00:00:00"<br />
data-daysago_end="2013-08-14T00:00:00"<br />
data-cursorgroup="1"<br />
data-scrollgroup="1"<br />
data-xticks="auto"><br />
</div><br />
</pre><br />
<br />
[[Datei:chart_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CC-TC_Funk-Wandthermostat&diff=13451HM-CC-TC Funk-Wandthermostat2016-01-04T23:02:26Z<p>Nobby1805: /* Probleme */ typo</p>
<hr />
<div>Programmierbarer Raumthermostat, der bis zu vier [[HM-CC-VD Funk-Stellantrieb]] steuern kann.<br />
<br />
'''Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt).'''<br />
<br />
Nachfolgeprodukt ist der [[HM-CC-RT-DN]] bzw. (ab März 2014) [[HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP|HM-TC-IT-WM-W-EU]].<br />
<br />
Einstellungen und Informationen, die alle HomeMatic Thermostate betreffen, sind unter [[HomeMatic Type Thermostat#Temperaturlisten|HomeMatic Type Thermostat]] zu finden.<br />
<br />
= Features =<br />
* Am Raumthermostat programmierbare Tages- und Nachttemperatur.<br />
* Pro Wochentag können bis zu 24 Schaltpunkte definiert werden.<br />
* Anbindung von <ins>jeweils</ins> '''maximal''' 4 Tür- bzw. Fensterkontakten ([[HM-Sec-RHS]]) zur Absenkung der Temperatur auf einen eigens eingestellten Temperaturwert (ab Werk: 12°C) bei offenem Fenster bzw. offener Tür.<br />
* Anzeige der Temperatur und Luftfeuchtigkeit im Raum und Hintergrundbeleuchtung des Displays.<br />
<br />
Alle 120 bis 184 Sekunden überträgt der Wandthermostat vorhandene Befehle zu den Stellantrieben. Jeder empfangene Befehl wird vom Stellantrieb bestätigt und dann ausgeführt. Täglich gegen Mitternacht synchronisiert ein HM-CC-TC seine Uhrzeit mit der HomeMatic-Zentrale ([[CCU]], HMLAN).<br />
<br />
= Hinweise zum Betrieb mit FHEM =<br />
Vor dem Einsatz mit einer Zentrale sind erst alle Stellantriebe und Tür-/Fensterkontakte mit dem HM-CC-TC zu verbinden (P'''ee'''r).<br />
Damit das Ganze dann in FHEM auftaucht, muss der TC noch mit dem [[HMLAN Konfigurator]] gep'''ai'''rt werden.<br />
<br />
Mit <br />
<br />
<nowiki>set CUL hmPairForSec 300</nowiki><br />
setzt man das CUL / den HMLAN-Konfigurator für 5 Minuten in den Anlernmodus. Danach am Thermostaten 5 Sekunden lang die OK-Taste drücken und es wird eine Zeit von 20 auf 0 Sekunden gezählt:<br />
<br />
* Klappt das Anlernen in diesen 20 Sekunden, wird der Countdown sofort beendet, anschließend für ca. 2-3 Sekunden "OK" angezeigt und der Thermostat ist in FHEM eingebunden.<br />
* Gelingt das Anlernen nicht in den 20 Sekunden, erscheint nach Erreichen der "0" noch für 2 bis 3 Sekunden ein "NOK" ('''N'''ot '''OK''') im Display des TCs.<br />
<br />
'''Alternativ '''(und so vom Entwickler des Fhem-HomeMatic-Moduls empfohlen) kann wie folgt vorgegangen werden:<br />
<br />
* Alle Stellantriebe und Tür-/Fensterkontakte sowie den HM-CC-TC mit Fhem p'''ai'''ren (also ''set CUL hmPairForSec 300'' und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden).<br />
* Die Stellantriebe und Tür-/Fensterkontakte mit den ''Channels'' (siehe unten) p'''ee'''ren (siehe <nowiki>[http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan]</nowiki>). Hierzu werden die entsprechenden Fhem-Befehle über das Webinterface von Fhem erteilt.<br />
<br />
'''Hinweis:'''<br />
* Alle in der FHEM-Eingabezeile eingegebenen ''attr''-, ''define''-Befehle usw. müssen zum Schluss noch per Klick auf den "Save"-Button dauerhaft in der ''fhem.cfg'' gespeichert werden, sonst sind sie nach z.B. einem Systemabsturz verloren.<br />
* Falls in der FHEM-Weboberfläche für ihren HM-CC-TC etwas wie ''X CMDs pending'' steht, sollten Sie ihren HM-CC-TC zur Hand nehmen und für 20 Sekunden auf die OK-Taste drücken. Dadurch werden alle noch ausstehenden Befehle eingelesen.<br />
<br />
== Auszug aus der fhem.cfg ==<br />
Die nachfolgenden Einstellungen zum HM-CC-TC werden von FHEM <ins>weitestgehend</ins> automatisch gesetzt. Die Pfadangaben für die Log-Dateien sind system-, die Raumbenennungen benutzerabhängig. Zu ''autoReadReg''und ''expert''siehe unten. Neben dem eigentlichen Basis-Gerät (HM-CC-TC) werden in FHEM automatisch noch 3 weitere "Unter"-Geräte (Channels/Kanäle), nämlich <br />
<br />
* ''_Weather''<br />
* ''_Climate''<br />
* ''_WindowRec''<br />
<br />
definiert (durch das Anlernen des TC an FHEM; siehe unten), deren Benennung sich (jeweils mit einem vorangestellten Unterstrich "_") am Namen des Basis-Gerätes orientiert. <br />
<br />
'''Anmerkung: '''Die in den unten gezeigten ''fhem.cfg''-Auszügen markierten <ins>Peer</ins>-Einträge tauchen erst auf, sobald man die Daten aus dem TC mit ''set HM-CC-TC-Basisname getConfig''bzw. ''autoReadReg''ausgelesen hat.<br />
<br />
=== Hauptgerät ===<br />
<nowiki>define &lt;HM-CC-TC&gt;.Heizung CUL_HM 1DA491<br />
attr &lt;HM-CC-TC&gt;.Heizung actCycle 000:10<br />
attr &lt;HM-CC-TC&gt;.Heizung actStatus alive<br />
attr &lt;HM-CC-TC&gt;.Heizung autoReadReg 1<br />
attr &lt;HM-CC-TC&gt;.Heizung devInfo 00FFFF<br />
attr &lt;HM-CC-TC&gt;.Heizung expert 2_full<br />
attr &lt;HM-CC-TC&gt;.Heizung firmware 2.1<br />
attr &lt;HM-CC-TC&gt;.Heizung hmClass receiver<br />
attr &lt;HM-CC-TC&gt;.Heizung model HM-CC-TC<br />
attr &lt;HM-CC-TC&gt;.Heizung room &lt;IhrRaum&gt;<br />
attr &lt;HM-CC-TC&gt;.Heizung serialNr JE********<br />
attr &lt;HM-CC-TC&gt;.Heizung subType thermostat</nowiki><br />
=== Channel (Kanal) 01 _Weather ===<br />
<nowiki>define &lt;HM-CC-TC&gt;.Heizung_Weather CUL_HM 1DA49101 &lt;&lt;&lt;=== 01 = Kanal 1<br />
attr &lt;HM-CC-TC&gt;.Heizung_Weather model HM-CC-TC<br />
attr &lt;HM-CC-TC&gt;.Heizung_Weather peerIDs <br />
attr &lt;HM-CC-TC&gt;.Heizung_Weather room &lt;IhrRaum&gt;<br />
define FileLog_&lt;HM-CC-TC&gt;.Heizung_Weather FileLog /opt/fhem/log/&lt;HM-CC-TC&gt;.Heizung_Weather-%Y-%m.log &lt;HM-CC-TC&gt;.Heizung_Weather<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_Weather logtype text<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_Weather room CUL_HM,&lt;IhrRaum&gt;</nowiki><br />
=== Channel (Kanal) 02 _Climate ===<br />
<nowiki>define &lt;HM-CC-TC&gt;.Heizung_Climate CUL_HM 1DA49102 &lt;&lt;&lt;=== 02 = Kanal 2<br />
attr &lt;HM-CC-TC&gt;.Heizung_Climate model HM-CC-TC<br />
attr &lt;HM-CC-TC&gt;.Heizung_Climate peerIDs 1AD52B01,1B7A4C01,1C4CD101,1C48EC01, &lt;&lt;&lt;=== gepeerte HM-CC-VDs<br />
attr &lt;HM-CC-TC&gt;.Heizung_Climate room &lt;IhrRaum&gt;<br />
define FileLog_&lt;HM-CC-TC&gt;.Heizung_Climate FileLog /opt/fhem/log/&lt;HM-CC-TC&gt;.Heizung_Climate-%Y-%m.log &lt;HM-CC-TC&gt;.Heizung_Climate<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_Climate logtype text<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_Climate room CUL_HM,&lt;IhrRaum&gt;</nowiki><br />
=== Channel (Kanal) 03 _WindowRec ===<br />
<nowiki>define &lt;HM-CC-TC&gt;.Heizung_WindowRec CUL_HM 1DA49103 &lt;&lt;&lt;=== 03 = Kanal 3<br />
attr &lt;HM-CC-TC&gt;.Heizung_WindowRec model HM-CC-TC<br />
attr &lt;HM-CC-TC&gt;.Heizung_WindowRec peerIDs 1CFBB001, &lt;&lt;&lt;=== gepeerte HM-Sec-SCs<br />
attr &lt;HM-CC-TC&gt;.Heizung_WindowRec room &lt;IhrRaum&gt;<br />
define FileLog_&lt;HM-CC-TC&gt;.Heizung_WindowRec FileLog /opt/fhem/log/&lt;HM-CC-TC&gt;.Heizung_WindowRec-%Y-%m.log &lt;HM-CC-TC&gt;.Heizung_WindowRec<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_WindowRec logtype text<br />
attr FileLog_&lt;HM-CC-TC&gt;.Heizung_WindowRec room CUL_HM,&lt;IhrRaum&gt;</nowiki><br />
== Einstellungen eines HM-CC-TC lesen, anzeigen und sichern ==<br />
=== expert ===<br />
Anfang Februar 2013 wurde eine Änderung bei der Anzeige der so genannten ''Readings'' (Register usw.), also der Einstellungen bzw. Eigenschaften eines HM-Devices, eingeführt. '''Alle''' Werte sieht man nur noch, wenn man am HM-CC-TC das Attribut ''expert'' auf ''2_all'' setzt. Per '''default''' (nicht in ''fhem.cfg'' gesetzt) steht dieser Wert auf ''0_off'' (nur die notwendigsten Readings/Eigenschaften werden angezeigt). Mittelweg ist der Wert ''1_on''.<br />
<br />
Mittels<br />
<br />
<nowiki>attr &lt;HM-CC-TC-Name&gt; expert 2_full</nowiki><br />
in der FHEM-Befehlszeile mit anschließendem &lt;Enter&gt; setzt man diesen Level.<br />
<br />
Falls man mit '''Temperaturlisten''' arbeitet (siehe unten), dann kann man die komplette Liste im "Channel" (Kanal) ''&lt;HM-CC-TC-Name&gt;__Climate'' einsehen. Auch für diesen Kanal ist evtl. ein setzen des Attributes ''expert 2_full'' angeraten.<br />
<br />
<ins>Anmerkung:</ins> Es gibt auch noch sogenannte "hidden datas" (versteckte interne Werte, Register oder Eigenschaften deren Namen mit einem "." beginnen). Diese sieht man nur dann, wenn auch das Attribut ''showInternalValues 1'' gesetzt ist (default: 0 bzw. nicht gesetzt).<br />
<br />
=== autoReadReg ===<br />
Mitte Januar 2013 wurde das neue Attribut ''autoReadReg'' eingeführt, welches auf ''0'' voreingestellt ist (kein Eintrag in der ''fhem.cfg''). Das Setzen dieses Attributes auf ''1'' bewirkt, dass <ins>beim Neustart von FHEM</ins> die Einstellungen des entsprechenden HM-Gerätes ausgelesen werden. Dies wird bei mehreren ''autoReadReg''s automatisch zeitversetzt vorgenommen, um die Funk-Kommunikation nicht unnötig zu belasten.<br />
<br />
Mittels<br />
<br />
<nowiki>attr &lt;HM-CC-TC-Name&gt; autoReadReg 1 </nowiki><br />
in der FHEM-Befehlszeile mit anschließendem &lt;Enter&gt; setzt man diesen Wert.<br />
<br />
=== list ===<br />
Um sich alle Eigenschaften/Readings eines Gerätes anzusehen, gibt es den Befehl [[list]].<br />
<br />
Mittels<br />
<br />
<nowiki>list &lt;HM-CC-TC-Name&gt;</nowiki><br />
und Bestätigung mit &lt;Enter&gt; erhalten Sie die gewünschte Anzeige Ihres TCs <ins>incl.</ins> seiner 3 Channels. Über<br />
<br />
<nowiki>list &lt;HM-CC-TC-Name&gt;_&lt;Channel-Name&gt;</nowiki><br />
werden nur die Daten des angegebenen Channels angezeigt.<br />
<br />
=== Einstellungen sichern ===<br />
Die Durchführung von ''autoReadReg'' kann durchaus mehrere Minuten dauern. Anschließend besteht die Möglichkeit, diese per<br />
<br />
<nowiki>get HM-CC-TC-Basisname saveConfig [/Verzeichnis/mit/Schreibrechten/]&lt;Dateiname&gt;</nowiki> <br />
für jedes HM-CC-TC getrennt zu sichern (für eine später notwendige Wiederherstellung). Die Sicherungsdatei wird regulär im ''modpath'' (siehe ''fhem.cfg'') abgelegt. Falls dies nicht zum Erfolg führt (es wird - ohne Fehlermeldungen bei regulärem ''verbose'' und ''loglevel'' - im ''modpath'' keine Datei angelegt), müssen Sie vor dem Dateinamen einen vollständigen Pfad mit Schreibrechten für den Benutzer, unter dem FHEM läuft, angeben.<br />
<br />
In der <ins>Log-Datei</ins> von FHEM erscheinen danach Meldungen folgender Art<br />
<br />
<nowiki>&lt;Datum&gt;_&lt;Zeit&gt; 2: CUL_HM set &lt;HM-CC-TC-Name&gt; statusRequest rxt:12<br />
&lt;Datum&gt;_&lt;Zeit&gt; 2: CUL_HM set &lt;HM-CC-TC-Name&gt; getConfig rxt:12</nowiki><br />
Hierbei kann es (im <ins>Event monitor</ins> von FHEM) zu folgenden Fehlermeldungen kommen<br />
<br />
<nowiki>&lt;Datum&gt;_&lt;Zeit&gt; CUL_HM &lt;HM-CC-TC-Name&gt; RESPONSE TIMEOUT:RegisterRead<br />
&lt;Datum&gt;_&lt;Zeit&gt; CUL_HM &lt;HM-CC-TC-Name&gt; RESPONSE TIMEOUT:PeerList<br />
&lt;Datum&gt;_&lt;Zeit&gt; CUL_HM &lt;HM-CC-TC-Name&gt; RESPONSE TIMEOUT:StatusReq</nowiki><br />
Diese Meldungen können auch mehrfach pro Gerät auftreten. Dann hat das Auslesen der Einstellungen nicht geklappt und sollte nochmals durchgeführt werden. Dafür muss man FHEM aber nicht neu starten, sondern das HM-Device per <br />
<br />
<nowiki>set &lt;HM-CC-TC-Name&gt; getConfig</nowiki><br />
in der Befehlszeile von FHEM und anschließendem &lt;Enter&gt; (nicht "save") darauf einstellen.<br />
<br />
Die Channels (z.B. &lt;HM-CC-TC-Name&gt;_Climate, _Weather, _WindowRec) eines HM-Gerätes brauchen nicht (können aber bei Bedarf) separat ausgelesen bzw. gesichert zu werden, da sie Bestandteil der Basisabfrage sind.<br />
<br />
== Funkprobleme auffangen ==<br />
Der wohl am häufigsten an den HM-CC-TC gesendete Befehl ist "set desired-temp", mit dem die Wunschtemperatur neu gesetzt wird.<br />
Funktioniert dieser Befehl jedoch nicht zuverlässig, wird die Wohnung ggf. zu lange oder nicht rechtzeitig beheizt.<br />
Der folgende Mechanismus soll die Sicherheit erhöhen, indem die Antworten des HM-CC-TC geprüft werden und ggf. das Funktelegramm erneut gesendet wird.<br />
<br />
Um den Sollwert zum erneuten Senden des Funktelegramms verfügbar zu haben, wird ein dummy definiert:<br />
<br />
<nowiki>define HM_TC_Solltemperatur dummy</nowiki><br />
Wann immer die Solltemperatur geändert wird, setzt man die neue desired-temp nicht nur auf dem HM-TC-CC (hier HM_TC genannt), sondern auch auf dem dummy. Der Befehl (z.B. in der [[Zuhause-Status|Routine zum HomeStatus]]) sieht dann so aus:<br />
<br />
<nowiki>set HM_TC desired-temp 21;set HM_TC_Solltemperatur 21</nowiki><br />
Falls das ausgehende Funktelegramm verlorengeht, fehlt die Antwort "command accepted". Dies kann mit einem watchdog aufgefangen werden, der dann den Befehl an den HM-CC-TC erneut sendet:<br />
<br />
<nowiki>define w_HM_TC watchdog HM_TC:set_desired-temp.* 00:02:30 HM_TC_Climate:CommandAccepted:.yes { \<br />
Log 1, "&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; w_HM_TC desired temp - missing response.";\<br />
fhem("set HM_TC desired-temp ".Value("HM_TC_Solltemperatur"));\<br />
}</nowiki><br />
Falls ein Fehler bei der Funkkommunikation auftritt, erhält man die Antwort "missing ACK" oder "NACK". Auch in diesem Fall soll das Telegramm zum Ändern der Wunschtemperatur erneut an den HM-CC-TC gesendet werden:<br />
<br />
<nowiki>define n_HM_TC_err notify HM_TC:(MISSING.ACK.*|.*NACK.*) {\<br />
Log 1, "&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; n_HM_TC desired temp - missing ack/nack.\n";\<br />
fhem("set HM_TC desired-temp ".Value("HM_TC_Solltemperatur"));\<br />
}</nowiki><br />
Mit diesen beiden Helfern ist die Funkkommunikation zum HM-CC-TC sehr zuverlässig.<br />
<br />
== Plots / Grafiken ==<br />
=== Problem ===<br />
Durch ''autocreate'' wird zwar ein Log angelegt, aber kein Plot (Grafische Auswertung). Dem kann man aber abhelfen (siehe unten).<br />
<br />
=== Plots erzeugen ===<br />
''PGM2'' ist die Standardansicht des Fhem-Web-Interfaces. Um hier Plots/Grafiken zu erzeugen einfach unter dem ''Filelog'' des Thermostaten das ''attr logtype'' auf ''temp4hum6:Plot,text'' setzen und es wird ein Plot-Link neben dem Text-Link angezeigt. Nun können Sie auf diesen Plot-Link klicken und ...<br />
<br />
=== alternative Plots ===<br />
Mit dem fht.gplot funktioniert die Anzeige der Ventilstellung (actuator) nicht.<br />
<br />
Mit folgendem angepassten .gplot File wird die gemessene Temperatur und Ventilstellung angezeigt. <br />
<br />
<nowiki>############################ <br />
# Display the measured temp and the actuator. <br />
# Corresponding FileLog definition: <br />
# define &lt;filelogname&gt; FileLog /var/log/fhem/actuator_name-%Y.log &lt;actuator_name&gt;:(measured-temp|actuator).* <br />
<br />
set terminal png transparent size &lt;SIZE&gt; crop <br />
set output '&lt;OUT&gt;.png' <br />
set xdata time <br />
set timefmt &quot;%Y-%m-%d_%H:%M:%S&quot; <br />
set xlabel &quot; &quot; <br />
set ytics nomirror <br />
set y2tics <br />
#set ytics <br />
set title '&lt;L1&gt;' <br />
set grid xtics y2tics <br />
<br />
set y2label &quot;Temperatur in C&quot; <br />
set ylabel &quot;Ventil (%)&quot; <br />
<br />
#FileLog 4:measured:10: <br />
#FileLog 4:actuator:50: <br />
<br />
plot \ <br />
&quot;&lt; egrep 'temperature' &lt;IN&gt;&quot;\ <br />
using 1:4 axes x1y2 title 'Temperatur in C' with lines,\ <br />
&quot;&lt; egrep 'actuator' &lt;IN&gt;&quot;\ <br />
using 1:4 axes x1y1 title 'Ventil (%)' with lines\</nowiki><br />
=== Alles-drin-Plot ===<br />
Dazu nimmt man folgendes .gplot (bitte beachten, dass hierfür alle Parameter nach der define-Anweisung in das Logfile geschrieben werden):<br />
<br />
<nowiki>############################<br />
# Display the measured temp and the actuator.<br />
# Corresponding FileLog definition: <br />
# define &lt;filelogname&gt; FileLog /var/log/fhem/HM_CC_TC-%Y.log &lt;HM_CC_TC-name&gt;<br />
set terminal png transparent size &lt;SIZE&gt; crop<br />
set output '&lt;OUT&gt;.png'<br />
set xdata time<br />
set timefmt &quot;%Y-%m-%d_%H:%M:%S&quot;<br />
set xlabel &quot; &quot;<br />
set ytics nomirror<br />
set y2tics<br />
#set ytics<br />
set title '&lt;L1&gt;'<br />
set grid xtics y2tics<br />
set y2label &quot;Temperature in C&quot;<br />
set ylabel &quot;Actuator (%)&quot;<br />
#FileLog 4:temperature:0:<br />
#FileLog 4:desired:0:<br />
#FileLog 4:humidity:0:<br />
#FileLog 4:actuator:0:int<br />
plot \<br />
&quot;&lt; awk '/temperature/{print $1, $4}' &lt;IN&gt;&quot;\<br />
using 1:2 axes x1y2 title 'Measured temperature' with lines lw 2,\<br />
&quot;&lt; awk '/desired/{print $1, $4}' &lt;IN&gt;&quot;\<br />
using 1:2 axes x1y2 title 'Desired temperature' with steps,\<br />
&quot;&lt; awk '/humidity/ {print $1, $4+0}' &lt;IN&gt;&quot;\<br />
using 1:2 axes x1y1 title 'Humidity (%)' with lines,\<br />
&quot;&lt; awk '/actuator/ {print $1, $4+0}' &lt;IN&gt;&quot;\<br />
using 1:2 axes x1y1 title 'Actuator (%)' with lines\</nowiki><br />
<br />
Anmerkung: Möglicherweise ist die obige Definiton fehlerhaft. Im Forum wird in {{Link2Forum|Topic=14812|LinkText=diesem Thread}} dargelegt, dass die Definition vielmehr wie folgt lauten müsse:<br />
<br />
<nowiki>############################<br />
# Display the measured temp and the actuator.<br />
<br />
# Corresponding FileLog definition: <br />
<br />
# define <filelogname> FileLog /var/log/fhem/HM_CC_TC-%Y.log <HM_CC_TC-name><br />
<br />
set terminal png transparent size <SIZE> crop<br />
set output '<OUT>.png'<br />
set xdata time<br />
set timefmt "%Y-%m-%d_%H:%M:%S"<br />
set xlabel " "<br />
set ytics nomirror<br />
set y2tics<br />
#set ytics<br />
set title '<L1>'<br />
set grid xtics y2tics<br />
set y2label "Temperatur in °C"<br />
set ylabel "Ventil (%)"<br />
#FileLog 4:measured-temp:0:<br />
#FileLog 4:desired-temp:0:<br />
#FileLog 4:humidity:0:<br />
#FileLog 4:actuator:0:int<br />
plot \<br />
"< awk '/temperature/{print $1, $4}' <IN>"\<br />
using 1:2 axes x1y2 title 'Temperatur' with lines lw 2,\<br />
"< awk '/desired/{print $1, $4}' <IN>"\<br />
using 1:2 axes x1y2 title 'Wunschtemperatur' with steps,\<br />
"< awk '/humidity/ {print $1, $4+0}' <IN>"\<br />
using 1:2 axes x1y1 title 'Feuchte (%)' with lines,\<br />
"< awk '/actuator/ {print $1, $4+0}' <IN>"\<br />
using 1:2 axes x1y1 title 'Ventil (%)' with lines</nowiki><br />
<br />
== Steuerungsmodi ==<br />
Das Wandthermostat hat 4 verschiedene Steuerungsmöglichkeiten:<br />
<br />
* Auto (automatisch)<br />
* Cent (Zentrale)<br />
* Manu (manuell)<br />
* Prog / Koffer-Symbol (Urlaubs/Party-Modus, wird hier nicht näher erörtert)<br />
<br />
Der Steuerungsmodus wird über wiederholtes Drücken der linken Taste des HM-CC-TC ausgewählt bzw. gewechselt.<br />
<br />
'''Hinweis:''' Durch das P'''ai'''ren des HM-CC-TC <ins>und</ins> der Stellantrieb sowie Tür-/Fensterkontakte an Fhem verlieren Sie '''nicht''' die Steuerungsmöglichkeiten. Im Gegenteil: Nur wenn auch die VDs usw. mit Fhem gep'''ai'''rt sind, haben Sie die Möglichkeit, auch diese zu überwachen. Die Steuerung '''können''' Sie dennoch allein dem HM-CC-TC überlassen.<br />
<br />
=== Auto-Modus ===<br />
Im Modus '''Auto''' wird die Temperaturregelung über die im TC hinterlegten Temperaturlisten vorgenommen. Das Thermostat arbeitet also selbständig, somit unabhängig von einer Zentrale / FHEM. Nur in diesem Modus werden die evtl. per FHEM an das TC übermittelten "templist" abgearbeitet. Über das Senden von angepassten Temperatur-Listen kann eine indirekte Steuerung per FHEM erfolgen. '''Jederzeit''' kann zudem die Raumtemperatur über das Drehrad des Wandthermostaten oder die FHEM-Web-Oberfläche verändert werden. Diese ''Übersteuerung'' der Temperaturliste gilt bis zur nächsten Temperaturänderung nach der vorgenannten Liste.<br />
<br />
=== Cent-Modus ===<br />
Im Modus '''Cent''' steuert eine HomeMatic-Zentrale (CCU) oder eben ein FHEM-Server mit z.B. [[HMLAN Konfigurator]] zu den in der FHEM-Config hinterlegten Zeiten und mit den dort festgelegten Temperaturen. Fällt also die HM-Zentrale aus, erfolgt keine Steuerung der Thermostaten bzw. Heizungsventile mehr.<br />
<br />
<ins>Anmerkung</ins>: Der Modus ''cent'' erscheint nur dann im Display des HM-CC-TC, wenn er an eine Zentrale bzw. das [[CUL]] angelernt (gepairt) wurde.<br />
<br />
=== Manu-Modus ===<br />
Der Modus '''Manu''' übersteuert die im TC hinterlegten Temperaturlisten und die evtl. von der HM-Zentrale / dem FHEM <ins>vor Umstellung auf ''Manu''</ins> gesendeten Einstellungen. Es wird also bis zur nächsten Modusumstellung bzw. manuellen Temperaturverstellung der per Einstellrad gesetzte Temperaturwert gefahren. <br />
<br />
Aber auch in diesem Modus kann man die ''desired-temperature'' per FHEM verstellen. Der dadurch eingestellte Wert gilt ab sofort als der neue im ''Manu-Modus'' zu haltende Wert.<br />
<br />
=== Tastensperre ===<br />
Um zu verhindern, dass der Modus oder die Temperatur per Tasten bzw. Drehrad am HM-CC-TC verändert wird, kann eine Tastensperre gesetzt werden. Dies erfolgt mittels des Befehls:<br />
<br />
set <HM-CC-TC> regSet btnLock on<br />
<br />
Rückgängig machen geht per:<br />
<br />
set <HM-CC-TC> regSet btnLock off<br />
<br />
=== Auslesen des eingestellten Steuerungsmodus ===<br />
Der eingestellte Steuerungsmodus erscheint normalerweise in den ''Readings'' des HM-CC-TC unter ''controlMode''. Zusätzlich haben Sie die Möglichkeit, diesen Modus auch in der FHEM-Weboberfläche ''everything'' =&gt; Abschnitt ''thermostat'' zu sehen, '''wenn''' Sie für den HM-CC-TC das folgende Attribut setzen:<br />
<br />
<nowiki>attr &lt;HM-CC-TC-Name&gt; stateFormat T:measured-temp, H:humidity, VD:actuator, controlMode</nowiki><br />
Erscheint dort selbst nach einem <br />
<br />
<nowiki>set &lt;HM-CC-TC-Name&gt; getConfig</nowiki><br />
kein "Reading" ''controlMode'' oder keine Angabe des aktuell eingestellten Modus bzw. nur das Wort "controlMode", dann setzen Sie ihren HM-CC-TC von Hand in einen anderen Kontrollmodus und machen einen Browser-Refresh. Klappt dies nicht, geben Sie bitte erneut den Befehl<br />
<br />
<nowiki>set &lt;HM-CC-TC-Name&gt; getConfig</nowiki><br />
ein. Halten Sie anschließend die Taste &lt;OK&gt; am HM-CC-TC für 5 Sekunden gedrückt (oder warten ca. 5 Minuten) und machen in der FHEM-Weboberfläche einen Browser-Refresh (FF =&gt; &lt;F5&gt;). Jetzt sollte der manuell eingestellte Kontrollmodus erscheinen (ggfls. muss dieser Vorgang einmal wiederholt werden). Jetzt können Sie wieder den gewünschten Modus einstellen, erneut ein <br />
<br />
<nowiki>set &lt;HM-CC-TC-Name&gt; getConfig</nowiki><br />
absetzen und nach erneutem Drücken der &lt;OK&gt;-Taste für 5 Sekunden mit nachfolgendem Browser-Refresh sollte alles richtig angezeigt werden.<br />
<br />
Dies setzt natürlich voraus, dass der HM-CC-TC richtig gepairt ist.<br />
<br />
== Temperaturlisten ==<br />
Die Temperaturlisten des TC werden identisch mit denen anderer HomeMatic Thermostate verwaltet, siehe [[HomeMatic Type Thermostat#Temperaturlisten|HomeMatic Type Thermostat]].<br />
Beim TC ist der Kanal 4 (_Climate) für die Temperaturlisten zuständig.<br />
<br />
== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ==<br />
1. bei U-Bat. &lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit '''battery: low''' in den Readings und Events!<br />
<br />
2. bei U-Bat. &lt; 2,3 V erscheint im Display des VD zusätzlich '''F4''' mit '''battery: critical''' in den Readings und Events!<br />
<br />
Es wird dringend geraten, die Batterien bei battery: low zu tauschen!<br />
<br />
== Log-Auszug ==<br />
HM-CC-TC sendet alle 2 Minuten folgenden Statusbericht:<br />
<br />
<nowiki>Datum-Zeit &lt;Device Name&gt; T: 17.3 H: 66<br />
Datum-Zeit &lt;Device Name&gt; measured-temp: 17.3<br />
Datum-Zeit &lt;Device Name&gt; temperature: 17.3<br />
Datum-Zeit &lt;Device Name&gt; humidity: 66<br />
Datum-Zeit &lt;Device Name&gt; actuator: 96&#160;%</nowiki><br />
Bei Status-Änderungen sendet HM-CC-TC auch entsprechende Meldungen, z.b.:<br />
<br />
<nowiki>Datum-Zeit &lt;Device Name&gt; desired-temp: 15.5</nowiki><br />
<br />
= Probleme =<br />
<br />
== Verstellen der Solltemperatur am HM-CC-TC per Drehrad ==<br />
<br />
'''Symptom:''' Beim Verstellen der Solltemperatur per seitlichem Drehrad wurde die aktuelle Solltemperatur - '''egal ob''' man hoch oder runter drehte - immer nur in 0,5 °C Schritten '''runter''' gestellt, bis schließlich die Mindesttemperatur von 6,0 °C erreicht war. Weitere Änderungen waren nicht möglich<br />
<br />
'''Abhilfeversuch:''' Letztlich half nur das kurzzeitige Entfernen einer Batterie. Das danach für einige Zeit erscheinende Batteriesymbol zeigte den kleinstmöglichen guten Zustand an, in FHEM wurde das ''Reading'' des Batteriezustandes mit ''ok'' ausgegeben (wie in den Logs aber vorher auch). '''Letztlich half aber nur''' das Einsetzen neuer Batterien, denn die o.a. Störung trat nach ca. 2 Stunden erneut auf. Die "alten" Batterien (die, die dem HM-CC-TC ab Werk beilagen) hatten somit eine Nutzungsdauer von knapp 11 Monaten, waren aber auch in einem HM-CC-TC, der mit 4 Stck. HM-Sec-SC (mussten sehr oft "Meldung machen") und 4 Stck. HM-CC-VD gepeert war. ''Ohne Last'' zeigten die beiden alten AA-Batterien eine Spannung von jeweils 1,29 V an. <br />
'''Hinweis:''' Die unter ''Abhilfeversuch'' beschriebene Lösung war leider nur von kurzer Dauer. Bereits kurz danach zeigte der HM-CC-TC die gleichen Ausfallerscheinungen. Bei ELV gibt es das Bauteil für das Drehrad (Inkrementalgeber) als [http://www.elv.de/inkrementalgeber-fuer-fs20-str-fht-8-und-homematic-hm-cc-tc.html Ersatzteil]. Sobald dieses geliefert und ein Reparaturversuch unternommen wurde, wird an dieser Stelle weiter berichtet.<br />
<br />
'''Abhilfe: Autausch des Inkrementalgebers [1]:''' Löst das Problem zu 70%. Ganz exakt reagiert er auch danach nicht. Teile des Problems scheinen also tiefer zu liegen.<br />
<br />
Diese Anweisung ist nur für Fachpersonal in Elektronik geeignet, die über Erfahrung mit µ-Elektronik und einen ESD geeigneten Arbeitsplatz verfügen<br />
<br />
Benötigtes Werkzeug (Erfahrene THT Löter brauchen evtl. nicht alles)<br />
<br />
* Torx-Schraubendreher T7<br />
* Seitenschneider für Elektronik<br />
* Entlötsaugpumpe<br />
* Sauglitze<br />
* Lötzinn<br />
<br />
<br />
# Batteriedeckel entfernen und Batterie entnehmen<br />
# Auf der Rückseite vier Torx Schrauben lösen<br />
# Rückseite abnehmen<br />
# Acht Torx lösen (die drei um den Inkrementalgeber kommen später)<br />
# Baugruppe von der Frontseite trennen. Hinweis: Das LCD ist mit Leitgummi mit der Leiterplatte verbunden. Es kann daher sein, dass das LCD auf der Baugruppe klebt. In diesem Fall vorsichtig abnehmen, nicht die Verbindungsfläche zur Leiterplatte berühren oder zum LCD berühren, der Handschweiß verringert die Leitfähigkeit und ein Ausfall des LCD kann die Folge sein.<br />
# Drei Torx lösen, die das Handrad halten<br />
# die fünf Füße des Inkrementalgeber mit dem Seitenschneider lösen<br />
# Füße auslöten, Bohrungen mit Entlösaugpumpe und Sauglitze reinigen<br />
# Neuen Inrementalgeber einlöten (Einbauseite beachten)<br />
# In umgekehrter Reihenfolge wieder zusammenbauen<br />
<br />
<br />
Auf Wunsch stelle ich auch Bilder rein, das ganze ist mechanisch aber nicht sehr anspruchsvoll. Wer löten kann sollte keine Probleme haben.<br />
<br />
== HM-CC-TC misst zu hohe/niedrige Luftfeuchte-Werte oder Temperaturen > 100°C ==<br />
<br />
'''Symptom:''' In den Fhem-Logs und demzufolge auch in den Plots/Grafiken eines seit über 18 Monaten im Einsatz befindlichen HM-CC-TC wurden viel zu hohe (einzelne Spitzenwerte von 98 oder 99 %) bzw. ständig zu niedrige (um die 20 oder sogar vereinzelt nur 2 %) Werte für die relative Luftfeuchte gemessen (im direkten Vergleich zu anderen HM-CC-TCs). Die anderen Werte (Temperatur, Actuator) waren aber schlüssig.<br />
<br />
'''Abhilfe:''' Batteriewechsel. Die alten Batterien hatten (unbelastet) noch knapp über 1 V Spannung.<br />
<br />
'''Hinweis:''' Eine Batteriewarnung des Gerätes gab es nicht. Im Display war das entsprechende Symbol noch auf 1 Balken.<br />
<br />
= Firmware =<br />
Aktuelle Firmware-Version: 2.1<br />
<br />
= Links =<br />
* [1] Anleitung [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-CC-TC_UM_GE_eQ-3_110405.pdf PDF] <br />
* [2] Ersatzteil Inkrementalgeber [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=41344 ELV]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Feuchtesensoren]]<br />
[[Kategorie:Temperatursensoren]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=13227HM-CFG-LAN LAN Konfigurations-Adapter2015-12-11T17:29:43Z<p>Nobby1805: /* Häufiger automatischer Neustart ("Reboot") */ weiteren Logeintrag der manchmal kommt hinzugefügt</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-CFG-LAN.jpg<br />
|Bildbeschreibung=HM-CFG-LAN, Draufsicht und Seitenansicht<br />
|HWProtocol=HomeMatic<br />
|HWType=[[Interface]]<br />
|HWCategory=<br />
|HWComm=868,3&nbsp;MHz<br />
|HWChannels=n/a<br />
|HWVoltage=7,5&nbsp;VDC<br />
|HWPowerConsumption=ca.&nbsp;100&nbsp;mA<br />
|HWPoweredBy=Steckernetzteil<br />
|HWSize=100x30mm (ø&nbsp;x&nbsp;H)<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#HMLAN 00_HMLAN.pm]<br />
|ModOwner={{Link2FU|251|Martin / martinp876}}<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
Der [[HM-CFG-LAN LAN Konfigurations-Adapter]] ([http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/hm-cfg-lan.html HM-CFG-LAN]), kurz HMLAN Konfigurator, ist ein [[Interface|Schnittstellengerät]] (IO) ohne wesentliche Intelligenz. Die Aufgabe ist, ein Interface von der Zentrale zu den Geräten bereitzustellen. Ein HMLAN Konfigurator selbst steuert keine Geräte, er überträgt nur Nachrichten in beide Richtungen.<br />
<br />
== Alternativen ==<br />
Alternativen zu einem HMLAN Konfigurator sind [[HM-CFG-USB USB Konfigurations-Adapter]], [[CUN]], [[CUNO]] und [[CUL]].<br />
<br />
;HMUSB<br />
:Ein HMUSB hat nahezu identische Eigenschaften wie ein HMLAN Konfigurator. Der wesentliche Unterschied ist die Anbindung über USB anstatt Ethernet. Es hat sich erwiesen, dass USB eine bessere Latenz hat als LAN - also eine kürzere Verzögerung. Damit hat ein HMUSB leichte Vorteile zu HMLAN Konfigurator, was aber in den bei Weitem meisten Fällen durch die interne Timing Kalkulation abgefangen wird. Zudem können über den HMUSB (ab Version 2) auch Firmware-Updates OTA (over-the-air, also per Funkverbindung) auf entsprechende HM-Geräte (z.B. den HM-CC-RT-DN) durchgeführt werden.<br />
:Dafür bietet der HMLAN Konfigurator mit seinem Netzwerkanschluss Vorteile bei der Platzierung und bei der Ansteuerung (teilweise Timing-Probleme beim Anschluss von USB-Geräten an langsamere Raspberries und beim Durchschleifen von USB an fhem in einer virtuellen Maschine).<br />
<br />
; CUL/CUN(O)<br />
* Die Devices liefern keine eigenen Zeitstempel, wodurch eine Timingkorrektur durch FHEM nicht möglich ist. Je nach Systemgeschwindigkeit kann dies zu Problemen, Nachrichtenwiederholung und ggf. auch Nachrichtenverlust führen<br />
* Da USB kurze Reaktionszeiten und geringe Timingschwankungen hat ist der Einsatz von [[CUL]] und [[CUNO]] mit HM möglich. <br>Die Timingschwankungen der Ethernet-schnittstelle hingegen können in FHEM nicht ausgeglichen werden. Daher kann der Einsatz der [[CUNO]] über Ethernet '''nicht empfohlen''' werden.<br />
* Der Übertragungsmodus ''lazyConfig'' wird nicht unterstützt<br />
<br />
== Funktionen ==<br />
=== AES ===<br />
siehe [[AES Encryption]].<br />
<br />
=== Übertragungsmodus ===<br />
Es werden alle HM-Modi unterstützt. Diese sind Always, Burst, Wakeup und Config. Weiter gibt es lazyConfig und conditionalBurst. Siehe [[HomeMatic]] für Details.<br />
<br />
=== KeepAlive ===<br />
Der HMLAN Konfigurator baut eine Verbindung zur Zentrale über das LAN Interface auf. Der HMLAN Konfigurator erwartet alle 30 Sekunden eine keep-alive Nachricht von der Zentrale. Sollte diese ausbleiben, baut der HMLAN Konfigurator die LAN-Verbindung ab. Das führt zu einem Disconnect, der in State gemeldet wird. Die Verbindung wird automatisch wieder aufgebaut. <br />
FHEM sendet den keep-alive alle 25 Sekunden, was einen 5 Sekunden Puffer einräumt. In Internals '''msgKeepAlive''' kann man sehen, wie hoch die maximale Verzögerung der Zentrale beim Senden war und wie viel Puffer (in Sekunden) noch verfügbar war. <br />
Die Wiederholrate von 25 Sekunden des keep-alive kann mit dem Attribut '''wdTimer''' reduziert werden, was den Puffer erhöhen. Es wird jedoch dringend geraten, im Problemfall die Ursache der Verzögerung zu suchen und zu eliminieren.<br />
<br />
=== Nachrichtenübertragung - Performance ===<br />
* Mit Internal ''msgParseDly'' kann man ablesen, welche Verzögerung eine Nachricht vom Empfang im HMLAN Konfigurator bis zur Verarbeitung in der Zentrale hat.<br />
* Der HMLAN Konfigurator hält sich an den Funkstandard, der einem Sender eine maximale Sendezeit je Stunde erlaubt. Wird dieser Wert überschritten, stellt der HMLAN Konfigurator das Senden ein. Empfangen wird weiter. Ist eine Kapazität von 90% erreicht, wird im Reading ''cond'' ''Warning-HighLoad'' gemeldet. Bei cond ''ERROR-Overload'' wird das Senden eingestellt ist.<br />
<br />
=== Loggen/Mitschneiden ===<br />
Es stehen die üblichen Funktionen des Attribute [[verbose]] zu Verfügung. Darüber hinaus gibt es die Attribute ''hmProtocolEvents'' und ''logIDs''. Siehe auch [[Homematic Nachrichten sniffen]].<br />
<br />
== Vorbereitung ==<br />
{{Randnotiz|RNText='''"Usersoftware"/Firmware'''<br />
* V1.512 / 19.12.2013 / [http://www.eq-3.de/software.html Download]<br />
* V1.515 / 12.08.2014 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_515.zip Download]<br />
* V1.520 / 10.12.2015 / [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Download]<br />
}}<br />
[[Datei:HMLAN_CONFIG_IP_AES.png|300px|thumb|right|HomeMatic Lan-Interface Configurator]][[Datei:HMLAN_CONFIG_AES.png|300px|thumb|right|HomeMatic Konfigurator]]<br />
Bevor man den HMLAN mit Fhem nutzen kann, müssen noch Einstellungen vorgenommen werden. Dazu braucht man Software die bei [http://www.eq-3.de/software.html HomeMatic] in der Version 1.512 (Stand 19. Dezember 2013) herunter zu laden ist und nach der Installation mit der Verknüpfung "HomeMatic-Lan-Interface konfigurieren" oder "HomeMatic-Komponenten konfigurieren" gestartet wird und unter Windows läuft. Für andere Betriebssystem (siehe Anhang im Beitrag {{Link2Forum|Topic=11506|Message=67417|LinkText=Anleitung für OS X}}) braucht man eine Windows-Emulation. Dem HMLAN liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das richtige zu verwenden. Wenn das Konfigurationsprogramm den HMLAN-Konfigurator nicht findet, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe {{Link2Forum|Topic=10933|Message=62960|LinkText=Beitrag im Fhem Forum}} und [[HM-CFG-LAN_LAN_Konfigurations-Adapter#Bekannte_Probleme|bekannte Probleme]].<br />
<br />
=== Firmware ===<br />
Die aktuelle Firmware Version des HMLAN Konfigurators ist 0.964 (Stand November 2014). Ein Update ist unter ''"Update Firmware"'' mit der ''"HomeMatic Lan-Interface Configurator"'' Software möglich.<br />
<br />
=== IP Adresse ===<br />
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Servers von diesem eine IP-Adresse. Da Fhem zwecks Kommunikation die IP-Adresse wissen muss, ist es sinnvoll, dem HMLAN Konfigurator eine statische Adresse zuzuweisen. <br />
* mit der auf der CD mitgelieferten ''"HomeMatic Lan-Interface Configurator"'' Software unter ''"Change IP Settings"'' oder<br />
* im DHCP-Server eine feste IP-Adresse zuzuweisen (sofern dies vom gegeben DHCP Server als Konfigurationsoption unterstützt wird).<br />
<br />
=== AES Encryptet LAN Communication ===<br />
Wichtig ist, dass vor Verwendung die "AES Encryptet LAN Communication" abgeschaltet wird, da diese von FHEM nicht unterstützt wird. Dies ist unter ''"Change IP Settings"'' der ''"HomeMatic Lan-Interface Configurator"'' Software möglich. AES auf dem LAN ist zu unterscheiden von HMLAN auf der Funktschnittstelle. siehe [[AES Encryption]].<br />
<br />
== Einbindung in FHEM ==<br />
Der HMLAN-Konfigurator muss in FHEM [[Konfiguration|konfiguriert]] werden. Das erfolgt mit diesen Befehlen:<br />
:<code>define HMLAN1 HMLAN <IP Adresse>:1000</code><br />
:<code>attr HMLAN1 hmId 123ABC</code><br />
Der Name (im obigen Beispiel ''HMLAN1'') kann frei vergeben werden. Standard IP-Port des HMLAN-Konfigurators ist 1000.<br />
<br />
HMLAN kennt mehrere Attribute ([http://fhem.de/commandref.html#HMLAN commandref]). <br />
Wichtig ist es, die '''hmId''' zu vergeben. Diese ist ein 3-Byte hexadezimal-Wert, somit eine 6-stellige Zeichenfolge in '''Großbuchstaben'''. 000000 und FFFFFF sind ungültig. <br />
Wenn HM-Geräte mit der Zentrale gepairt werden, wird ihnen diese hmId eingetragen. Wechselt man die hmId müssen '''alle''' damit gepairten Geräte neu gepairt werden. <br />
<br />
Die Adresse wird in Grossbuchstaben eingegeben, siehe [[HMLAN_Konfigurator#Bekannte_Probleme|"Bekannte Probleme"]].<br />
<br />
Ein '''gleichzeitiger''' Zugriff von Fhem und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine Verbindung zulässt. Wollen Sie temporär z.B. mit der Windows-Software von HomeMatic zugreifen, ist Fhem zu deaktivieren.<br />
Sinnvoll ist es, die hmId mit der der PC-Software gleichzusetzen. Dann kann man von beiden Zentralen alternativ zugreifen ohne pairen zu müssen.<br />
<br />
=== Nutzung mehrere IOs ===<br />
==== Empfangen ====<br />
Man kann an einem FHEM mehrere IOs (HMLAN/USB, CUL/CUNO) betreiben. Generell empfangen alle IOs von allen Geräten in ihrem Empfangsbereich - unabhängig von der hmId. <br />
<br />
==== Senden ====<br />
An ein Gerät wird nur über das IO gesendet, das in Internals->IODev angezeigt wird. Nutzt man mehrere IOs sollte im HM Device das Attribut IODev auf das gewünschte IO setzen. Ansonsten sucht FHEM zufällig ein IO aus.<br />
<br />
==== hmId bei mehreren IOs ====<br />
Man kann allen IOs die gleiche HMId setzen. Das erlaubt die wahlfreie Umschaltung des Sende-IOs für das Device. Sollte man unterschiedliche hmIds wählen simuliert dies mehrere Zentralen. Das Device, an das man sendet, muss über ein IO angesprochen werden, mit einer hmId auf die das Device gepairt ist. Wenn mehrere IOs verwendet werden sollen, empfiehlt sich die Verwendung einer [[Virtueller Controller VCCU|VCCU]], ansonsten kann es zu Problemen ("<code>Unknown code</code>", Angriffsmeldungen, Probleme beim Pairen, ...) kommen.<br />
<br />
=== Attribute ===<br />
* '''hmId''': Adresse, die das IO auf der Funkstrecke nutzt. Es ist ein 3-byte hexwert (6 Zeichen) in Großbuchstaben. <br />
* '''hmkey, hmkey2..5''': bis zu 5 AES keys, die auf der Funkstrecke genutzt werden. Siehe [[AES Encryption]]<br />
* '''hmLanQlen''' legt fest, wie viele Nachrichten parallel gesendet werden dürfen, also auf wie viele Antworten die Zentrale parallel warten darf. Ein Wert von 1 ist max defensiv, erzeugt aber eine höhere Verzögerung. Wählt man einen höheren Wert kann es zu Nachrichten-Wiederholunge kommen. <br />
* '''hmProtocolEvents''': alle Nachrichten werden dekodiert ausgegeben. Diese Einstellung benötigt einige Performance insbesondere bei höheren Level. Man sollte es vorsichtig nutzen. <br />
* '''logIDs''': zeichnet Rohmessages auf und bietet die genaueste Methode bei der Fehlersuche. Da Nachrichten undekodiert ausgegeben werden ist es im Wesentlichen für Spezialisten von Bedeutung. Man gibt eine Komma getrennte Liste von IDs an, die geloggt werden sollen. Mit '''all''' werden alle IDs aufgezeichnet. '''sys''' zeichnet zusätzlich Systemmessages auf. '''sys,all''' somit alles.<br />
* '''respTime''': Antwortzeit des HMLAN auf ein keep-alive kann hier eingestellt werden. Normalerweise sollte das HMLAN in einer Sekunde der Zentrale antworten. Sollte dies nicht passieren, wird die Message wiederholt. Der Wert sollte nur in Ausnahmefällen verändert werden.<br />
<br />
=== Readings ===<br />
* '''Xmit-Events''': Anzahl der Ereignisse <br />
* '''cond''': aktueller Zustand des IO. <br />
** ok<br />
** Warning-HighLoad: 90% der 1h sendekapazität sind erreicht<br />
** ERROR-Overload: 100% der sendekapazität sind erreicht, '''das IO sendet nicht mehr'''<br />
** timeout<br />
** disconnected: die Verbindung FHEM /IO ist unterbrochen<br />
** Overload-released: das IO ist aus ERROR-Overload zurück im Sendebetrieb<br />
** init: Das IO wurde neu initialisiert. <br />
* '''prot_ERROR-Overload''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_Warning-HighLoad''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_disconnected''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_init''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_ok''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_timeout''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
<br />
=== Internals ===<br />
* '''XmitOpen''': 1 = HMLAN ist sende bereit<br />
* '''assignedIDs''': HMIDs der HM Devices, die über dieses IO bedient werden<br />
* '''assignedIDsCnt''': Anzahl der zugewiesenen HMIds von FHEM<br />
* '''assignedIDsReport''': Anzahl der HMIds, die das HMLAN angibt zu bedienen. Die Zahl sollte identisch sein mit assignedIDsCnt<br />
* '''msgKeepAlive''': dlyMax: maximale Verzögerung, die ein keep-alive hatte. bufferMin: der minimale Zeitpuffer, der übrig blieb, bis das keep-alive zu spät gekommen wäre. Der Puffer sollte 2 oder größer sein, sonst könnte man gelegentlich disconnects bekommen. <br />
* '''msgLoadEst''': Funkbelastung des HMLAN. Der Wert wird über 1 Stunde akkumuliert. Sollten 100% erreicht sein, wird das HMLAN den Sendebetrieb einstellen. Der Wert ist eine Hochrechnung in FHEM. Es ist möglich, dass das HMLAN mehr belastet ist. Die 10 min werte zeigen die Belastung in den letzten 10min Perioden an.<br />
* '''msgParseDly''': Verzögerung der Message Verarbeitung vom Empfang im IO bis zur Verarbeitung in FHEM. Eine Verzögerung kann durch Prozesse an LAN, durch FHEM Prozesse oder sonstige Prozesse/Applikationen der CPU hervorgerufen werden.<br />
<br />
== Pairen von Geräten ==<br />
Jedes HM Geräte muss vor Verwendung mit der HM-Zentrale gepairt werden. Dabei wird die hmId des gewählten IOs in das Device programmiert. Ändert man die hmId des IO, mit man das Device anspricht, muss man das Device neu pairen. <br />
Alle Geräte haben eine eigene Seriennummer, die nicht änderbar ist. Details zum Pairen auf der Seite [[HomeMatic Devices pairen]].<br />
<br />
== Bekannte Probleme ==<br />
=== Verbindung wird abgelehnt ===<br />
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreiem Betrieb die Verbindung ab:<br />
<pre style="width:400px;"><br />
Opening HMLAN1 device 192.168.168.60:1000<br />
192.168.168.60:1000 connection refused<br />
</pre><br />
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder Fhem) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurators, selbst wenn die installierte Version aktuell ist.<br />
<br />
Wenn das Konfigurationsprogramm Probleme hat, den HM-CFG-LAN LAN Konfigurations-Adapter zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden. Vereinzelt gibt es Hinweise darauf, dass es unter Windows 7 eventuell nicht reicht, die Netzwerkverbindungen im "Netzwerk- und Freigabecenter" zu deaktivieren, sondern ein Deaktivierung der Netzwerkadapter im Gerätemanager erforderlich ist.<br />
<br />
=== Häufiger automatischer Neustart ("Reboot") ===<br />
Der HMLAN Adapter startet ohne erkennbaren äußeren Anlass häufig neu. Das Problem ist auch im Forum unter der Überschrift {{Link2Forum|Topic=20776|LinkText=HMLAN Adapter wechselt permanent zwischen disconnected / connected}} beschrieben. Im FHEM Log erscheinen in diesem Fall folgende Meldungen:<br />
<pre style="width:600px;"><br />
... HMLAN_Parse: myHMLAN new condition timeout (je nach Timing, manchmal)<br />
... HMLanHostname:1000 disconnected, waiting to reappear (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition disconnected<br />
... HMLanHostname:1000 reappeared (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition init<br />
... HMLAN_Parse: myHMLAN new condition ok<br />
</pre><br />
Dieses Problem ist bei ELV [http://www.elv.de/topic/hm-lan-reboots.html bekannt] und soll mit der [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Konfigurationsadapter LAN Usersoftware V1.520 (10.12.2015)], bzw. der darin enthaltenen Firmware Version, behoben sein. Stand 11.12.2015 18:17 ist es noch niemanden gelungen die neue Firmware zu aktivieren oder die Versionsnummer der Firmware (0.964) wurde nicht verändert, es läuft z.Zt. eine Anfrage ob das Paket überhaupt die neue Firmware enthält.<br />
<br />
== Verbesserung der Antennenleistung ==<br />
Die Sende- und Empfangsleistung kann man verbessern. Details [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|hier]].<br />
<br />
== Wechsel von CUL zu HMLAN ==<br />
{{Randnotiz|RNTyp=y|RNText=Der hier beschriebene Wechsel sollte mittlerweile einfacher über die [[Virtueller Controller VCCU|VCCU]] realisierbar sein, indem erst ein weiteres IO-Device hinzugefügt und anschließend das zu ersetzende entfernt wird.}}<br />
Sollten ein [[CUL]] als IO für Homematic-Geräte dienen und ein Wechsel auf den HMLAN Konfigurator geplant sein, kann die folgende Vorgehensweise gewählt werden:<br />
<br />
* deaktivieren Sie das CUL in der ''fhem.cfg''.<br />
* konfigurieren Sie den HMLAN Konfigurator '''von Hand''' <br />
* Ändern sie das Attribut IODev aller HM-Devices vom Namen der CUL auf den Namen des HMLAN<br />
* sollte sie das Attribut IODev nicht nutzen (nicht empfohlen) achten sie darauf, dass im fhem.cfg das IO vor allen HM-devices definiert wird. Eine automatischen Zuweisung des IO zu den Devices ist sonst nicht möglich. <br />
** der HMLAN '''muss''' die gleiche ''hmId'' wie das bisherige CUL erhalten. Ansonsten müssen alle Geräte neu gepairt / angelernt werden.<br />
** AES muss im HMLAN abgeschaltet werden.<br />
* verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.<br />
* geben Sie in der FHEM-Befehlszeile ''shutdown restart'' gefolgt von &lt;Enter&gt; (nicht "save") ein (evtl. reicht auch ein ''rereadcfg'').<br />
* kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von Fhem die Kommunikation.<br />
<br />
Bitte beachten: Falls dem CUL keine explizite hmId per Attribut zugewiesen wurde, wird diese ID aus "F1&lt;FHT-ID&gt;" zusammengebaut. Die hmId muss auf dem HMLAN explizit gesetzt werden.<br />
<br />
== Links ==<br />
* [http://www.elv.de/homematic-lan-konfigurations-adapter.html Produktseite] bei ELV<br />
* [http://www.eq-3.de/software.html Software] für den Konfigurationsadapter von der eQ-3 Site<br />
* [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|HM LAN Konfig-Adapter Antenne verbessern]]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Interfaces]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&diff=13226HM-CFG-LAN LAN Konfigurations-Adapter2015-12-11T17:18:37Z<p>Nobby1805: /* Häufiger automatischer Neustart ("Reboot") */ Hinweis auf unveränderte Versionsnummer der Firmware und Zweifel ob diese enthalten ist</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=HM-CFG-LAN.jpg<br />
|Bildbeschreibung=HM-CFG-LAN, Draufsicht und Seitenansicht<br />
|HWProtocol=HomeMatic<br />
|HWType=[[Interface]]<br />
|HWCategory=<br />
|HWComm=868,3&nbsp;MHz<br />
|HWChannels=n/a<br />
|HWVoltage=7,5&nbsp;VDC<br />
|HWPowerConsumption=ca.&nbsp;100&nbsp;mA<br />
|HWPoweredBy=Steckernetzteil<br />
|HWSize=100x30mm (ø&nbsp;x&nbsp;H)<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#HMLAN 00_HMLAN.pm]<br />
|ModOwner={{Link2FU|251|Martin / martinp876}}<br />
|HWManufacturer=ELV / eQ-3<br />
}}<br />
<br />
Der [[HM-CFG-LAN LAN Konfigurations-Adapter]] ([http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/hm-cfg-lan.html HM-CFG-LAN]), kurz HMLAN Konfigurator, ist ein [[Interface|Schnittstellengerät]] (IO) ohne wesentliche Intelligenz. Die Aufgabe ist, ein Interface von der Zentrale zu den Geräten bereitzustellen. Ein HMLAN Konfigurator selbst steuert keine Geräte, er überträgt nur Nachrichten in beide Richtungen.<br />
<br />
== Alternativen ==<br />
Alternativen zu einem HMLAN Konfigurator sind [[HM-CFG-USB USB Konfigurations-Adapter]], [[CUN]], [[CUNO]] und [[CUL]].<br />
<br />
;HMUSB<br />
:Ein HMUSB hat nahezu identische Eigenschaften wie ein HMLAN Konfigurator. Der wesentliche Unterschied ist die Anbindung über USB anstatt Ethernet. Es hat sich erwiesen, dass USB eine bessere Latenz hat als LAN - also eine kürzere Verzögerung. Damit hat ein HMUSB leichte Vorteile zu HMLAN Konfigurator, was aber in den bei Weitem meisten Fällen durch die interne Timing Kalkulation abgefangen wird. Zudem können über den HMUSB (ab Version 2) auch Firmware-Updates OTA (over-the-air, also per Funkverbindung) auf entsprechende HM-Geräte (z.B. den HM-CC-RT-DN) durchgeführt werden.<br />
:Dafür bietet der HMLAN Konfigurator mit seinem Netzwerkanschluss Vorteile bei der Platzierung und bei der Ansteuerung (teilweise Timing-Probleme beim Anschluss von USB-Geräten an langsamere Raspberries und beim Durchschleifen von USB an fhem in einer virtuellen Maschine).<br />
<br />
; CUL/CUN(O)<br />
* Die Devices liefern keine eigenen Zeitstempel, wodurch eine Timingkorrektur durch FHEM nicht möglich ist. Je nach Systemgeschwindigkeit kann dies zu Problemen, Nachrichtenwiederholung und ggf. auch Nachrichtenverlust führen<br />
* Da USB kurze Reaktionszeiten und geringe Timingschwankungen hat ist der Einsatz von [[CUL]] und [[CUNO]] mit HM möglich. <br>Die Timingschwankungen der Ethernet-schnittstelle hingegen können in FHEM nicht ausgeglichen werden. Daher kann der Einsatz der [[CUNO]] über Ethernet '''nicht empfohlen''' werden.<br />
* Der Übertragungsmodus ''lazyConfig'' wird nicht unterstützt<br />
<br />
== Funktionen ==<br />
=== AES ===<br />
siehe [[AES Encryption]].<br />
<br />
=== Übertragungsmodus ===<br />
Es werden alle HM-Modi unterstützt. Diese sind Always, Burst, Wakeup und Config. Weiter gibt es lazyConfig und conditionalBurst. Siehe [[HomeMatic]] für Details.<br />
<br />
=== KeepAlive ===<br />
Der HMLAN Konfigurator baut eine Verbindung zur Zentrale über das LAN Interface auf. Der HMLAN Konfigurator erwartet alle 30 Sekunden eine keep-alive Nachricht von der Zentrale. Sollte diese ausbleiben, baut der HMLAN Konfigurator die LAN-Verbindung ab. Das führt zu einem Disconnect, der in State gemeldet wird. Die Verbindung wird automatisch wieder aufgebaut. <br />
FHEM sendet den keep-alive alle 25 Sekunden, was einen 5 Sekunden Puffer einräumt. In Internals '''msgKeepAlive''' kann man sehen, wie hoch die maximale Verzögerung der Zentrale beim Senden war und wie viel Puffer (in Sekunden) noch verfügbar war. <br />
Die Wiederholrate von 25 Sekunden des keep-alive kann mit dem Attribut '''wdTimer''' reduziert werden, was den Puffer erhöhen. Es wird jedoch dringend geraten, im Problemfall die Ursache der Verzögerung zu suchen und zu eliminieren.<br />
<br />
=== Nachrichtenübertragung - Performance ===<br />
* Mit Internal ''msgParseDly'' kann man ablesen, welche Verzögerung eine Nachricht vom Empfang im HMLAN Konfigurator bis zur Verarbeitung in der Zentrale hat.<br />
* Der HMLAN Konfigurator hält sich an den Funkstandard, der einem Sender eine maximale Sendezeit je Stunde erlaubt. Wird dieser Wert überschritten, stellt der HMLAN Konfigurator das Senden ein. Empfangen wird weiter. Ist eine Kapazität von 90% erreicht, wird im Reading ''cond'' ''Warning-HighLoad'' gemeldet. Bei cond ''ERROR-Overload'' wird das Senden eingestellt ist.<br />
<br />
=== Loggen/Mitschneiden ===<br />
Es stehen die üblichen Funktionen des Attribute [[verbose]] zu Verfügung. Darüber hinaus gibt es die Attribute ''hmProtocolEvents'' und ''logIDs''. Siehe auch [[Homematic Nachrichten sniffen]].<br />
<br />
== Vorbereitung ==<br />
{{Randnotiz|RNText='''"Usersoftware"/Firmware'''<br />
* V1.512 / 19.12.2013 / [http://www.eq-3.de/software.html Download]<br />
* V1.515 / 12.08.2014 / [http://files.elv.de/Assets/Produkte/8/851/85128/Downloads/hm_cfg_lan_software_v1_515.zip Download]<br />
* V1.520 / 10.12.2015 / [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Download]<br />
}}<br />
[[Datei:HMLAN_CONFIG_IP_AES.png|300px|thumb|right|HomeMatic Lan-Interface Configurator]][[Datei:HMLAN_CONFIG_AES.png|300px|thumb|right|HomeMatic Konfigurator]]<br />
Bevor man den HMLAN mit Fhem nutzen kann, müssen noch Einstellungen vorgenommen werden. Dazu braucht man Software die bei [http://www.eq-3.de/software.html HomeMatic] in der Version 1.512 (Stand 19. Dezember 2013) herunter zu laden ist und nach der Installation mit der Verknüpfung "HomeMatic-Lan-Interface konfigurieren" oder "HomeMatic-Komponenten konfigurieren" gestartet wird und unter Windows läuft. Für andere Betriebssystem (siehe Anhang im Beitrag {{Link2Forum|Topic=11506|Message=67417|LinkText=Anleitung für OS X}}) braucht man eine Windows-Emulation. Dem HMLAN liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das richtige zu verwenden. Wenn das Konfigurationsprogramm den HMLAN-Konfigurator nicht findet, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe {{Link2Forum|Topic=10933|Message=62960|LinkText=Beitrag im Fhem Forum}} und [[HM-CFG-LAN_LAN_Konfigurations-Adapter#Bekannte_Probleme|bekannte Probleme]].<br />
<br />
=== Firmware ===<br />
Die aktuelle Firmware Version des HMLAN Konfigurators ist 0.964 (Stand November 2014). Ein Update ist unter ''"Update Firmware"'' mit der ''"HomeMatic Lan-Interface Configurator"'' Software möglich.<br />
<br />
=== IP Adresse ===<br />
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Servers von diesem eine IP-Adresse. Da Fhem zwecks Kommunikation die IP-Adresse wissen muss, ist es sinnvoll, dem HMLAN Konfigurator eine statische Adresse zuzuweisen. <br />
* mit der auf der CD mitgelieferten ''"HomeMatic Lan-Interface Configurator"'' Software unter ''"Change IP Settings"'' oder<br />
* im DHCP-Server eine feste IP-Adresse zuzuweisen (sofern dies vom gegeben DHCP Server als Konfigurationsoption unterstützt wird).<br />
<br />
=== AES Encryptet LAN Communication ===<br />
Wichtig ist, dass vor Verwendung die "AES Encryptet LAN Communication" abgeschaltet wird, da diese von FHEM nicht unterstützt wird. Dies ist unter ''"Change IP Settings"'' der ''"HomeMatic Lan-Interface Configurator"'' Software möglich. AES auf dem LAN ist zu unterscheiden von HMLAN auf der Funktschnittstelle. siehe [[AES Encryption]].<br />
<br />
== Einbindung in FHEM ==<br />
Der HMLAN-Konfigurator muss in FHEM [[Konfiguration|konfiguriert]] werden. Das erfolgt mit diesen Befehlen:<br />
:<code>define HMLAN1 HMLAN <IP Adresse>:1000</code><br />
:<code>attr HMLAN1 hmId 123ABC</code><br />
Der Name (im obigen Beispiel ''HMLAN1'') kann frei vergeben werden. Standard IP-Port des HMLAN-Konfigurators ist 1000.<br />
<br />
HMLAN kennt mehrere Attribute ([http://fhem.de/commandref.html#HMLAN commandref]). <br />
Wichtig ist es, die '''hmId''' zu vergeben. Diese ist ein 3-Byte hexadezimal-Wert, somit eine 6-stellige Zeichenfolge in '''Großbuchstaben'''. 000000 und FFFFFF sind ungültig. <br />
Wenn HM-Geräte mit der Zentrale gepairt werden, wird ihnen diese hmId eingetragen. Wechselt man die hmId müssen '''alle''' damit gepairten Geräte neu gepairt werden. <br />
<br />
Die Adresse wird in Grossbuchstaben eingegeben, siehe [[HMLAN_Konfigurator#Bekannte_Probleme|"Bekannte Probleme"]].<br />
<br />
Ein '''gleichzeitiger''' Zugriff von Fhem und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine Verbindung zulässt. Wollen Sie temporär z.B. mit der Windows-Software von HomeMatic zugreifen, ist Fhem zu deaktivieren.<br />
Sinnvoll ist es, die hmId mit der der PC-Software gleichzusetzen. Dann kann man von beiden Zentralen alternativ zugreifen ohne pairen zu müssen.<br />
<br />
=== Nutzung mehrere IOs ===<br />
==== Empfangen ====<br />
Man kann an einem FHEM mehrere IOs (HMLAN/USB, CUL/CUNO) betreiben. Generell empfangen alle IOs von allen Geräten in ihrem Empfangsbereich - unabhängig von der hmId. <br />
<br />
==== Senden ====<br />
An ein Gerät wird nur über das IO gesendet, das in Internals->IODev angezeigt wird. Nutzt man mehrere IOs sollte im HM Device das Attribut IODev auf das gewünschte IO setzen. Ansonsten sucht FHEM zufällig ein IO aus.<br />
<br />
==== hmId bei mehreren IOs ====<br />
Man kann allen IOs die gleiche HMId setzen. Das erlaubt die wahlfreie Umschaltung des Sende-IOs für das Device. Sollte man unterschiedliche hmIds wählen simuliert dies mehrere Zentralen. Das Device, an das man sendet, muss über ein IO angesprochen werden, mit einer hmId auf die das Device gepairt ist. Wenn mehrere IOs verwendet werden sollen, empfiehlt sich die Verwendung einer [[Virtueller Controller VCCU|VCCU]], ansonsten kann es zu Problemen ("<code>Unknown code</code>", Angriffsmeldungen, Probleme beim Pairen, ...) kommen.<br />
<br />
=== Attribute ===<br />
* '''hmId''': Adresse, die das IO auf der Funkstrecke nutzt. Es ist ein 3-byte hexwert (6 Zeichen) in Großbuchstaben. <br />
* '''hmkey, hmkey2..5''': bis zu 5 AES keys, die auf der Funkstrecke genutzt werden. Siehe [[AES Encryption]]<br />
* '''hmLanQlen''' legt fest, wie viele Nachrichten parallel gesendet werden dürfen, also auf wie viele Antworten die Zentrale parallel warten darf. Ein Wert von 1 ist max defensiv, erzeugt aber eine höhere Verzögerung. Wählt man einen höheren Wert kann es zu Nachrichten-Wiederholunge kommen. <br />
* '''hmProtocolEvents''': alle Nachrichten werden dekodiert ausgegeben. Diese Einstellung benötigt einige Performance insbesondere bei höheren Level. Man sollte es vorsichtig nutzen. <br />
* '''logIDs''': zeichnet Rohmessages auf und bietet die genaueste Methode bei der Fehlersuche. Da Nachrichten undekodiert ausgegeben werden ist es im Wesentlichen für Spezialisten von Bedeutung. Man gibt eine Komma getrennte Liste von IDs an, die geloggt werden sollen. Mit '''all''' werden alle IDs aufgezeichnet. '''sys''' zeichnet zusätzlich Systemmessages auf. '''sys,all''' somit alles.<br />
* '''respTime''': Antwortzeit des HMLAN auf ein keep-alive kann hier eingestellt werden. Normalerweise sollte das HMLAN in einer Sekunde der Zentrale antworten. Sollte dies nicht passieren, wird die Message wiederholt. Der Wert sollte nur in Ausnahmefällen verändert werden.<br />
<br />
=== Readings ===<br />
* '''Xmit-Events''': Anzahl der Ereignisse <br />
* '''cond''': aktueller Zustand des IO. <br />
** ok<br />
** Warning-HighLoad: 90% der 1h sendekapazität sind erreicht<br />
** ERROR-Overload: 100% der sendekapazität sind erreicht, '''das IO sendet nicht mehr'''<br />
** timeout<br />
** disconnected: die Verbindung FHEM /IO ist unterbrochen<br />
** Overload-released: das IO ist aus ERROR-Overload zurück im Sendebetrieb<br />
** init: Das IO wurde neu initialisiert. <br />
* '''prot_ERROR-Overload''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_Warning-HighLoad''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_disconnected''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_init''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_ok''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
* '''prot_timeout''': Anzahl des Events, Zeitstempel des letzten Auftretens<br />
<br />
=== Internals ===<br />
* '''XmitOpen''': 1 = HMLAN ist sende bereit<br />
* '''assignedIDs''': HMIDs der HM Devices, die über dieses IO bedient werden<br />
* '''assignedIDsCnt''': Anzahl der zugewiesenen HMIds von FHEM<br />
* '''assignedIDsReport''': Anzahl der HMIds, die das HMLAN angibt zu bedienen. Die Zahl sollte identisch sein mit assignedIDsCnt<br />
* '''msgKeepAlive''': dlyMax: maximale Verzögerung, die ein keep-alive hatte. bufferMin: der minimale Zeitpuffer, der übrig blieb, bis das keep-alive zu spät gekommen wäre. Der Puffer sollte 2 oder größer sein, sonst könnte man gelegentlich disconnects bekommen. <br />
* '''msgLoadEst''': Funkbelastung des HMLAN. Der Wert wird über 1 Stunde akkumuliert. Sollten 100% erreicht sein, wird das HMLAN den Sendebetrieb einstellen. Der Wert ist eine Hochrechnung in FHEM. Es ist möglich, dass das HMLAN mehr belastet ist. Die 10 min werte zeigen die Belastung in den letzten 10min Perioden an.<br />
* '''msgParseDly''': Verzögerung der Message Verarbeitung vom Empfang im IO bis zur Verarbeitung in FHEM. Eine Verzögerung kann durch Prozesse an LAN, durch FHEM Prozesse oder sonstige Prozesse/Applikationen der CPU hervorgerufen werden.<br />
<br />
== Pairen von Geräten ==<br />
Jedes HM Geräte muss vor Verwendung mit der HM-Zentrale gepairt werden. Dabei wird die hmId des gewählten IOs in das Device programmiert. Ändert man die hmId des IO, mit man das Device anspricht, muss man das Device neu pairen. <br />
Alle Geräte haben eine eigene Seriennummer, die nicht änderbar ist. Details zum Pairen auf der Seite [[HomeMatic Devices pairen]].<br />
<br />
== Bekannte Probleme ==<br />
=== Verbindung wird abgelehnt ===<br />
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreiem Betrieb die Verbindung ab:<br />
<pre style="width:400px;"><br />
Opening HMLAN1 device 192.168.168.60:1000<br />
192.168.168.60:1000 connection refused<br />
</pre><br />
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder Fhem) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurators, selbst wenn die installierte Version aktuell ist.<br />
<br />
Wenn das Konfigurationsprogramm Probleme hat, den HM-CFG-LAN LAN Konfigurations-Adapter zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden. Vereinzelt gibt es Hinweise darauf, dass es unter Windows 7 eventuell nicht reicht, die Netzwerkverbindungen im "Netzwerk- und Freigabecenter" zu deaktivieren, sondern ein Deaktivierung der Netzwerkadapter im Gerätemanager erforderlich ist.<br />
<br />
=== Häufiger automatischer Neustart ("Reboot") ===<br />
Der HMLAN Adapter startet ohne erkennbaren äußeren Anlass häufig neu. Das Problem ist auch im Forum unter der Überschrift {{Link2Forum|Topic=20776|LinkText=HMLAN Adapter wechselt permanent zwischen disconnected / connected}} beschrieben. Im FHEM Log erscheinen in diesem Fall folgende Meldungen:<br />
<pre style="width:550px;"><br />
... HMLanHostname:1000 disconnected, waiting to reappear (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition disconnected<br />
... HMLanHostname:1000 reappeared (myHMLAN)<br />
... HMLAN_Parse: myHMLAN new condition init<br />
... HMLAN_Parse: myHMLAN new condition ok<br />
</pre><br />
Dieses Problem ist bei ELV [http://www.elv.de/topic/hm-lan-reboots.html bekannt] und soll mit der [http://www.eq-3.de/Downloads/Software/Konfigurationsadapter/Konfigurationsadapter_LAN/HM-CFG-LAN_Usersoftware_V1_520_eQ-3_151207.zip Konfigurationsadapter LAN Usersoftware V1.520 (10.12.2015)], bzw. der darin enthaltenen Firmware Version, behoben sein. Stand 11.12.2015 18:17 ist es noch niemanden gelungen die neue Firmware zu aktivieren oder die Versionsnummer der Firmware (0.964) wurde nicht verändert, es läuft z.Zt. eine Anfrage ob das Paket überhaupt die neue Firmware enthält.<br />
<br />
== Verbesserung der Antennenleistung ==<br />
Die Sende- und Empfangsleistung kann man verbessern. Details [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|hier]].<br />
<br />
== Wechsel von CUL zu HMLAN ==<br />
{{Randnotiz|RNTyp=y|RNText=Der hier beschriebene Wechsel sollte mittlerweile einfacher über die [[Virtueller Controller VCCU|VCCU]] realisierbar sein, indem erst ein weiteres IO-Device hinzugefügt und anschließend das zu ersetzende entfernt wird.}}<br />
Sollten ein [[CUL]] als IO für Homematic-Geräte dienen und ein Wechsel auf den HMLAN Konfigurator geplant sein, kann die folgende Vorgehensweise gewählt werden:<br />
<br />
* deaktivieren Sie das CUL in der ''fhem.cfg''.<br />
* konfigurieren Sie den HMLAN Konfigurator '''von Hand''' <br />
* Ändern sie das Attribut IODev aller HM-Devices vom Namen der CUL auf den Namen des HMLAN<br />
* sollte sie das Attribut IODev nicht nutzen (nicht empfohlen) achten sie darauf, dass im fhem.cfg das IO vor allen HM-devices definiert wird. Eine automatischen Zuweisung des IO zu den Devices ist sonst nicht möglich. <br />
** der HMLAN '''muss''' die gleiche ''hmId'' wie das bisherige CUL erhalten. Ansonsten müssen alle Geräte neu gepairt / angelernt werden.<br />
** AES muss im HMLAN abgeschaltet werden.<br />
* verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.<br />
* geben Sie in der FHEM-Befehlszeile ''shutdown restart'' gefolgt von &lt;Enter&gt; (nicht "save") ein (evtl. reicht auch ein ''rereadcfg'').<br />
* kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von Fhem die Kommunikation.<br />
<br />
Bitte beachten: Falls dem CUL keine explizite hmId per Attribut zugewiesen wurde, wird diese ID aus "F1&lt;FHT-ID&gt;" zusammengebaut. Die hmId muss auf dem HMLAN explizit gesetzt werden.<br />
<br />
== Links ==<br />
* [http://www.elv.de/homematic-lan-konfigurations-adapter.html Produktseite] bei ELV<br />
* [http://www.eq-3.de/software.html Software] für den Konfigurationsadapter von der eQ-3 Site<br />
* [[Trick_der_Woche#HM_LAN_Konfig-Adapter_Antenne_verbessern|HM LAN Konfig-Adapter Antenne verbessern]]<br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Interfaces]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=VELUX_Solar-Rollladen_SSL&diff=13183VELUX Solar-Rollladen SSL2015-12-08T09:56:49Z<p>Nobby1805: /* Vorwort */ Typo</p>
<hr />
<div>{{SEITENTITEL:VELUX Solar-Rollladen SSL}}<br />
{{Infobox Modul<br />
|ModPurpose=Einbindung von Velux Solar-Rollladen SSL in FHEM<br />
|ModType=d<br />
|ModCmdRef=SOMFY<br />
|ModForumArea=<br />
|ModTechName=10_SOMFY.pm<br />
|ModOwner=({{Link2FU|8175|Forum}}/[[Benutzer Diskussion:no_Legend|Wiki]])<br />
}}<br />
<br />
== Vorwort ==<br />
Die Steuerung läuft bei mir selbst nun seit ein paar Tagen.<br />
Erfahrungen über einen längeren Zeitraum sind noch nicht vorhaden.<br />
Bis jetzt läuft es aber stabil.<br />
<br />
Es wird zwingend ein 433MHz Sender benötigt.<br />
CUL oder ähnliches.<br />
Man kann auch einen 866MHz zum Testen benutzten, wobei hier die Reichweiten Verkürzung zu beachten ist.<br />
<br />
== Nachteil ==<br />
Wird der Rolladen per Fernbedienung bewegt, bekommt dies FHEM nicht mit.<br />
Somit ist die Position des Rolladen nicht festzustellen.<br />
<br />
<br />
Die Position des Rolladen wird über die Dauer der zu fahrenden Zeit berechnet.<br />
Der Rolladen versendet seine Position nicht per Rückkanal.<br />
<br />
Desweitern sind die Commands des Somfy Moduls nicht deckend zu den Homematic Befehlen. Stand 2015-12-11<br />
<br />
== Verwendete Module ==<br />
Zur Steuerung wird das Somfy Rolladen Modul benutzt.<br />
Command Ref [http://fhem.de/commandref.html#SOMFY]<br />
<br />
== Erkennung der Steuerbaren Rolladen ==<br />
Es ist nur bekannt, dass die Rolläden mit folgendern Fernbedienung per FHEM zu steuern sind:<br />
[[Datei:Velux_ssl_solar_433_alt.png]]<br />
<br />
== Device in FHEM anlegen ==<br />
Ich empfehle das Device als neue Fernbedienung an den Rolladen anzulernen.<br />
<br />
Zuerst muss das Device in FHEM angelegt werden, '''Achtung jedes FHEM Device benötigt eine eindeutige ID.'''<br />
Es darf nicht zwei mal die gleiche ID benutzt werden.<br />
Das Anlegen der Device erfolgt in FHEM mit folgenden Befehl:<br />
<source lang="bash" style="width:50%;"><br />
define Rolladen.Velux SOMFY 000001<br />
</source><br />
<br />
Genau Definition siehe Command Ref<br />
<br />
Nun nimmt man die vorhandene Fernbedienung und drückt den Roten Taster auf der Rückseite.<br />
Das der Rolladen im Anlern-Modus ist, wird durch kurzzeitiges Hoch und Runter fahren des Rolladens Signalisiert.<br />
<br />
Nun wird das Device mit folgendem Befehlt an den Rolladen angelernt:<br />
<source lang="bash" style="width:50%;"><br />
set Rolladen.Velux prog<br />
</source><br />
<br />
Der Rolladen sollte das erfolgreiche anlernen mit erneutem kurzen Hoch und Runter fahren signalisieren.<br />
<br />
== Rolladen Laufzeit einstellen ==<br />
Damit die Position berechnet werden kann müssen noch folgenden 4 attribute gesetzt werden.<br />
Ansonsten gibt es keinen Open oder Closed status, sowie keine Richtige Position.<br />
<source lang="bash" style="width:50%;"><br />
drive-down-time-to-100<br />
drive-down-time-to-close<br />
drive-up-time-to-100<br />
drive-up-time-to-open<br />
</source><br />
<br />
Definition der Befehle erneut im Command Ref.<br />
<br />
[[Kategorie:Rollladensteuerung]]<br />
[[Kategorie:Other Components]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=VELUX_Solar-Rollladen_SSL&diff=13163VELUX Solar-Rollladen SSL2015-12-07T12:16:24Z<p>Nobby1805: /* Nachteil */ Typo</p>
<hr />
<div>== Vorwort ==<br />
Die Steuerung läuft bei mir selbst nun Seit ein paar Tagen.<br />
Erfahrungen über einen längeren Zeitraum sind noch nicht vorhaden.<br />
Bis jetzt läuft es aber stabil.<br />
<br />
Es wird zwingend ein 433MHz Sender benötigt.<br />
CUL oder ähnliches.<br />
Man kann auch einen 866MHz zum Testen benutzten, wobei hier die Reichweiten Verkürzung zu beachten ist.<br />
<br />
== Nachteil ==<br />
Wird der Rolladen per Fernbedienung bewegt, bekommt dies FHEM nicht mit.<br />
Somit ist die Position des Rolladen nicht festzustellen.<br />
<br />
<br />
Die Position des Rolladen wird über die Dauer der zu fahrenden Zeit berechnet.<br />
Der Rolladen versendet seine Position nicht per Rückkanal.<br />
<br />
Desweitern sind die Commands des Somfy Moduls nicht deckend zu den Homematic Befehlen. Stand 2015-12-11<br />
<br />
== Verwendete Module ==<br />
Zur Steuerung wird das Somfy Rolladen Modul benutzt.<br />
Command Ref [http://fhem.de/commandref.html#SOMFY]<br />
<br />
== Erkennung der Steuerbaren Rolladen ==<br />
Es ist nur bekannt, dass die Rolläden mit folgendern Fernbedienung per FHEM zu steuern sind:<br />
[[Datei:Velux_ssl_solar_433_alt.png]]<br />
<br />
== Device in FHEM anlegen ==<br />
Ich empfehle das Device als neue Fernbedienung an den Rolladen anzulernen.<br />
<br />
Zuerst muss das Device in FHEM angelegt werden, achtung jedes FHEM Device benötigt eine eindeutige ID.<br />
Es darf nicht zwei mal die gleiche ID benutzt werden.<br />
Das Anlegen der Device erfolgt in FHEM mit folgenden Befehl:<br />
<source lang="bash" style="width:50%;"><br />
define Rolladen.Velux SOMFY 000001<br />
</source><br />
<br />
Genau Definition siehe Command Ref<br />
<br />
Nun nimmt man die vorhandene Fernbedienung und drückt den Roten Taster auf der Rückseite.<br />
Das der Rolladen im anlern Modus ist, wird durch kurzzeitiges Hoch und Runter fahren des Rolladens Signalisiert.<br />
<br />
Nun wird das Device mit folgendem Befehlt an den Rolladen angelernt:<br />
<source lang="bash" style="width:50%;"><br />
set Rolladen.Velux prog<br />
</source><br />
<br />
Der Rolladen sollte das erfolgreiche anlernen mit erneutem Kurzen Hoch und Runter fahren signalisieren.<br />
<br />
== Rolladen Laufzeit einstellen ==<br />
Damit die Position berechnet werden kann müssen noch folgenden 4 attribute gesetzt werden.<br />
ansonsten gibt es auch keinen Open oder Closed status.<br />
<source lang="bash" style="width:50%;"><br />
drive-down-time-to-100<br />
drive-down-time-to-close<br />
drive-up-time-to-100<br />
drive-up-time-to-open<br />
</source><br />
<br />
Definition der Befehle erneut im Command Ref.</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=12812FHEM Tablet UI2015-11-07T22:15:40Z<p>Nobby1805: /* Widgets -- Konfiguration */ Erweiterung circlemenu</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des 'circle' im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11976FHEM Tablet UI2015-08-13T10:24:08Z<p>Nobby1805: /* Widgets -- Konfiguration */ Simplechart angepasst</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|'-' means current logfile<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to Show or an array of values for dynamic minY <br />
|10<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to Show or an array of values for dynamic maxY <br />
|30<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360 minutes<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-yunit<br />
|unit of the value to show beside of each Y ticks<br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize, noticks<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11955FHEM Tablet UI2015-08-12T21:24:35Z<p>Nobby1805: /* Widgets -- Konfiguration */ Playstream erweitert</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the control state from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for PLAY status to get. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for STOP status to get. <br />
|'off'<br />
|-<br />
!align="right" |data-volume<br />
|name of the reading to get the volume value (0-100) <br />
|volume<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert.<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=Diskussion:HM-SEC-SC_T%C3%BCr-Fensterkontakt&diff=11632Diskussion:HM-SEC-SC Tür-Fensterkontakt2015-07-09T22:05:39Z<p>Nobby1805: </p>
<hr />
<div>Sendet das Teil wirklich battery-Meldungen? Ich habe mehrere davon und noch nie eine Batt-Meldung gesehen. Allerdings haben meine FW 2.0 [[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 15:02, 29. Jun. 2014 (UTC)<br />
<br />
:Ja, meine zumindest. Das muss so eingerichtet werden: http://www.fhemwiki.de/wiki/HomeMatic_Type_ThreeState --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 18:50, 29. Jun. 2014 (UTC)<br />
<br />
:: Okay, werde ich mal testen. Seht informativer Thread. Ich habe das mal im Artikel ergänzt und auch auf den HomeMatic_Type_ThreeState Artikel verlinkt. Ich teste das sofort und werde dann ggf noch anpassen.<br />
::Dazu gehört auch, dass vermutlich auch der ActionDetector nicht geht, wenn man das nicht macht. [[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 23:55, 29. Jun. 2014 (UTC)<br />
<br />
:::Meine habe auch Firmware 2.0, also sollte es bei Dir auch laufen. --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:48, 30. Jun. 2014 (UTC)<br />
<br />
::::Habe gerade bei einen mit FW 2.0 die cyclicInfoMsg gesetzt. Anders als im Wiki beschrieben muss man aber gar nicht ein erneutes hmPairSerial setzen - das Drücken der Konfig-Taste genügt. (Lazy config wird offenbar nicht unterstützt). '''Traue mich nur nicht es gleich zu ändern'''. --[[Benutzer:Pfriemler|Pfriemler]] ([[Benutzer Diskussion:Pfriemler|Diskussion]]) 21:21, 9. Jul. 2015 (CEST)<br />
<br />
:::::Aber genau das ist die Wiki-Methodik ... falls jemand weiß, dass das falsch ist wird sie/er sich schon melden --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 00:05, 10. Jul. 2015 (CEST)<br />
<br />
== Neuer Sensor ...-SCo (optisch) ==<br />
Jemand hier Interesse, den neuen SCo ähnlich aufzubauen? Sonst mach ich das mal. Kann ich die Texte soweit zutreffend übernehmen?<br />
<hr /><br />
:Bevor es ein reines kopieren bei nur wenigen Unterschieden ist, würde ich es eher bevorzugen, wenn nur diese Unterschiede (mit Hinweis auf diese Seite natürlich) beschrieben werden. Im Übrigen finde ich diese Seite (HM-SEC-SC) bisher noch nicht übermäßig übersichtlich, da ließe sich meiner Ansicht nach noch einiges verbessern. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 05:59, 7. Nov. 2014 (UTC)</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11555FHEM Tablet UI2015-06-27T15:09:00Z<p>Nobby1805: /* Widgets -- Konfiguration */ Neu: Popup-Widget</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#popup|popup]]: a popup dialog which open on click on another widget <br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="popup">'''POPUP'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading where to get the alert value from<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value which trigger to open the dialog<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value which trigger to close the dialog <br />
|'off'<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width (in % or px)<br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height (in % or px)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_popup|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert.<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11531FHEM Tablet UI2015-06-23T08:08:45Z<p>Nobby1805: /* Widgets -- Konfiguration */ Erweiterung LABEL</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits-get<br />
|name of the DEVICE:Reading to colorize the label <br />
|data-device:data-get<br />
|-<br />
!align="right" |data-limits<br />
|an array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-limits-part<br />
|part number of the space separated value to show or a RegEx <br />
|'-1' -> all<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |data-substitution<br />
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert.<br />
<br />
<code>data-logfile</code> kann man auch weglassen, dann greift der Defaultwert "-". Damit wird das neuste Logfile gelesen.<br />
<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11511FHEM Tablet UI2015-06-19T07:44:59Z<p>Nobby1805: /* Widgets -- Konfiguration */ add nesgens widgets</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Oberfläche für Fhem<br />
|ModType=x<br />
|ModFTopic=34233<br />
|ModForumArea=Frontends<br />
|ModTechName=n.a.<br />
|ModOwner=setstate ({{Link2FU|7023|Forum}})<br />
}}<br />
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
== Installation ==<br />
* Im Befehls-Eingabefeld eingeben: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Im Befehls-Eingabefeld eingeben: <code>define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI</code><br />
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.<br />
<br />
Das UI ist über den Link "Tablet-UI" auf der Fhem-Hauptseite oder durch Direktaufruf der URL "<nowiki>http://<Fhem-url>:8083/fhem/tablet/index.html</nowiki>" zu erreichen.<br />
<br />
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.<br />
<br />
== Update ==<br />
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: <code><nowiki>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
* Update des UI durch Eingabe von: <code><nowiki>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</nowiki></code><br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for Fhem-tablet-ui ===<br />
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.<br />
<br />
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: <code><nowiki>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</nowiki></code>. <br />
<br />
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. <br />
<br />
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 33 Widgets zur Verfügung:<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget "clicksound" können Sounds an Click-Events von Elementen gebunden werden. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget "clock" stellt eine einfach Uhr zur verfügung.<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. <br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. <br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to Fhem e.g. up / down<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. <br />
<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|Fhem-Name des Gerätes (mit dem Befehl 'list' bekommt man im Fhem die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to Fhem (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on Fhem (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from Fhem<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to Fhem (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert <br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from Fhem <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to Fhem (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from Fhem<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an Fhem ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11484FHEM Tablet UI2015-06-16T20:53:14Z<p>Nobby1805: /* Widgets -- Konfiguration */ xticks bei simplechart hinzugefügt</p>
<hr />
<div>[[Datei:tablet_ui.png|200px|thumb|right|FHEM Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben. Beitrag im FHEM-Forum: http://forum.fhem.de/index.php/topic,34233.0.html<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-FHEM mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
Alle nötigen Files sind im Zip-File inklusive, die einfach nur in einem bestimmten Unterordner der FHEM Installation kopiert werden müssen.<br />
<br />
== Installation ==<br />
* Dateien herunterladen: https://github.com/knowthelist/fhem-tablet-ui<br />
* einen neuen Ordner 'tablet' im Verzeichnis /<fhem-Pfad>/www erstellen<br />
* alle Dateien und Unterordner nach /<fhem-Pfad>/www/tablet kopieren<br />
* in fhem.cfg folgende Zeile einfügen: <code>define tablet_ui HTTPSRV tablet/index.html ./www/tablet Tablet Frontend</code><br />
* index-example.html in index.html umbenennen oder eine neue index.html erzeugen<br />
<br />
Das UI ist über "http://<fhem-url>:8083/fhem/tablet/index.html" zu erreichen.<br />
<br />
== Update ==<br />
Zum Update des UI in der FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
bzw. mit <code>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code> vorher schauen was sich seit dem letzten Download alles geändert hat <br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for fhem-tablet-ui ===<br />
<br />
Installation und Update können per FHEM-Update veranlasst werden. Dazu folgenden Befehl in die FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</code>. Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 17 Widgets zur Verfügung:<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to FHEM e.g. up / down<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to FHEM (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to FHEM (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on FHEM (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from FHEM<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to FHEM (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-xticks<br />
|time range between each X tick line (in Minuten)<br />
|360<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert <br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a FHEM module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von FHEM übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch FHEM-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11463FHEM Tablet UI2015-06-11T10:17:23Z<p>Nobby1805: /* Widgets -- Konfiguration */ Simplechart</p>
<hr />
<div>[[Datei:tablet_ui.png|200px|thumb|right|FHEM Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben. Beitrag im FHEM-Forum: http://forum.fhem.de/index.php/topic,34233.0.html<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-FHEM mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
Alle nötigen Files sind im Zip-File inklusive, die einfach nur in einem bestimmten Unterordner der FHEM Installation kopiert werden müssen.<br />
<br />
== Installation ==<br />
* Dateien herunterladen: https://github.com/knowthelist/fhem-tablet-ui<br />
* einen neuen Ordner 'tablet' im Verzeichnis /<fhem-Pfad>/www erstellen<br />
* alle Dateien und Unterordner nach /<fhem-Pfad>/www/tablet kopieren<br />
* in fhem.cfg folgende Zeile einfügen: <code>define tablet_ui HTTPSRV tablet/index.html ./www/tablet Tablet Frontend</code><br />
* index-example.html in index.html umbenennen oder eine neue index.html erzeugen<br />
<br />
Das UI ist über "http://<fhem-url>:8083/fhem/tablet/index.html" zu erreichen.<br />
<br />
== Update ==<br />
Zum Update des UI in der FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
bzw. mit <code>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code> vorher schauen was sich seit dem letzten Download alles geändert hat <br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for fhem-tablet-ui ===<br />
<br />
Installation und Update können per FHEM-Update veranlasst werden. Dazu folgenden Befehl in die FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</code>. Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 17 Widgets zur Verfügung:<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to FHEM e.g. up / down<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from fhem log file) <br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to FHEM (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to FHEM (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on FHEM (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from FHEM<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to FHEM (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="simplechart">'''SIMPLECHART'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-logdevice<br />
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)<br />
|<br />
|-<br />
!align="right" |data-logfile<br />
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)<br />
|''<br />
|-<br />
!align="right" |data-columnspec<br />
|definition for how to find the values (e.g. "4:meas.*:1:int")<br />
|''<br />
|-<br />
!align="right" |data-minvalue<br />
|min Y value to show<br />
|0<br />
|-<br />
!align="right" |data-maxvalue<br />
|max Y value to show<br />
|100<br />
|-<br />
!align="right" |data-yticks<br />
|value distance between Y tick lines<br />
|5<br />
|-<br />
!align="right" |data-daysago<br />
|number of days back from now <br />
|0<br />
|-<br />
!align="right" |data-caption<br />
|name of the chart to show as text <br />
|<br />
|-<br />
!align="right" |data-width<br />
|fixe size for width <br />
|<br />
|-<br />
!align="right" |data-height<br />
|fixe size for height <br />
|<br />
|-<br />
!align="right" |class<br />
|fullsize<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
Beim IE gibt es (z.Zt. noch) das Problem, dass das verwendete SVG-Attribut "non-scaling-stroke" nicht unterstützt wird. Dadurch werden die Kurve und die Y-ticks sehr dick gezeichnet falls man nicht im js-Modul die stroke-width verändert <br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a FHEM module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von FHEM übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch FHEM-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=CUL&diff=11459CUL2015-06-10T15:17:30Z<p>Nobby1805: typo</p>
<hr />
<div>'''CUL''' ('''C'''C1101 '''U'''SB '''L'''ite) ist ein RF-Gerät im Formfaktor eines USB-Dongles mit externer [[CUL Ausstattung|Antenne]]. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8&nbsp;bit Atmel Prozessor vorverarbeitet. Mit verfügbarer quelloffener Firmware (im Umfeld von FHEM die "culfw") kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433&nbsp;MHz Intertechno (z.&nbsp;B. viele Baumarkt Funksteckdosen) Protokolle. <br />
<br />
Im Umfeld von FS20/FHT/EM/S300/HMS ("[[SlowRF]] - Mode") wird die Dekodierung der per AM in 1&nbsp;kHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.<br />
<br />
Das CUL kann mittels des CULModuls von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.<br />
<br />
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich.<br />
<br />
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den SlowRF Mode (jedoch nicht für den HM Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.<br />
<br />
Seit Ende 2012 gibt es ausserdem ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich [http://forum.fhem.de/index.php/topic,10510.0.html nicht angeraten].<br />
<br />
Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, ''obwohl'' diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten SlowRF Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.<br />
<br />
Frequenz und Bandbreite können daher im SlowRF Mode frei angepasst und somit für örtlichen Empfangsgegebenheiten optimiert werden.<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
<br />
'''Anmerkung:'''Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &lt;Enter&gt; abzuschicken (nicht "save" klicken). "myCUL" ist nur ein Platzhalter und mit dem Namen '''Ihres''' CUL zu ersetzen. Da diese Funktionen durch die CULfw (Firmware) bereitgestellt wird, funktionieren sie auf allen Geräten, die die CULfw verwenden ([[CUNO]], [[COC]], [[CSM]]):<br />
<br />
* Ist Empfang eingeschaltet ?<br />
*: <code> get myCUL raw C35</code> (13 = ja, z.&nbsp;b.: C35 = 0D / 13)<br />
* Auslesen der CULFW Version:<br />
*: <code>get myCUL raw V</code><br />
* LED ausschalten<br />
*: <code>set myCUL raw l00</code><br />
* LED einschalten<br />
*: <code>set myCUL raw l01</code>Blinkt bei Senden oder Empfangen von Paketen<br />
* LED soll blinken (einmal in der Sekunde)<br />
*: <code>set myCUL raw l02</code><br />
* Reboot / Reset des CUL:<br />
*: <code>set myCUL raw B00. </code>Andere Werte als 00 starten das CUL im Bootloader-Modus (=&gt; neue Firmware)<br />
* Freie CUL Sendezeit ([[1% Regel]]):<br />
*: <code>get myCUL raw X</code> 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch <code>get myCUL credit10ms</code> ergibt Sendezeit in 10ms Slots<br />
* Freie Kapazität des FHT Buffers<br />
*: <code> get myCUL raw T03</code> Ergebniss bytes in HEX. Leer = 4a<br />
* Inhalt des FHT Buffers<br />
*: <code> get myCUL raw T02</code> (CUL V2 Buffer ist 74 Bytes gross, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer<br />
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]<br />
*: <code> get myCUL raw T01</code> <br />
* Eingestellte Frequenz, Bandbreite etc. Ausgeben<br />
*: <code> get myCUL ccconf</code>. <br>Rückgabe z.&nbsp;B.: <br><code><nowiki>myCUL ccconf =&gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB</nowiki></code><br />
* eingestelle Bandbreite erhöhen (z.b. auf 464 kHz, mehr hat meist keinen Sinn):<br />
*:<code>set myCUL bWidth 464</code><br />
* Einstellen der Sendestärke:<br />
*: <code>set myCUL raw x09</code> Einstellen der Sendeleistung.<br />
<br />
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen<br />
-10/-5/0/5/10 Sendeleistung in db. Default ist x08 = +5db. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. Siehe auch Diskussion unter [https://groups.google.com/group/cul-fans/browse_thread/thread/683ca5c892eae1c3/c682a640f1ba863c?lnk=gst&amp;q=bWidth+freq#c682a640f1ba863c GoogleGroups-CUL-Fans]<br />
<br />
Werte x00-x04 sind '''mit''' Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&nbsp;B. [[RFR CUL]].<br />
<br />
'''Hinweis:''' Beim CUL im HM-Modus kann man (ohne firmware-mod) die Empfangs-/Sendeparameter '''nicht''' verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).<br />
<br />
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&#160;:<br />
<br />
* <code> set CUL1 raw X61</code> Communication wird im Detail angezeigt<br />
* <code>set CUL1 raw X25</code> auch checksum Fehler / unerkannte Protokolle werden gemeldet<br />
* <code>set CUL1 raw X2F</code> alle empfangenen Flanken werden gemeldet<br />
* <code>set CUL1 raw X80</code> RSSI / Signalstaerke jeder Flanke wird gemeldet<br />
* <code>set CUL1 raw X21</code> normal Modus<br />
<br />
Achtung: Auf Gross- und Kleinschreibung des "x,X" achten!<br />
<br />
Die kompletten Kommandos mit Erklärung für CUL stehen hier: [http://culfw.de/commandref.html http://culfw.de/commandref.html]<br />
<br />
== Versionen ==<br />
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.<br />
<br />
* CUL V1 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.<br />
* CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HM Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi '''zeitgleich''' betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.<br />
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kByte EEPROM). Voll einsatzfähig.<br />
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM 32 kB Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen ein "Sparmodell" des V3, um Lieferengpässe des atmega32u4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und Fhem keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.<br />
<br />
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.<br />
<br />
== Sendefrequenz ==<br />
Das CUL gibt es in Ausführungen für 868 und 433 MHz. <br />
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im SlowRF Mode auch durch direkte Befehle aus Fhem (im HM Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.<br />
Es ist es durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das Fhem Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.<br />
<br />
== Antenne ==<br />
<br />
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.<br />
Funktional besteht kein Unterschied: Auch die "richtige" Antenne ist (in diesem Fall) nur ein Draht, jedoch gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.H. die Drahtantenne sieht nur unschön aus.<br />
<br />
Wichtig ist nur die Länge. Diese muss vorteilhafterweise so lang sein wie die Wellenlänge ("Lambda") der Frequenz. Die ist bei 868 Mhz aber ca. 36 Zentimeter und (nicht nur) weil das unpraktisch ist, nimmt man geradezahlige Bruchteile davon. Besonders beliebt sind 1/2 Lambda (ca. 17 Zentimeter) oder 1/4 Lambda (ca. 8,6 Zentimeter). Antennenlängen die nicht geraden Brüchen entsprechen verschlechtern in der Regel die Leistung.<br />
Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.<br />
<br />
Der oft angegeben Antennengewinn bei längeren Antennen von "plus x db" wird von einer 1/4 Lambda (auch: "L/4") Antenne aus gerechnet und steigt mit jeder Längenstufe um ein paar Dezibel an. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnliche also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen"gewinn").<br />
Das hat auch Nachteile, speziell wenn man auch "nach oben" funken will. Wenn man eine Lambda Antenne (36 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht Empfangen wird. <br />
Daher: Je länger die Antenne ist (in vielfachen von 1/4 Lambda!), desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen.<br />
<br />
Daher ist "mehr db" und speziell "länger" nicht automatisch besser. 1/4 oder 1/2 Lambda sind eine guter Kompromiss.<br />
<br />
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.<br />
<br />
== Bekannte Probleme ==<br />
Im Gegensatz zu den original FHZ Zentralen ist das CUL recht flankensteil, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern z.&nbsp;B. der FHT Raumregler zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.<br />
<br />
Bei Empfangsproblemen von z.&nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:<br />
<br />
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.<br />
*: <code>set CUL freq 868.350</code><br />
* Es ist möglich die "decision boundary" zu vergrößern, frei beschrieben: die "Entscheidungsgrenze" ob die empfangene Signalflanke digital "0" oder "1" darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte "4", "8" und "16". Default-Einstellung ist hier "4". Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier "8" einzustellen. Mitunter bringt jedoch erst die Einstellung auf "16" signifikante Verbesserungen beim Empfang von S300TH-Sensoren.<br />
*: <code>set CUL sens 8</code><br />
* Oft hilft auch, die Bandbreite auf z.&nbsp;B. 464 kHz aufzuweiten.<br />
*: <code>set CUL bWidth 464</code><br />
= Links =<br />
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]<br />
* [http://culfw.de/culfw.html culfw.de] - Homepage der CUL firmware<br />
* [http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/ Sourceforge CUL firmware]<br />
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans]<br />
<br />
[[Kategorie:Interfaces]]<br />
[[Kategorie:CUL]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=CUL&diff=11458CUL2015-06-10T15:15:28Z<p>Nobby1805: deutsches Dezimaltrennzeichen; Zeilenwechsel zwischen Wert und Einheit verhindert</p>
<hr />
<div>'''CUL''' ('''C'''C1101 '''U'''SB '''L'''ite) ist ein RF-Gerät im Formfaktor eines USB-Dongles mit externer [[CUL Ausstattung|Antenne]]. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8&nbsp;bit Atmel Prozessor vorverarbeitet. Mit verfügbarer quelloffener Firmware (im Umfeld von FHEM die "culfw") kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433&nbsp;MHz Intertechno (z.&nbsp;B. viele Baumarkt Funksteckdosen) Protokolle. <br />
<br />
Im Umfeld von FS20/FHT/EM/S300/HMS ("[[SlowRF]] - Mode") wird die Dekodierung der per AM in 1&nbsp;kHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.<br />
<br />
Das CUL kann mittels des CULModuls von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.<br />
<br />
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich.<br />
<br />
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den SlowRF Mode (jedoch nicht für den HM Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.<br />
<br />
Seit Ende 2012 gibt es ausserdem ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich [http://forum.fhem.de/index.php/topic,10510.0.html nicht angeraten].<br />
<br />
Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, ''obwohl'' diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten SlowRF Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequentz abweichen.<br />
<br />
Frequenz und Bandbreite können daher im SlowRF Mode frei angepasst und somit für örtlichen Empfangsgegebenheiten optimiert werden.<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
<br />
'''Anmerkung:'''Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &lt;Enter&gt; abzuschicken (nicht "save" klicken). "myCUL" ist nur ein Platzhalter und mit dem Namen '''Ihres''' CUL zu ersetzen. Da diese Funktionen durch die CULfw (Firmware) bereitgestellt wird, funktionieren sie auf allen Geräten, die die CULfw verwenden ([[CUNO]], [[COC]], [[CSM]]):<br />
<br />
* Ist Empfang eingeschaltet ?<br />
*: <code> get myCUL raw C35</code> (13 = ja, z.&nbsp;b.: C35 = 0D / 13)<br />
* Auslesen der CULFW Version:<br />
*: <code>get myCUL raw V</code><br />
* LED ausschalten<br />
*: <code>set myCUL raw l00</code><br />
* LED einschalten<br />
*: <code>set myCUL raw l01</code>Blinkt bei Senden oder Empfangen von Paketen<br />
* LED soll blinken (einmal in der Sekunde)<br />
*: <code>set myCUL raw l02</code><br />
* Reboot / Reset des CUL:<br />
*: <code>set myCUL raw B00. </code>Andere Werte als 00 starten das CUL im Bootloader-Modus (=&gt; neue Firmware)<br />
* Freie CUL Sendezeit ([[1% Regel]]):<br />
*: <code>get myCUL raw X</code> 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch <code>get myCUL credit10ms</code> ergibt Sendezeit in 10ms Slots<br />
* Freie Kapazität des FHT Buffers<br />
*: <code> get myCUL raw T03</code> Ergebniss bytes in HEX. Leer = 4a<br />
* Inhalt des FHT Buffers<br />
*: <code> get myCUL raw T02</code> (CUL V2 Buffer ist 74 Bytes gross, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer<br />
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]<br />
*: <code> get myCUL raw T01</code> <br />
* Eingestellte Frequenz, Bandbreite etc. Ausgeben<br />
*: <code> get myCUL ccconf</code>. <br>Rückgabe z.&nbsp;B.: <br><code><nowiki>myCUL ccconf =&gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB</nowiki></code><br />
* eingestelle Bandbreite erhöhen (z.b. auf 464 kHz, mehr hat meist keinen Sinn):<br />
*:<code>set myCUL bWidth 464</code><br />
* Einstellen der Sendestärke:<br />
*: <code>set myCUL raw x09</code> Einstellen der Sendeleistung.<br />
<br />
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen<br />
-10/-5/0/5/10 Sendeleistung in db. Default ist x08 = +5db. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. Siehe auch Diskussion unter [https://groups.google.com/group/cul-fans/browse_thread/thread/683ca5c892eae1c3/c682a640f1ba863c?lnk=gst&amp;q=bWidth+freq#c682a640f1ba863c GoogleGroups-CUL-Fans]<br />
<br />
Werte x00-x04 sind '''mit''' Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&nbsp;B. [[RFR CUL]].<br />
<br />
'''Hinweis:''' Beim CUL im HM-Modus kann man (ohne firmware-mod) die Empfangs-/Sendeparameter '''nicht''' verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).<br />
<br />
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&#160;:<br />
<br />
* <code> set CUL1 raw X61</code> Communication wird im Detail angezeigt<br />
* <code>set CUL1 raw X25</code> auch checksum Fehler / unerkannte Protokolle werden gemeldet<br />
* <code>set CUL1 raw X2F</code> alle empfangenen Flanken werden gemeldet<br />
* <code>set CUL1 raw X80</code> RSSI / Signalstaerke jeder Flanke wird gemeldet<br />
* <code>set CUL1 raw X21</code> normal Modus<br />
<br />
Achtung: Auf Gross- und Kleinschreibung des "x,X" achten!<br />
<br />
Die kompletten Kommandos mit Erklärung für CUL stehen hier: [http://culfw.de/commandref.html http://culfw.de/commandref.html]<br />
<br />
== Versionen ==<br />
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.<br />
<br />
* CUL V1 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.<br />
* CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HM Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi '''zeitgleich''' betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.<br />
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kByte EEPROM). Voll einsatzfähig.<br />
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM 32 kB Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen ein "Sparmodell" des V3, um Lieferengpässe des atmega32u4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und Fhem keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.<br />
<br />
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.<br />
<br />
== Sendefrequenz ==<br />
Das CUL gibt es in Ausführungen für 868 und 433 MHz. <br />
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im SlowRF Mode auch durch direkte Befehle aus Fhem (im HM Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.<br />
Es ist es durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das Fhem Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.<br />
<br />
== Antenne ==<br />
<br />
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.<br />
Funktional besteht kein Unterschied: Auch die "richtige" Antenne ist (in diesem Fall) nur ein Draht, jedoch gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.H. die Drahtantenne sieht nur unschön aus.<br />
<br />
Wichtig ist nur die Länge. Diese muss vorteilhafterweise so lang sein wie die Wellenlänge ("Lambda") der Frequenz. Die ist bei 868 Mhz aber ca. 36 Zentimeter und (nicht nur) weil das unpraktisch ist, nimmt man geradezahlige Bruchteile davon. Besonders beliebt sind 1/2 Lambda (ca. 17 Zentimeter) oder 1/4 Lambda (ca. 8,6 Zentimeter). Antennenlängen die nicht geraden Brüchen entsprechen verschlechtern in der Regel die Leistung.<br />
Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.<br />
<br />
Der oft angegeben Antennengewinn bei längeren Antennen von "plus x db" wird von einer 1/4 Lambda (auch: "L/4") Antenne aus gerechnet und steigt mit jeder Längenstufe um ein paar Dezibel an. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnliche also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen"gewinn").<br />
Das hat auch Nachteile, speziell wenn man auch "nach oben" funken will. Wenn man eine Lambda Antenne (36 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht Empfangen wird. <br />
Daher: Je länger die Antenne ist (in vielfachen von 1/4 Lambda!), desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen.<br />
<br />
Daher ist "mehr db" und speziell "länger" nicht automatisch besser. 1/4 oder 1/2 Lambda sind eine guter Kompromiss.<br />
<br />
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.<br />
<br />
== Bekannte Probleme ==<br />
Im Gegensatz zu den original FHZ Zentralen ist das CUL recht flankensteil, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern z.&nbsp;B. der FHT Raumregler zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.<br />
<br />
Bei Empfangsproblemen von z.&nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:<br />
<br />
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.<br />
*: <code>set CUL freq 868.350</code><br />
* Es ist möglich die "decision boundary" zu vergrößern, frei beschrieben: die "Entscheidungsgrenze" ob die empfangene Signalflanke digital "0" oder "1" darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte "4", "8" und "16". Default-Einstellung ist hier "4". Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier "8" einzustellen. Mitunter bringt jedoch erst die Einstellung auf "16" signifikante Verbesserungen beim Empfang von S300TH-Sensoren.<br />
*: <code>set CUL sens 8</code><br />
* Oft hilft auch, die Bandbreite auf z.&nbsp;B. 464 kHz aufzuweiten.<br />
*: <code>set CUL bWidth 464</code><br />
= Links =<br />
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]<br />
* [http://culfw.de/culfw.html culfw.de] - Homepage der CUL firmware<br />
* [http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/ Sourceforge CUL firmware]<br />
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans]<br />
<br />
[[Kategorie:Interfaces]]<br />
[[Kategorie:CUL]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11432FHEM Tablet UI2015-06-05T15:49:10Z<p>Nobby1805: /* Widgets -- Konfiguration */ Erweiterung bei Push, data-set-on, class fixedlabel bei Label</p>
<hr />
<div>[[Datei:tablet_ui.png|200px|thumb|right|FHEM Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben. Beitrag im FHEM-Forum: http://forum.fhem.de/index.php/topic,34233.0.html<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-FHEM mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
Alle nötigen Files sind im Zip-File inklusive, die einfach nur in einem bestimmten Unterordner der FHEM Installation kopiert werden müssen.<br />
<br />
== Installation ==<br />
* Dateien herunterladen: https://github.com/knowthelist/fhem-tablet-ui<br />
* einen neuen Ordner 'tablet' im Verzeichnis /<fhem-Pfad>/www erstellen<br />
* alle Dateien und Unterordner nach /<fhem-Pfad>/www/tablet kopieren<br />
* in fhem.cfg folgende Zeile einfügen: <code>define tablet_ui HTTPSRV tablet/index.html ./www/tablet Tablet Frontend</code><br />
* index-example.html in index.html umbenennen oder eine neue index.html erzeugen<br />
<br />
Das UI ist über "http://<fhem-url>:8083/fhem/tablet/index.html" zu erreichen.<br />
<br />
== Update ==<br />
Zum Update des UI in der FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
bzw. mit <code>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code> vorher schauen was sich seit dem letzten Download alles geändert hat <br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for fhem-tablet-ui ===<br />
<br />
Installation und Update können per FHEM-Update veranlasst werden. Dazu folgenden Befehl in die FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</code>. Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 17 Widgets zur Verfügung:<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to FHEM e.g. up / down<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to FHEM (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker, fixedlabel<br />
|<br />
|}<br />
<br />
mit der Class 'fixedlabel' kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to FHEM (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on FHEM (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from FHEM<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to FHEM (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a FHEM module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von FHEM übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch FHEM-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&diff=11431FHEM Tablet UI2015-06-05T15:43:17Z<p>Nobby1805: /* Widgets -- Konfiguration */ new: Progress</p>
<hr />
<div>[[Datei:tablet_ui.png|200px|thumb|right|FHEM Tablet UI]]<br />
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.<br />
<br />
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben. Beitrag im FHEM-Forum: http://forum.fhem.de/index.php/topic,34233.0.html<br />
<br />
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} <br />
<br />
<br />
== Voraussetzungen ==<br />
Dieses User Interface für Tablets benötigt <u>keine</u> zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.<br />
<br />
Voraussetzungen ist nur ein Standard-FHEM mit HTTPSRV Modul und ein beliebiger Standard-Browser mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.<br />
<br />
Alle nötigen Files sind im Zip-File inklusive, die einfach nur in einem bestimmten Unterordner der FHEM Installation kopiert werden müssen.<br />
<br />
== Installation ==<br />
* Dateien herunterladen: https://github.com/knowthelist/fhem-tablet-ui<br />
* einen neuen Ordner 'tablet' im Verzeichnis /<fhem-Pfad>/www erstellen<br />
* alle Dateien und Unterordner nach /<fhem-Pfad>/www/tablet kopieren<br />
* in fhem.cfg folgende Zeile einfügen: <code>define tablet_ui HTTPSRV tablet/index.html ./www/tablet Tablet Frontend</code><br />
* index-example.html in index.html umbenennen oder eine neue index.html erzeugen<br />
<br />
Das UI ist über "http://<fhem-url>:8083/fhem/tablet/index.html" zu erreichen.<br />
<br />
== Update ==<br />
Zum Update des UI in der FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code><br />
bzw. mit <code>update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt</code> vorher schauen was sich seit dem letzten Download alles geändert hat <br />
<br />
== Weitere Widgets ==<br />
<br />
=== Widgets for fhem-tablet-ui ===<br />
<br />
Installation und Update können per FHEM-Update veranlasst werden. Dazu folgenden Befehl in die FHEM-Befehlszeile eingeben: <code>update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt</code>. Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].<br />
<br />
== Konfiguration ==<br />
Die Konfiguration der angezeigten Widgets erfolgt in der Datei '''index.html''' im Hauptordner 'tablet'.<br />
<br />
'''Metadaten-Konfiguration'''<br />
<br />
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh<br />
:<code><meta name="longpoll" content="1"></code><br />
<br />
Drag&Drop deaktivieren<br />
:<code><meta name='gridster_disable' content='1'></code><br />
<br />
Toast messages deaktivieren<br />
:<code><meta name='toast' content='1'></code><br />
<br />
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)<br />
:<code><meta name="widget_base_width" content="116"></code><br />
:<code><meta name="widget_base_height" content="131"></code><br />
<br />
Abstände der Gridsterelemente verkleinern:<br />
:<code><meta name="widget_margin" content="3"></code><br />
<br />
<br />
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:<br />
<br />
container, left, right, cell, narrow, darker, big, bigger, small<br />
<br />
== Farbe ==<br />
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).<br />
<br />
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.<br />
<br />
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp<br />
<br />
<br />
== CSS Class description ==<br />
<br />
Not all widgets support all classes<br />
<br />
* readonly : changing of state is not allowed<br />
* wider : 25px extra space for the widget to the top<br />
* narrow : shorter distant to the widget above<br />
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width<br />
* small : font 80% size (label), small diameter for volume widget<br />
* mini : lowest diameter for volume widget<br />
* large : font 150% size<br />
* big : font 200% size<br />
* bigger : font 320% size<br />
* thin : font thin<br />
* darker : forecolor in gray<br />
* hue-tick : draw ticks in color range<br />
* hue-front : draw handle in color range<br />
* hue-back : draw background in color range<br />
* dim-tick : draw ticks in brightness range<br />
* dim-front : draw handle in brightness range<br />
* dim-back : draw background in brightness range<br />
* red : foreground color red<br />
* green : foreground color green<br />
* blue : foreground color blue<br />
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other<br />
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side<br />
* timestamp : deliver the date time for the reading instead the value<br />
* inline : positioning elements in a row, no line break<br />
* top-space : 15px extra on top (top-space-2x -> 30px; top-space-3x -> 45px)<br />
* left-space : 15px extra on left (left-space-2x -> 30px; left-space-3x -> 45px)<br />
* right-space : 15px extra on right (right-space-2x -> 30px; right-space-3x -> 45px)<br />
* blink : blink animatation for label or symbol widget<br />
<br />
<br />
== Widgets -- Konfiguration ==<br />
<br />
Zurzeit stehen 17 Widgets zur Verfügung:<br />
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen<br />
* [[#dimmer|dimmer]]: toogle button with a setter for on value<br />
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)<br />
* [[#image|image]]: insert an image, the URL is given by a reading<br />
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)<br />
* [[#level|level]]: vertical/horizontal bar to show values between min/max value<br />
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page<br />
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button<br />
* [[#progress|progress]]: round symbolic display for percent values<br />
* [[#push|push]]: send any command to FHEM e.g. up / down<br />
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position<br />
* [[#select|select]]: Combobox to provide a list for selection<br />
* [[#slider|slider]]: vertical slider to select between min/max value<br />
* [[#switch|switch]]: Toggle any command to FHEM (e.g. on / off)<br />
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)<br />
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value<br />
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)<br />
* [[#weather|weather]]: insert an icon or image, represending a weather literal<br />
<br />
----------------------------------<br />
<br />
Für alle Widgets gilt:<br />
{| class="wikitable"<br />
|+allgemeine Attribute<br />
|-<br />
!align="right" |data-type<br />
|Widget-Typ<br />
|-<br />
!align="right" |data-device<br />
|FHEM-Name des Gerätes (mit dem Befehl 'list' bekommt man im FHEM die kpl. Liste)<br />
|-<br />
!align="right" |class<br />
|CSS-Klassen für Aussehen und Formatierung des Widgets<br />
|}<br />
<br />
<br />
<br />
<div id="circlemenu">'''CIRCLEMENU'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-item-diameter<br />
|diameter of the circle<br />
|52<br />
|-<br />
!align="right" |data-circle-radius<br />
|radius of each item, in pixel<br />
|70<br />
|-<br />
!align="right" |data-direction<br />
|position of the items in relation to the center<br />
|'full'<br />
|-<br />
!align="right" |data-close-after<br />
|closing time of the circle-menu<br />
|(item-count + 1s) or a minimum of 4s<br />
|-<br />
!align="right" |class<br />
|keepopen<br />
|<br />
|-<br />
|}<br />
<br />
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full<br />
<br />
[[#Beispiel_circlemenu|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="dimmer">'''DIMMER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get<br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get<br />
|'off'<br />
|-<br />
!align="right" |data-set<br />
|(<command> <device> <reading> <value>) <br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value for ON status to set<br />
|value of data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|value for OFF status to set<br />
|value of data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-dim<br />
|name of the reading responsible for dim (<command> <device> <reading> <value>) <br />
|value of data-get-on<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|fa-lightbulb-o<br />
|-<br />
|}<br />
<br />
[[#Beispiel_dimmer|Link zu einem Beispiel]]<br />
<br />
<div id="homestatus">'''HOMESTATUS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-alias<br />
|array of fix names to show only in the UI as an alias to the real states<br />
|''<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-version<br />
|name of the status model e.g. 'residents','roommate','guest' <br />
|(default NULL)<br />
|-<br />
|}<br />
<br />
The default version has 4 states: '1','2','3','4' The default aliases are 'Home','Night','Away','Holiday'; data-version='residents' or 'roommate' or 'guest' has 5 states ('home','asleep','absent','gone','gotosleep') They have these aliases 'Home','Night','Away','Holiday','Retire'<br />
<br />
[[#Beispiel_homestatus|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="image">'''IMAGE'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get an URL from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-size<br />
|width of the image in px or %, the height scales proportionally<br />
|50%<br />
|-<br />
!align="right" |data-url<br />
|URL of the image to show (use data-url or data-device + data-get, not both)<br />
|<br />
|-<br />
!align="right" |data-refresh<br />
|Interval in seconds for image refresh for usage together with data-url<br />
|900<br />
|-<br />
|}<br />
<br />
[[#Beispiel_image|Link zu einem Beispiel]]<br />
<br />
<div id="label">'''LABEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|<br />
|-<br />
!align="right" |data-fix<br />
|keeping a specified number of decimals. <br />
|'-1' -> non-numeric<br />
|-<br />
!align="right" |data-part<br />
|split position of the space separated value to show or an RegEx<br />
|<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric values to affect the colour of the Label<br />
|<br />
|-<br />
!align="right" |data-unit<br />
|add a unit after a numeric value. use encoded strings e.g. "%B0C%0A"<br />
|<br />
|-<br />
!align="right" |class<br />
|small, large, big, bigger, thin, red, green, blue, darker<br />
|<br />
|}<br />
<br />
[[#Beispiel_label|Link zu einem Beispiel]]<br />
<br />
<div id="level">'''LEVEL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|'0'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|'100'<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-colors<br />
|a array of color values to affect the colour of the label according to the limit value<br />
|<br />
|-<br />
!align="right" |data-limits<br />
|a array of numeric or RegEx values to affect the colour of the label<br />
|<br />
|-<br />
!align="right" |class<br />
|mini, horizontal<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="pagetab">'''PAGETAB'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL of the new page to show<br />
|<br />
|-<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|'fa-power-off'<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|color of OFF state<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|color of ON state<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|color of Off state<br />
|'#505050'<br />
|-<br />
!align="right" |data-get-on<br />
|array of status to assign a special icon-list from data-icons<br />
|<br />
|-<br />
!align="right" |data-icons<br />
|array of icons related to the a data-get-on array<br />
|<br />
|-<br />
!align="right" |class<br />
|warn, activate (as additionals for data-icons)<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_pagetab|Link zu einem Beispiel]]<br />
<br />
<div id="playstream">'''PLAYSTREAM'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-url<br />
|URL des Radio-Streams<br />
|-<br />
|}<br />
<br />
[[#Beispiel_playstream|Link zu einem Beispiel]]<br />
<br />
<div id="progress">'''PROGRESS'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set or name of the reading which helds the max value<br />
|100<br />
|-<br />
!align="right" |class<br />
|novalue, percent<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<div id="push">'''PUSH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-set<br />
|value to send to FHEM (<command> <device> <value>)<br />
|<br />
|-<br />
!align="right" |data-set-on<br />
|value to send when the the button get pressed.<br />
|<br />
|-<br />
<br />
!align="right" |data-icon<br />
|name of the font-awesome icon<br />
|<br />
|-<br />
!align="right" |data-background-icon<br />
|name of the font-awesome icon for background <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-doubleclick<br />
|timeout to wait for a second click or touch. '0' disables the doubleclick feature. <br />
|0<br />
|-<br />
!align="right" |data-countdown<br />
|secondes for the countdown progress control <br />
|autodetect from 'on-for-timer' command<br />
|-<br />
|}<br />
<br />
[[#Beispiel_push|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="rotor">'''ROTOR'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" | data-delay<br />
|time in millisecondes to wait until next list item get shown<br />
|3500<br />
|-<br />
!align="right" |class<br />
|fade, rotate<br />
|'' <br />
|-<br />
|}<br />
Ohne Angabe von class erfolgt keine Animation.<br />
<br />
[[#Beispiel_rotor|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="select">'''SELECT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading that get the selected item of the list<br />
|<br />
|-<br />
!align="right" |data-set<br />
|name of the reading to set on FHEM (<command> <device> <reading> <value>)<br />
|''<br />
|-<br />
!align="right" |data-list<br />
|name of the reading to get a :-separated list from FHEM<br />
|''<br />
|-<br />
!align="right" |data-items<br />
|an array of fix items to show in the selection box (alternative if data-list is empty)<br />
|<br />
|-<br />
!align="right" |data-alias<br />
|an array of fix names to show only in the selection box as an alias to the real items<br />
|<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command to send to FHEM (<command> <device> <reading> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-quote<br />
|characters to enclose the send value<br />
|<br />
|-<br />
!align="right" |class<br />
|wider, w1x, w2x, w3x, large, big<br />
|<br />
|-<br />
|} <br />
<br />
[[#Beispiel_select|Link zu einem Beispiel]]<br />
<br />
<div id="slider">'''SLIDER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (<code>set <device> <command> <value></code>)<br />
|''<br />
|-<br />
!align="right" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger)<br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|100<br />
|-<br />
!align="right" |data-on<br />
|value where the slider moves to max<br />
|'on'<br />
|-<br />
!align="right" |data-off<br />
|value where the slider moves to min<br />
|'off'<br />
|-<br />
!align="right" |data-value<br />
|wenn true wird beim sliden der Wert angezeigt<br />
|<br />
|-<br />
!align="right" |data-width<br />
|width for horizontal sliders<br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |data-height<br />
|height for vertical sliders <br />
|'120px', for mini '60px'<br />
|-<br />
!align="right" |class<br />
|Aussehen/Ausrichtung<br />
|<br />
|-<br />
|}<br />
<br />
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.<br />
<br />
[[#Beispiel_slider|Link zu einem Beispiel]]<br />
<br />
<div id="switch">'''SWITCH'''</div><br />
<br />
{| class="wikitable"<br />
!HTML-Attribut<br />
!Beschreibung<br />
!Default-Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|Wert, bei dem zum Status ON geschaltet werden soll. <br />
|'on'<br />
|-<br />
!align="right" |data-get-off<br />
|Wert, bei dem zum Status OFF geschaltet werden soll. <br />
|'off'<br />
|-<br />
!align="right" |data-set-on<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf ON geschaltet wurde <br />
|Wert von data-get-on<br />
|-<br />
!align="right" |data-set-off<br />
|Wert, der zu FHEM gesendet werden soll, wenn das Widget auf OFF geschaltet wurde <br />
|Wert von data-get-off<br />
|-<br />
!align="right" |data-cmd<br />
|Kommando Name (<command> <device> <value>) <br />(z.B setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-icon<br />
|Name des Font-Awesome Icon. <br />
|'fa-lightbulb-o'<br />
|-<br />
!align="right" |data-background-icon<br />
|Name des Font-Awesome Hintergrund Icon. <br />
|'fa-circle'<br />
|-<br />
!align="right" |data-on-color<br />
|Widget Farbe beim Status ON <br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Widget Farbe beim Status OFF <br />
|'#505050'<br />
|}<br />
<br />
<code>data-get-on</code> and <code>data-get-off</code> accept also RegEx values. e.g. data-get-on="[0-9]{1,3}|on" means set switch on if STATE is a numeric value or 'on'. data-get-off="!on" means accept all but the data-get-on value (negation)<br />
<br />
[[#Beispiel_switch|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="symbol">'''SYMBOL'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|Name des Reading, was gelesen werden soll<br />
|'STATE'<br />
|-<br />
!align="right" |data-get-on<br />
|value for ON status to get or an array of states. <br />
|'open'<br />
|-<br />
!align="right" |data-get-off<br />
|value for OFF status to get. <br />
|'closed'<br />
|-<br />
!align="right" |data-icon<br />
|Name des font-awesome-Symbols <br />
|'ftui-window'<br />
|-<br />
!align="right" |data-background-icon<br />
|Hintergrundsymbol<br />
|''<br />
|-<br />
!align="right" |data-on-background-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-background-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-on-color<br />
|Farbe für ON-Zustand.<br />
|'#aa6900'<br />
|-<br />
!align="right" |data-off-color<br />
|Farbe für ON-Zustand.<br />
|'#505050'<br />
|-<br />
!align="right" |data-icons<br />
|Array mit Icons zu data-get-on Array<br />
|<br />
|-<br />
!align="right" |data-on-colors<br />
|array of colors related to the data-get-on array<br />
|''<br />
|-<br />
!align="right" |data-on-background-colors<br />
|array of background-colors related to the data-get-on array<br />
|''<br />
|-<br />
|}<br />
<br />
To use multiple icons, data-get-on, data-icons and data-on-colors have to be an array with the same size. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol. data-get-on and data-get-off accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. "fa-exclamation-triangle fa-blink" for a blinking symbol<br />
<br />
[[#Beispiel_symbol|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="thermostat">'''THERMOSTAT'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-temp<br />
|reading for measured temperature of thermostates<br />
|'measured-temp'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|'desired-temp'<br />
|-<br />
!align="right" |data-valve<br />
|reading for valve position of thermostates<br />
|<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
| 10<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
| 30<br />
|-<br />
!align="right" |data-minColor<br />
|Farbe des Keises für Min<br />
| #4477FF<br />
|-<br />
!align="right" |data-maxColor<br />
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert <br />
| #FF0000<br />
|-<br />
!align="right" |data-step<br />
|step size for value adjustment e.g. 0.5 <br />
|1<br />
|-<br />
!align="right" |data-bgColor<br />
|Die Farbe der Kreises zwischen den ticks<br />
|'transparent'<br />
|-<br />
!align="right" |data-fgColor<br />
|Die Farbe der zahl im Kreismittelpunkt<br />
|#bbbbbb<br />
|-<br />
!align="right" |data-tkColor<br />
|Die Farbe der ticks<br />
|#696969<br />
|-<br />
|-<br />
!align="right" |data-angleOffset<br />
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)<br />
| -120<br />
|-<br />
!align="right" |data-angleArc<br />
|Bereich der ticks im Kreis (in Winkelgraden)<br />
|240<br />
|-<br />
!align="right" |class<br />
|big, readonly<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_thermostat|Link zu einem Beispiel]]<br />
<br />
<br />
<div id="volume">'''VOLUME'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get from FHEM <br />
|'STATE'<br />
|-<br />
!align="right" |data-set<br />
|command to send to FHEM (set <device> <command> <value>)<br />
|''<br />
|-<br />
!align="rigth" |data-cmd<br />
|name of the command (<command> <device> <value>) (e.g. setstate, set, setreading, trigger) <br />
|'set'<br />
|-<br />
!align="right" |data-min<br />
|minimal value to set<br />
|0<br />
|-<br />
!align="right" |data-max<br />
|maximal value to set<br />
|70<br />
|-<br />
!align="right" |class<br />
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back<br />
|<br />
|-<br />
|}<br />
<br />
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)<br />
<br />
<br />
<div id="weather">'''WEATHER'''</div><br />
<br />
{| class="wikitable"<br />
!HTML Attribut<br />
!Beschreibung<br />
!Default Wert<br />
|-<br />
!align="right" |data-get<br />
|name of the reading to get the weather literal from FHEM<br />
|'STATE'<br />
|-<br />
!align="right" |data-imageset<br />
|collection of images to display current weather situation. Possible values: 'meteocons', 'kleinklima'<br />
|'meteocons'<br />
|-<br />
!align="right" |data-image-path<br />
|path to the images of the selected imageset<br />
|/images/weather/<br />
|-<br />
|}<br />
<br />
[[#Beispiel_weather|Link zu einem Beispiel]]<br />
<br />
== Widgets -- Beispiele ==<br />
<br />
<div id="Beispiel_circlemenu">'''Circlemenu'''</div><br />
<br />
Cover a lot of other button behind one single button<br />
<br />
<pre><br />
<div class="left"><br />
<div data-type="circlemenu" class="cell circlemenu"><br />
<ul class="menu"><br />
<li><div data-type="push" data-icon="fa-wrench"></div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -6" <br />
data-icon="">-6</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level -2" <br />
data-icon="">-2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level 0" <br />
data-icon="">0</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +3" <br />
data-icon="">2</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +9" <br />
data-icon="">9</div></li><br />
<li><div data-type="push" data-device="AvReceiver" <br />
data-set="remoteControl subwoofer-temporary-level +C" <br />
data-icon="">12</div></li><br />
</ul><br />
</div><br />
<div data-type="label" class="cell">Woofer</div><br />
</div><br />
</pre><br />
<br />
[[Datei:circlemenu_tabletUI.png]]<br />
<br />
<br />
<div id="Beispiel_dimmer">'''Dimmer'''</div><br />
<br />
Dimmer Widget Beispiel für Philips Hue<br />
<br />
Minimalvariante<br />
<pre> <br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get-on="!off" data-get-off="off"<br />
data-set="pct"</div><br />
</pre><br />
<br />
Mit Anzeige der Dimstufe<br />
<pre><br />
<div data-type="dimmer" data-device="HUEDevice1"<br />
data-get="onoff"<br />
data-get-on="1" data-get-off="0"<br />
data-set=""<br />
data-set-on="on" data-set-off="off"<br />
data-dim="pct"><br />
</div><br />
</pre><br />
<br />
Dimmer Widget für MilightDevice<br />
<br />
<pre><br />
<div data-type="dimmer"<br />
data-device="SonstWas"<br />
data-get="brightness"<br />
data-get-off="0"<br />
data-get-on="[1-9][0-9]*"<br />
data-set-on="on"<br />
data-set-off="off"<br />
data-dim="dim"<br />
data-min="0"<br />
data-max="100"<br />
></div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_homestatus">'''Homestatus'''</div><br />
<br />
Beispiel rechts im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["1","2","3","4"]'<br />
data-alias='["Home","Night","Away","Holiday"]'<br />
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'><br />
</div><br />
</pre><br />
<br />
Beispiel links im Bild:<br />
<pre><br />
<div data-type="homestatus" data-device='dummy1'<br />
data-get-on='["home","asleep","absent","gone","gotosleep"]'<br />
data-alias='["Home","Night","Away","Holiday","Retire"]'<br />
data-icons='["fa-fire","fa-film","fa-plus","fa-car","fa-tint"]'<br />
data-version='residents'><br />
</div><br />
</pre><br />
<br />
[[Datei:homestatus_tabletUI.png]]<br />
<br />
<br />
<br />
<div id="Beispiel_image">'''Image'''</div><br />
<br />
<br />
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).<br />
<br />
<pre><br />
<div data-type="image"<br />
data-size="80%"<br />
data-url="http://www.dwd.de/wundk/wetter/de/Deutschland.jpg"<br />
</div><br />
</pre><br />
<br />
[[Datei:image_tabletUI.jpg]]<br />
<br />
<br />
Example for how to add an image to the dashboard which its URL is delivered by a FHEM module like PROPLANTA:<br />
<br />
<pre><br />
<div data-type="image" data-device="Wetter1" <br />
data-get="fc0_weatherDayIcon" <br />
data-size="40px" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_label">'''Label'''</div><br />
<br />
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen<br />
<br />
<pre><br />
STATE T: 20.0 H: 61<br />
</pre><br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-part="2" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" data-part="4" <br />
data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
But the same result can reached by getting single readings:<br />
<pre><br />
humidity 58<br />
temperature 20.1<br />
</pre><br />
<br />
<pre><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="temperature" data-unit="%B0C%0A" class="cell big"></div><br />
<div data-type="label" class="cell">Temperatur</div><br />
<div data-type="label" data-device="THSensorWZ" <br />
data-get="humidity" data-unit="%" class="cell big"></div><br />
<div data-type="label" class="cell">Luftfeuchte</div><br />
</pre><br />
<br />
Example for how to influence the color of the label according to value limits<br />
<pre><br />
<div data-type="label" <br />
data-device="OutTemp" <br />
data-limits='[-73,10,23]' <br />
data-colors='["#6699FF","#AA6900","#FF0000"]' <br />
data-unit="%B0C%0A" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
Example for how to create a widget for shutter via push: show state and set up/down<br />
<pre><br />
<div data-type="switch" <br />
data-device="wzRollo" <br />
data-get-on="up" <br />
data-get-off="down" <br />
data-icon="fa-bars" <br />
class="cell" ><br />
</div><br />
<div data-type="label" <br />
class="cell">Rollo</div><br />
</pre><br />
<br />
Example for how to create a label for a time value in short format with usage of RegEx.<br />
<br />
<pre><br />
<div data-type="label" <br />
data-device="dummy1" <br />
data-part="(\d\d\.\d\d\.).*" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
Example for how to show two labels in one line.<br />
<br />
<pre><br />
<div class=""><br />
<div type="label" device="OnSunrise" class="inline"></div>bis<br />
<div type="label" device="OnSunset" class="inline"></div><br />
</div><br />
</pre><br />
<br />
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.<br />
<br />
<pre><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc0_uv"<br />
data-limits="[-2, 2, 5, 7, 10]" <br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc0_date"></div><br />
<div data-type="label" class="wider cell bigger" data-device="ProVorhersage"<br />
data-get="fc1_uv"<br />
data-limits="[-2, 2, 5, 7, 10]"<br />
data-colors='["#66FF33","#FFFF00","#FF6600","#FF0000","#993399"]'></div><br />
<div data-type="label" class="cell" data-device="ProVorhersage" data-get="fc1_date"></div><br />
</pre><br />
<br />
[[Datei:label_tabletUI.jpg]]<br />
<br />
<br />
<div id="Beispiel_pagetab">'''Pagetab'''</div><br />
<br />
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html<br />
<br />
<pre><br />
<html><br />
<body><br />
<header>MENU</header><br />
<div class="cell"><br />
<div data-type="pagetab" data-url="index.html" data-icon="fa-home" class="cell"></div><br />
<div data-type="pagetab" data-url="index_2.html" data-icon="fa-sliders" class="cell"></div><br />
<div data-type="pagetab" data-url="index_3.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_4.html" data-icon="fa-hotel" class="cell"></div><br />
<div data-type="pagetab" data-url="index_5.html" data-icon="fa-music" class="cell"></div><br />
<div data-type="pagetab" data-url="index_6.html" data-icon="fa-database" class="cell"></div><br />
<div data-type="pagetab" data-url="index_7.html" data-icon="fa-fax" class="cell"></div><br />
</div><br />
</body><br />
</html><br />
</pre><br />
<br />
<br />
<div id="Beispiel_playstream">'''Playstream'''</div><br />
<br />
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.<br />
<br />
<pre><br />
<div data-type="playstream" data-url="http://radioeins.de/stream"></div><br />
<div data-type="label" class="darker">Radio eins</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_push">'''Push'''</div><br />
<br />
Example for how to create a push button widget to trigger all devices on:<br />
<br />
<pre><br />
<div data-type="push" <br />
data-device="LightAll" <br />
data-cmd="trigger" <br />
data-set="on" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Beispiel für zwei horizontale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-h"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-angle-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push1.png]]<br />
<br />
<br />
Beispiel für zwei quadratische vertikale Buttons:<br />
<br />
<pre><br />
<div class="cell"><br />
<div class="doublebox-v"><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-up" data-background-icon="fa-square-o" <br />
data-set="up"><br />
</div><br />
<div data-type="push" data-device="Rollo" <br />
data-icon="fa-chevron-down" data-background-icon="fa-square-o" <br />
data-set="down"><br />
</div><br />
</div><br />
</div><br />
</pre><br />
<br />
[[Datei:push2.png]]<br />
<br />
<br />
<div id="Beispiel_rotor">'''Rotor'''</div><br />
<br />
Example for a rotor widget, which switches between to days of weather forecast<br />
<br />
<pre><br />
<div data-type="rotor" class="fade"><br />
<ul><br />
<li><br />
<div data-type="label" class="darker">Heute</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc0_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc0_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
<li><br />
<div data-type="label" class="darker">Morgen</div><br />
<div data-type="weather" data-device="AgroWeather" data-get="fc1_weatherDay" class="big"></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_weatherDay" class=""></div><br />
<div data-type="label" data-device="AgroWeather" data-get="fc1_tempMax" data-unit="%B0C%0A" class="large"></div><br />
</li><br />
</ul><br />
</div><br />
</pre><br />
<br />
<br />
<br />
<div id="Beispiel_select">'''Select'''</div><br />
<br />
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von FHEM übergeben.<br />
<br />
<pre><br />
<div class="cell wider"><br />
<div data-type="label" class="inline wider">Zone2</div><br />
<div data-type="select" data-device="AvReceiverZ2" data-items='["Airplay","Webradio","BD/DVD","PHONO"]' data-get="input" data-set="input" class="cell w2x" ></div><br />
<div></div><br />
<div data-type="label" class="inline">Zone1</div><br />
<div data-type="select" data-device="AvReceiver" data-list="inputs" data-get="input" data-set="input" class="cell w2x" ></div><br />
</div><br />
</pre><br />
<br />
[[Datei:select_tabeltUI.png]]<br />
<br />
<br />
<div id="Beispiel_slider">'''Slider'''</div><br />
<br />
<br />
Slider mit einstellbaren Werten von 10 bis 90:<br />
<br />
<pre><br />
<div data-type="slider" <br />
data-device='Dummy1' <br />
data-min="10" <br />
data-max="90" <br />
class="cell" ><br />
</div><br />
<div data-type="label" class="cell">Light1</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI.png]]<br />
<br />
<br />
Horizontal angeordneter Slider:<br />
<br />
<pre><br />
<div data-type="slider"<br />
data-device='Dummy1' <br />
data-min="0" <br />
data-max="100" <br />
class="horizontal" <br />
</div><br />
</pre><br />
<br />
[[Datei:slider_tabletUI2.jpg]]<br />
<br />
<br />
<div id="Beispiel_switch">'''Switch'''</div><br />
<br />
Schalter. Usage of RegEx pattern for state request:<br />
<br />
<pre><br />
<div data-type="switch" class="cell" <br />
data-device="MILIGHT_Zone1_Wohnzimmer" <br />
data-get-on="on.*"<br />
data-get-off="off"></div><br />
</pre><br />
<br />
[[Datei:switch.png]]<br />
<br />
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:<br />
<br />
<pre><br />
<div class="cell left"><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert1).)*" <br />
data-get-on="Wert1" class="cell" ></div><br />
<div data-type="label" class="cell">Wert1</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert2).)*" <br />
data-get-on="Wert2" class="cell" ></div><br />
<div data-type="label" class="cell">Wert2</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert3).)*" <br />
data-get-on="Wert3" class="cell" ></div><br />
<div data-type="label" class="cell">Wert3</div><br />
<div data-type="switch" data-device="dummy1" <br />
data-get-off="((?!Wert4).)*" <br />
data-get-on="Wert4" class="cell" ></div><br />
<div data-type="label" class="cell">Wert4</div><br />
</div><br />
</pre><br />
<br />
[[Datei:switch4.png]]<br />
<br />
<br />
<div id="Beispiel_symbol">'''Symbol'''</div><br />
<br />
Example for a tristate icon<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-get-on='["wert1","wert2","wert3"]' <br />
data-icons='["fa-arrow-up","fa-user","fa-arrow-down"]' <br />
data-on-colors='["SeaGreen","SlateBlue","IndianRed"]' <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
<br />
Example for a tristate icon with blink and spin animation<br />
<br />
<pre><br />
<div data-type="symbol" data-device="dummy1" <br />
data-icons='["fa-exclamation-triangle fa-blink","fa-exclamation-circle","fa-cog fa-spin"]' <br />
data-on-colors='["Crimson","GoldenRod","SeaGreen"]' <br />
data-get-on='["Wert1","Wert2","Wert3"]' ><br />
</div><br />
</pre><br />
<br />
<br />
Example for a battery level control with RegEx<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'<br />
data-get-on='["3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'<br />
data-on-colors='["#505050","#505050","#505050","#ad3333","#ad3333"]'><br />
</div><br />
</pre><br />
<br />
<br />
<br />
Example for a battery level control with greater-equal compare and 90° rotated symbols<br />
<br />
<pre><br />
<div data-type="symbol" data-device="BadHeizung" data-get="batteryLevel"<br />
data-icons='["oa-measure_battery_0 fa-rotate-90","oa-measure_battery_25 fa-rotate-90","oa-measure_battery_50 fa-rotate-90","oa-measure_battery_75 fa-rotate-90","oa-measure_battery_0 fa-rotate-90"]'<br />
data-get-on='["0","2","2.4","2.7","3.0"]'<br />
data-on-colors='["#ad3333","#ad3333","#505050","#505050","#505050"]'><br />
</div><br />
</pre><br />
<br />
<br />
<div id="Beispiel_thermostat">'''Thermostat'''</div><br />
<br />
Configure as data-device='...' that item which delivers temp and desired-temp as reading.<br />
<br />
Default parameters are:<br />
<pre><br />
data-get="desired-temp" data-temp="measured-temp" data-set="desired-temp"<br />
</pre><br />
<br />
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.<br />
<br />
<pre><br />
<div data-type="thermostat" data-device='KH_Clima' class="cell"></div><br />
</pre><br />
<br />
The long format looks like this:<br />
<br />
<pre><br />
<div data-type="thermostat" <br />
data-device="KH_Clima" <br />
data-get="desired-temp" <br />
data-temp="measured-temp" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
<br />
Example for MAX!:<br />
<pre><br />
<div data-type="thermostat" data-device="HZ_Tuer" <br />
data-valve="valveposition" <br />
data-get="desiredTemperature" <br />
data-temp="temperature" <br />
data-set="desiredTemperature" <br />
class="cell"><br />
</div><br />
</pre><br />
<br />
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.<br />
<br />
[[Datei:thermostat.png]]<br />
<br />
<br />
<div id="Beispiel_weather">'''Weather'''</div><br />
<br />
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch FHEM-Module wie PROLANTA, OPENWEATHER und Weather bereitgestellt werden. <br />
Add 'big' or 'bigger' to CSS class to get a bigger weather icon.<br />
<br />
Beispiel:<br />
<pre><br />
<div data-type="weather" <br />
data-device="Weather" <br />
data-get="fc0_weatherDay" <br />
class="cell big"><br />
</div><br />
</pre><br />
<br />
[[Datei:weather.png]]<br />
<br />
== Icon-Konfiguration ==<br />
<br />
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door<br />
<br />
* Mehr als 500 Icons von "http://fortawesome.github.io/Font-Awesome/icons" verfügbar. Einfach den Icon-Namen angeben (Suffix "fa-" nicht vergessen, Z.B. <code>data-icon="fa-volume-up"</code><br />
<br />
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.<br />
<pre><br />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" /><br />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" /><br />
</pre><br />
<br />
Diese font icons haben das Präfix 'fs-' bzw. 'oa-'.<br />
<br />
Beispiel bei einem Schalter:<br />
<pre><div data-type="switch" data-device='dummy1' data-icon="oa-secur_locked"></div></pre><br />
<br />
<br />
Und so als großes Symbol:<br />
<pre><br />
<div data-type="symbol" data-device='dummy1'<br />
data-icon="oa-status_frost"<br />
data-on-color="#bb3232"<br />
data-get-on="on"<br />
data-get-off="!on"<br />
class="bigger"><br />
</div><br />
</pre><br />
<br />
<br />
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: <code>data-icon="oa-secur_locked bold"</code><br />
<br />
<br />
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)<br />
<br />
<br />
== Spezial ==<br />
Folgender Befehl setzt einen direkten Befehl an FHEM ab (<code>set dummy1 off</code>):<br />
<pre><br />
<div onclick="setFhemStatus('set dummy1 off')">All off!</div><br />
</pre><br />
<br />
<br />
<br />
== FAQ ==<br />
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.<br />
<br />
== Links ==<br />
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]<br />
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]<br />
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]<br />
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Nobby1805