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:
DS_Starter
2020-05-05 12:30:29 +00:00
parent 23be62ffd4
commit 9fb9a3a970

View File

@@ -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 = "###:##:##";
@@ -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);
$txtc = $adtdn if($adtdn); # per Attribut definierte Anzahl der TextDigits im Display
$ddp = ""; $ddp = "";
for(my $i = 0; $i <= $txtc; $i++) {
for(my $i = 0; $i <= $txtc; $i++) { # die Anzahl der TextDigits im Display berechnen
$ddp .= "#"; $ddp .= "#";
$forerun .= " "; # Vorlauf bei Laufschrift = Länge des Schriftzuges (default)
} }
$ddt = "' ".$ddt."'"; $ddt = "' ".$ddt."'";
} }
@@ -1278,6 +1294,18 @@ sub digitalWatch {
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 &lt;name&gt; htmlattr width="125" height="125" <br> attr &lt;name&gt; 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 &lt;Anzahl&gt; </b><br>
Wenn &lt;Anzahl&gt > 0 wird die Anzahl der Stellen einer Textanzeige (digitalDisplayPattern = text) fest eingestellt.
Wenn &lt;Anzahl&gt = 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>