mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-19 00:26:03 +00:00
60_Watches: contrib 0.18.0
git-svn-id: https://svn.fhem.de/fhem/trunk@21876 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
875264b4e6
commit
e383efc3c1
@ -72,6 +72,7 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"0.18.0" => "06.05.2020 attr 'digitalTextTicker' deleted and switched to setter 'textTicker', default text switched to blank ",
|
||||||
"0.17.0" => "05.05.2020 new attr 'digitalTextTicker', 'digitalTextDigitNumber' ",
|
"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 ",
|
||||||
@ -115,7 +116,6 @@ 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 ".
|
"digitalTextDigitNumber ".
|
||||||
"disable:1,0 ".
|
"disable:1,0 ".
|
||||||
"hideDisplayName:1,0 ".
|
"hideDisplayName:1,0 ".
|
||||||
@ -158,10 +158,10 @@ sub Define {
|
|||||||
return "You need to specify more parameters.\n". "Format: define <name> Watches [Modern | Station | Digital]";
|
return "You need to specify more parameters.\n". "Format: define <name> Watches [Modern | Station | Digital]";
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash->{HELPER}{MODMETAABSENT} = 1 if($modMetaAbsent); # Modul Meta.pm nicht vorhanden
|
$hash->{HELPER}{MODMETAABSENT} = 1 if($modMetaAbsent); # Modul Meta.pm nicht vorhanden
|
||||||
$hash->{MODEL} = $a[2];
|
$hash->{MODEL} = $a[2];
|
||||||
|
|
||||||
setVersionInfo($hash); # Versionsinformationen setzen
|
setVersionInfo($hash); # Versionsinformationen setzen
|
||||||
|
|
||||||
readingsSingleUpdate($hash,"state", "initialized", 1); # Init für "state"
|
readingsSingleUpdate($hash,"state", "initialized", 1); # Init für "state"
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ sub Set { ## no critic 'compl
|
|||||||
$setlist .= "alarmHMSset alarmHMSdel:noArg reset:noArg resume:noArg start:noArg stop:noArg " if($addp =~ /stopwatch|countdownwatch/);
|
$setlist .= "alarmHMSset alarmHMSdel:noArg reset:noArg resume:noArg start:noArg stop:noArg " if($addp =~ /stopwatch|countdownwatch/);
|
||||||
$setlist .= "countDownInit " if($addp =~ /countdownwatch/);
|
$setlist .= "countDownInit " if($addp =~ /countdownwatch/);
|
||||||
# $setlist .= "alarmHMSset alarmHMSdel:noArg " if($addp =~ /\bwatch\b/);
|
# $setlist .= "alarmHMSset alarmHMSdel:noArg " if($addp =~ /\bwatch\b/);
|
||||||
$setlist .= "displayTextSet displayTextDel:noArg " if($addp eq "text");
|
$setlist .= "displayTextSet displayTextDel:noArg textTicker:on,off " if($addp eq "text");
|
||||||
|
|
||||||
if ($opt =~ /\bstart\b/) {
|
if ($opt =~ /\bstart\b/) {
|
||||||
return qq{Please set "countDownInit" before !} if($addp =~ /countdownwatch/ && !ReadingsVal($name, "countInitVal", ""));
|
return qq{Please set "countDownInit" before !} if($addp =~ /countdownwatch/ && !ReadingsVal($name, "countInitVal", ""));
|
||||||
@ -255,11 +255,18 @@ sub Set { ## no critic 'compl
|
|||||||
|
|
||||||
my $txt = join (" ", @a);
|
my $txt = join (" ", @a);
|
||||||
$txt =~ s/[\r\n]//g;
|
$txt =~ s/[\r\n]//g;
|
||||||
readingsSingleUpdate($hash, "displayText", $txt, 0);
|
readingsSingleUpdate($hash, "displayText", $txt, 1);
|
||||||
|
|
||||||
} elsif ($opt eq "displayTextDel") {
|
} elsif ($opt eq "displayTextDel") {
|
||||||
delReadings ($name, "displayText");
|
delReadings ($name, "displayText");
|
||||||
|
|
||||||
|
} elsif ($opt eq "textTicker") {
|
||||||
|
if($prop eq "on") {
|
||||||
|
readingsSingleUpdate($hash, "displayTextTicker", "on", 1);
|
||||||
|
} else {
|
||||||
|
readingsSingleUpdate($hash, "displayTextTicker", "off", 1);
|
||||||
|
}
|
||||||
|
|
||||||
} elsif ($opt eq "reset") {
|
} elsif ($opt eq "reset") {
|
||||||
delReadings ($name);
|
delReadings ($name);
|
||||||
readingsSingleUpdate($hash, "state", "initialized", 1);
|
readingsSingleUpdate($hash, "state", "initialized", 1);
|
||||||
@ -320,7 +327,11 @@ sub Attr {
|
|||||||
}
|
}
|
||||||
$do = 0 if($cmd eq "del");
|
$do = 0 if($cmd eq "del");
|
||||||
|
|
||||||
delReadings ($name);
|
if($do ne "text") {
|
||||||
|
delReadings ($name);
|
||||||
|
} else {
|
||||||
|
delReadings ($name,undef,"^display.*");
|
||||||
|
}
|
||||||
|
|
||||||
readingsSingleUpdate($hash, "state", "initialized", 1);
|
readingsSingleUpdate($hash, "state", "initialized", 1);
|
||||||
|
|
||||||
@ -368,19 +379,24 @@ return $ret;
|
|||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# löscht alle oder das spezifizierte Reading (außer state)
|
# löscht alle oder das spezifizierte Reading (außer state)
|
||||||
|
# $todel = nur dieses Reading löschen
|
||||||
|
# $supress = Reading (Regex) nicht löschen
|
||||||
##############################################################################
|
##############################################################################
|
||||||
sub delReadings {
|
sub delReadings {
|
||||||
my ($name,$reading) = @_;
|
my ($name,$todel,$supress) = @_;
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
|
|
||||||
if($reading) {
|
my $addp = AttrVal($name, "digitalDisplayPattern", "watch");
|
||||||
readingsDelete($hash,$reading);
|
|
||||||
|
if($todel) {
|
||||||
|
readingsDelete($hash,$todel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @allrds = keys%{$hash->{READINGS}};
|
my @allrds = keys%{$hash->{READINGS}};
|
||||||
for my $key(@allrds) {
|
for my $key(@allrds) {
|
||||||
next if($key =~ /\bstate\b/);
|
next if($key =~ /\bstate\b/x);
|
||||||
|
next if(defined $supress && $key =~ /$supress/x);
|
||||||
readingsDelete($hash,$key);
|
readingsDelete($hash,$key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,12 +423,12 @@ 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 $adtdn = AttrVal($d, "digitalTextDigitNumber", 0);
|
||||||
|
|
||||||
my $deftxt = " ";
|
my $deftxt = " ";
|
||||||
my $ddt = ReadingsVal($d, "displayText", $deftxt);
|
my $rdtt = ReadingsVal ($d, "displayTextTicker", "off");
|
||||||
my $alarm = " ".ReadingsVal($d, "alarmTime", "aa:bb:cc");
|
my $ddt = ReadingsVal ($d, "displayText", $deftxt);
|
||||||
|
my $alarm = " ".ReadingsVal($d, "alarmTime", "aa:bb:cc");
|
||||||
|
|
||||||
my $ddp = "###:##:##"; # dummy
|
my $ddp = "###:##:##"; # dummy
|
||||||
my ($h,$m,$s,$txtc) = (0,0,0,0);
|
my ($h,$m,$s,$txtc) = (0,0,0,0);
|
||||||
@ -485,6 +501,7 @@ sub digitalWatch {
|
|||||||
var startDate_$d;
|
var startDate_$d;
|
||||||
var value_$d = ' $deftxt'; // default Digitaltext initialisieren
|
var value_$d = ' $deftxt'; // default Digitaltext initialisieren
|
||||||
var tlength_$d = '$txtc'; // Textlänge Digitaltext initialisieren
|
var tlength_$d = '$txtc'; // Textlänge Digitaltext initialisieren
|
||||||
|
var tticker_$d = '$rdtt'; // Tickereinstellung initialisieren
|
||||||
|
|
||||||
function SegmentDisplay_$d(displayId_$d) {
|
function SegmentDisplay_$d(displayId_$d) {
|
||||||
this.displayId_$d = displayId_$d;
|
this.displayId_$d = displayId_$d;
|
||||||
@ -1300,13 +1317,13 @@ sub digitalWatch {
|
|||||||
tlength_$d = $adtdn;
|
tlength_$d = $adtdn;
|
||||||
}
|
}
|
||||||
|
|
||||||
display_$d.pattern = ''; // Textschablone erstellen
|
display_$d.pattern = ''; // Textschablone erstellen
|
||||||
for (var i = 0; i <= tlength_$d; i++) {
|
for (var i = 0; i <= tlength_$d; i++) {
|
||||||
display_$d.pattern += '#';
|
display_$d.pattern += '#';
|
||||||
}
|
}
|
||||||
display_$d.pattern += ' '; // Abstand Text zum rechten Rand
|
display_$d.pattern += ' '; // Abstand Text zum rechten Rand
|
||||||
|
|
||||||
if ($adtt == 1) { // Text als Laufband
|
if (tticker_$d == 'on') { // Text als Laufband ?
|
||||||
var rttime = new Date();
|
var rttime = new Date();
|
||||||
var rthours = rttime.getHours();
|
var rthours = rttime.getHours();
|
||||||
var rtminutes = rttime.getMinutes();
|
var rtminutes = rttime.getMinutes();
|
||||||
@ -1319,7 +1336,7 @@ sub digitalWatch {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
command = '{ReadingsVal(\"$d\",\"displayText\", \"$deftxt\")}'; // Text dynamisch aus Reading lesen
|
command = '{ReadingsVal(\"$d\",\"displayText\", \"$deftxt\")}'; // Text dynamisch aus Reading lesen
|
||||||
url_$d = makeCommand(command);
|
url_$d = makeCommand(command);
|
||||||
\$.get( url_$d, function (data) {
|
\$.get( url_$d, function (data) {
|
||||||
value_$d = data.replace(/\\n/g, '');
|
value_$d = data.replace(/\\n/g, '');
|
||||||
@ -1327,6 +1344,14 @@ sub digitalWatch {
|
|||||||
return value_$d;
|
return value_$d;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
command = '{ReadingsVal(\"$d\",\"displayTextTicker\", \"off\")}'; // Textticker Einstellung aus Reading lesen
|
||||||
|
url_$d = makeCommand(command);
|
||||||
|
\$.get( url_$d, function (data) {
|
||||||
|
tticker_$d = data.replace(/\\n/g, '');
|
||||||
|
return tticker_$d;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
value_$d = $ddt;
|
value_$d = $ddt;
|
||||||
@ -1337,7 +1362,7 @@ sub digitalWatch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
display_$d.setValue(value_$d);
|
display_$d.setValue(value_$d);
|
||||||
window.setTimeout('animate_$d()', 200);
|
window.setTimeout('animate_$d()', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@ -2178,7 +2203,7 @@ Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server
|
|||||||
<li><b>displayTextSet</b><br>
|
<li><b>displayTextSet</b><br>
|
||||||
Stellt den anzuzeigenden Text ein. <br>
|
Stellt den anzuzeigenden Text ein. <br>
|
||||||
Dieses Set-Kommando ist nur bei einer digitalen Segmentanzeige mit "digitalDisplayPattern = text" vorhanden. <br>
|
Dieses Set-Kommando ist nur bei einer digitalen Segmentanzeige mit "digitalDisplayPattern = text" vorhanden. <br>
|
||||||
(default: ----) <br><br>
|
(default: leere Anzeige) <br><br>
|
||||||
|
|
||||||
<b>Hinweis:</b> <br>
|
<b>Hinweis:</b> <br>
|
||||||
Die darstellbaren Zeichen sind vom Attribut "digitalSegmentType" abhängig. <br>
|
Die darstellbaren Zeichen sind vom Attribut "digitalSegmentType" abhängig. <br>
|
||||||
@ -2224,6 +2249,13 @@ Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
<a name="textTicker"></a>
|
||||||
|
<li><b>textTicker on | off </b><br>
|
||||||
|
Schaltet den Laufschriftmodus einer Textanzeige (siehe Attribut digitalDisplayPattern) ein bzw. aus. <br>
|
||||||
|
(default: off)
|
||||||
|
</li>
|
||||||
|
<br>
|
||||||
|
|
||||||
<a name="time"></a>
|
<a name="time"></a>
|
||||||
<li><b>time <hh> <mm> <ss> </b><br>
|
<li><b>time <hh> <mm> <ss> </b><br>
|
||||||
Setzt eine statische Zeitanzeige mit hh-Stunden(24), mm-Minuten und ss-Sekunden. <br>
|
Setzt eine statische Zeitanzeige mit hh-Stunden(24), mm-Minuten und ss-Sekunden. <br>
|
||||||
@ -2480,13 +2512,6 @@ Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server
|
|||||||
der Zeichengröße an die Anzahl abhängig von der eingestellten Displaygröße (siehe htmlattr). <br>
|
der Zeichengröße an die Anzahl abhängig von der eingestellten Displaygröße (siehe htmlattr). <br>
|
||||||
(default: 0)
|
(default: 0)
|
||||||
</li>
|
</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>
|
<br>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user