60_Watches: contrib 0.17.0
git-svn-id: https://svn.fhem.de/fhem/trunk@21870 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -72,6 +72,7 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"0.17.0" => "05.05.2020 new attr 'digitalTextTicker', 'digitalTextDigitNumber' ",
|
||||||
"0.16.0" => "04.05.2020 delete attr 'digitalDisplayText', new setter 'displayText', 'displayTextDel' ",
|
"0.16.0" => "04.05.2020 delete attr 'digitalDisplayText', new setter 'displayText', 'displayTextDel' ",
|
||||||
"0.15.1" => "04.05.2020 fix permanently events when no alarmTime is set in countdownwatch and countdown is finished ",
|
"0.15.1" => "04.05.2020 fix permanently events when no alarmTime is set in countdownwatch and countdown is finished ",
|
||||||
"0.15.0" => "04.05.2020 new attribute 'digitalSegmentType' for different segement count, also new attributes ".
|
"0.15.0" => "04.05.2020 new attribute 'digitalSegmentType' for different segement count, also new attributes ".
|
||||||
@@ -114,6 +115,8 @@ sub Initialize {
|
|||||||
"digitalSegmentDistance:slider,0,0.1,5,1 ".
|
"digitalSegmentDistance:slider,0,0.1,5,1 ".
|
||||||
"digitalSegmentType:7,14,16 ".
|
"digitalSegmentType:7,14,16 ".
|
||||||
"digitalSegmentWidth:slider,0.3,0.1,3.5,1 ".
|
"digitalSegmentWidth:slider,0.3,0.1,3.5,1 ".
|
||||||
|
"digitalTextTicker:1,0 ".
|
||||||
|
"digitalTextDigitNumber ".
|
||||||
"disable:1,0 ".
|
"disable:1,0 ".
|
||||||
"hideDisplayName:1,0 ".
|
"hideDisplayName:1,0 ".
|
||||||
"htmlattr ".
|
"htmlattr ".
|
||||||
@@ -326,6 +329,12 @@ sub Attr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($cmd eq "set") {
|
||||||
|
if ($aName eq "digitalTextDigitNumber" && $aVal !~ /^\d+$/x) {
|
||||||
|
return qq{The value of "$aName" is not valid. Only integers are allowed !};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,13 +406,16 @@ sub digitalWatch {
|
|||||||
my $addd = AttrVal($d, "digitalDigitDistance", 2);
|
my $addd = AttrVal($d, "digitalDigitDistance", 2);
|
||||||
my $adsd = AttrVal($d, "digitalSegmentDistance", 0.5);
|
my $adsd = AttrVal($d, "digitalSegmentDistance", 0.5);
|
||||||
my $adda = AttrVal($d, "digitalDigitAngle", 9);
|
my $adda = AttrVal($d, "digitalDigitAngle", 9);
|
||||||
|
my $adtt = AttrVal($d, "digitalTextTicker", 0);
|
||||||
|
my $adtdn = AttrVal($d, "digitalTextDigitNumber", 0);
|
||||||
|
|
||||||
my $ddt = ReadingsVal($d, "displayText", "----");
|
my $ddt = ReadingsVal($d, "displayText", "----");
|
||||||
$ddt =~ s/[\r\n]//g;
|
$ddt =~ s/[\r\n]//g;
|
||||||
my $alarm = " ".ReadingsVal($d, "alarmTime", "aa:bb:cc");
|
my $alarm = " ".ReadingsVal($d, "alarmTime", "aa:bb:cc");
|
||||||
|
|
||||||
my $ddp = "###:##:##"; # dummy
|
my $ddp = "###:##:##"; # dummy
|
||||||
my ($h,$m,$s) = (0,0,0);
|
my ($h,$m,$s,$txtc) = (0,0,0,0);
|
||||||
|
my $forerun = ""; # init Vorlauf bei Laufschrift
|
||||||
|
|
||||||
if($addp eq "watch") {
|
if($addp eq "watch") {
|
||||||
$ddp = "###:##:##";
|
$ddp = "###:##:##";
|
||||||
@@ -412,7 +424,7 @@ sub digitalWatch {
|
|||||||
+ ':' + ((seconds < 10) ? '0' : '') + seconds";
|
+ ':' + ((seconds < 10) ? '0' : '') + seconds";
|
||||||
|
|
||||||
} elsif ($addp eq "stopwatch" || $addp eq "countdownwatch") {
|
} elsif ($addp eq "stopwatch" || $addp eq "countdownwatch") {
|
||||||
$alarmdef = "aa:bb:cc" if($addp eq "stopwatch"); # Stoppuhr bei Start 00:00:00 nicht Alerm auslösen
|
$alarmdef = "aa:bb:cc" if($addp eq "stopwatch"); # Stoppuhr bei Start 00:00:00 nicht Alerm auslösen
|
||||||
$ddp = "###:##:##";
|
$ddp = "###:##:##";
|
||||||
$ddt = "((hours_$d < 10) ? ' 0' : ' ') + hours_$d
|
$ddt = "((hours_$d < 10) ? ' 0' : ' ') + hours_$d
|
||||||
+ ':' + ((minutes_$d < 10) ? '0' : '') + minutes_$d
|
+ ':' + ((minutes_$d < 10) ? '0' : '') + minutes_$d
|
||||||
@@ -428,11 +440,15 @@ sub digitalWatch {
|
|||||||
+ ':' + ((seconds_$d < 10) ? '0' : '') + seconds_$d";
|
+ ':' + ((seconds_$d < 10) ? '0' : '') + seconds_$d";
|
||||||
|
|
||||||
} elsif ($addp eq "text") {
|
} elsif ($addp eq "text") {
|
||||||
my $txtc = length($ddt);
|
$txtc = length($ddt);
|
||||||
$ddp = "";
|
$txtc = $adtdn if($adtdn); # per Attribut definierte Anzahl der TextDigits im Display
|
||||||
for(my $i = 0; $i <= $txtc; $i++) {
|
$ddp = "";
|
||||||
$ddp .= "#";
|
|
||||||
|
for(my $i = 0; $i <= $txtc; $i++) { # die Anzahl der TextDigits im Display berechnen
|
||||||
|
$ddp .= "#";
|
||||||
|
$forerun .= " "; # Vorlauf bei Laufschrift = Länge des Schriftzuges (default)
|
||||||
}
|
}
|
||||||
|
|
||||||
$ddt = "' ".$ddt."'";
|
$ddt = "' ".$ddt."'";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1272,12 +1288,24 @@ sub digitalWatch {
|
|||||||
seconds_$d = 0;
|
seconds_$d = 0;
|
||||||
|
|
||||||
localStoreSet (hours_$d, minutes_$d, seconds_$d);
|
localStoreSet (hours_$d, minutes_$d, seconds_$d);
|
||||||
localStoreSetLastalm ('NaN'); // letzte Alarmzeit zurücksetzen
|
localStoreSetLastalm ('NaN'); // letzte Alarmzeit zurücksetzen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var value = $ddt;
|
var value = $ddt;
|
||||||
|
|
||||||
|
if (watchkind_$d == 'text' && $adtt == 1) { // Laufschrift anzeigen
|
||||||
|
var rttime = new Date();
|
||||||
|
var rthours = rttime.getHours();
|
||||||
|
var rtminutes = rttime.getMinutes();
|
||||||
|
var rtseconds = rttime.getSeconds();
|
||||||
|
var rtmillis = rttime.getMilliseconds();
|
||||||
|
// var text = ' abcdefghijklmnopqrstuvwxyz 0123456789 ';
|
||||||
|
var text = '$forerun'+value+' ';
|
||||||
|
var index = ( 2 * (rtseconds + 60*rtminutes + 24*60*rthours) + Math.floor(rtmillis / 500) ) % (text.length - 6);
|
||||||
|
value = text.substr(index, $txtc+parseInt(1));
|
||||||
|
}
|
||||||
|
|
||||||
if(value == ' undefined:undefined:undefined' || value == ' NaN:NaN:NaN') {
|
if(value == ' undefined:undefined:undefined' || value == ' NaN:NaN:NaN') {
|
||||||
value = ' : : ';
|
value = ' : : ';
|
||||||
}
|
}
|
||||||
@@ -2218,7 +2246,7 @@ Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server
|
|||||||
|
|
||||||
<a name="htmlattr"></a>
|
<a name="htmlattr"></a>
|
||||||
<li><b>htmlattr</b><br>
|
<li><b>htmlattr</b><br>
|
||||||
Zusätzliche HTML Tags zur Größenänderung de Uhr. <br><br>
|
Zusätzliche HTML Tags zur Größenänderung der Uhr / Anzeige. <br><br>
|
||||||
<ul>
|
<ul>
|
||||||
<b>Beispiel: </b><br>
|
<b>Beispiel: </b><br>
|
||||||
attr <name> htmlattr width="125" height="125" <br>
|
attr <name> htmlattr width="125" height="125" <br>
|
||||||
@@ -2419,6 +2447,22 @@ Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
<a name="digitalTextDigitNumber"></a>
|
||||||
|
<li><b>digitalTextDigitNumber <Anzahl> </b><br>
|
||||||
|
Wenn <Anzahl> > 0 wird die Anzahl der Stellen einer Textanzeige (digitalDisplayPattern = text) fest eingestellt.
|
||||||
|
Wenn <Anzahl> = 0 oder nicht gesetzt erfolgt die Festlegung automatisch. In diesem Fall erfolgt eine Adaption
|
||||||
|
der Zeichengröße an die Anzahl abhängig von der eingestellten Displaygröße (siehe htmlattr). <br>
|
||||||
|
(default: 0)
|
||||||
|
</li>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a name="digitalTextTicker"></a>
|
||||||
|
<li><b>digitalTextTicker </b><br>
|
||||||
|
Schaltet den Laufschriftmodus einer Textanzeige (digitalDisplayPattern = text) ein bzw. aus. <br>
|
||||||
|
(default: 0)
|
||||||
|
</li>
|
||||||
|
<br>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user