60_Watches - Modul für eine Analog/Digital-Uhr

Begonnen von DS_Starter, 19 November 2018, 23:00:33

Vorheriges Thema - Nächstes Thema

DS_Starter

#60
Ich habe noch einiges an Optimierungen und Bugfixes eingebaut.
Sollte sich jetzt langsam dem Endstand nähern.  :)

Unter anderem sind die Setter alarmHMSset / alarmHMSdel gekürzt auf alarmSet / alarmDel. Bitte beachten !

LG
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Die Darstellung des linken Randes der digitalen Textanzeige habe ich noch nachgebessert. Außerdem kann man die Randabstände nun mit einem Attribut einstellen:

* digitalBorderDistance
Linker und rechter Abstand der digitalen Textanzeige vom Hintergrundrand.
(default: 8px) 

VG
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rischbiter123

Ich warte mal, was Dir sonst noch einfällt. Im Moment funktioniert bei mir alles so, wie ich es brauche.
Dürfte kurz vorm Einchecken sein.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

DS_Starter

Sind wirklich nur noch Kleinigkeiten bzw. kosmetische Korrekturen.
Ansonsten sollte es das wirklich gewesen sein. Ist ja nur ein kleines Hilfsmodul und soll es auch blieben.
Die Laufschriftanzeige finde ich gut und habe sie jetzt auch als Wetterticker auf den Wandtabletts im Einsatz.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

LuckyDay

Zitat von: DS_Starter am 09 Mai 2020, 21:49:29

Die Laufschriftanzeige finde ich gut und habe sie jetzt auch als Wetterticker auf den Wandtabletts im Einsatz.

LG,
Heiko

Bitte mal zeigen  :)

DS_Starter

#65
Guten Morgen,

ZitatBitte mal zeigen 

Gerne, das ist leicht und schnell gemacht.
Erstmal ein Watch-Device als Digitalanzeige definiert und eingestellt:

define DigiText Watches digital
attr DigiText alias aktuelle Wettermeldungen
attr DigiText digitalColorBackground 000000
attr DigiText digitalColorDigits E8D574
attr DigiText digitalDigitAngle 9.0
attr DigiText digitalDigitDistance 2.0
attr DigiText digitalDigitHeight 6.9
attr DigiText digitalDigitWidth 5.0
attr DigiText digitalDisplayPattern text
attr DigiText digitalSegmentDistance 0.0
attr DigiText digitalSegmentType 16
attr DigiText digitalSegmentWidth 0.8
attr DigiText digitalTextDigitNumber 30
attr DigiText hideDisplayName 1
attr DigiText htmlattr width="650" height="30"
attr DigiText room Haustechnik->Uhren

setstate DigiText initialized
setstate DigiText 2020-05-10 06:38:52 displayText Leicht bewoelkt bei aktuell 12 Grad * Wind 3 km/h
setstate DigiText 2020-05-06 10:00:05 displayTextTicker on
setstate DigiText 2020-05-10 07:03:27 state initialized


Die ganzen Attribute sind Einstellungen für die Darstellung wie z.B. Text- und Hintergrundfarbe, Segmentstärken, Größen usw.
Wichtig für die Textanzeigen ist der 16-Segment Modus (digitalSegmentType). Die meisten der Attribute kann man bequem über einen Schieberegler oder Picker auswählen.

Mit einem "set DigiText textTicker on (off)" schaltet man je nach Geschmack den Laufschriftmodus an oder aus. Geht auch dynamisch z.B. in Abhängigkeit der Zeichenzahl ... what ever ...

Nachdem das Gerüst steht, kommt der Content dran.
Den erzeuge ich mit einem einfachen notify aus den Readings eines Weather-Devices:


define N.MyWetter.set.Digitext notify MyWetter:temperature:.* {
                          my $pre = "";;\
                          my $sep = "*";;\
                          my $t = "aktuell ".ReadingsVal ($NAME, "temp_c",     "n.a.")." Grad";;\
                          my $w = "Wind ".   ReadingsVal ($NAME, "wind_speed", "n.a.")." km/h";;\
                          my $c =            ReadingsVal ($NAME, "condition",  "n.a.");;\
                          $c =~ s/ü|Ü/ue/g;;\
                          $c =~ s/ä|Ä/ae/g;;\
                          $c =~ s/ö|Ö/oe/g;;\
                          $c =~ s/ß/ss/g;;\
                          CommandSet (undef, "DigiText displayTextSet $pre $c bei $t $sep $w $pre");;\
                          return;;\
                        }

attr N.MyWetter.set.Digitext room Haustechnik->Uhren



Das Weather Device bietet ja sehr viele Informationen. Ich habe mir mal drei rausgepickt die arrangiert und zusammen
auf dem Display als umlaufende Laufschrift angezeigt werden.
Umlaute muss man in Vokale umwandeln. Sie können nicht dargestellt werden.

Im Anhang sieht man nochmal die Definition und dann einen Ausschnitt aus einem Dashboard so wie ich es dann Live
benutze.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Das Modul habe ich nun ins FHEM Repo eingecheckt und wird ab morgen früh mit dem normalen Update ausgeliefert.

VG
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Erich Fromm

Hallo.

Ich bin gerade über das Modul gestolpert, da ich gerne die Verzögerung via "wait" aus einem DOIF anzeigen möchte. Siehe https://fhem.de/commandref_DE.html#DOIF_wait.

Frage: wie kann im "countDownInit" des Watches auf die Readings eines DOIF zugegriffen werden? ... oder allgemeiner: wie kann im "countDownInit" des Watches auf die Readings eines anderen Devices zugegriffen werden?
Und ... welche Berechnungen sind möglich?
Konkret: im "wait" des DOIF hat es Sekunden. Wie werden die Sekunden aus dem DOIF in "countDownInit <hh> <mm> <ss>" umgewandelt?

Beispiel: ein DOIF Readings mit Namen "CountDownTest" und mit Wert 900 (Sekunden) soll zu einem "set <name> countDownInit 00 15 00 werden".

Grüße, Erich

DS_Starter

Hallo Erich,

ZitatBeispiel: ein DOIF Readings mit Namen "CountDownTest" und mit Wert 900 (Sekunden) soll zu einem "set <name> countDownInit 00 15 00 werden".

diese Umwandlung musst du selbst in einem kleinen Script vornehmen.
Das Modul erwartet als Eingabe im Set countDownInit:

set <name> countDownInit <h> <min> <sec>

Sollte es von allgemeinem Interesse sein an dieser Stelle auch "nur" Sekunden angeben zu können, würde ich diese Möglichkeit im Modul einbauen.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Erich Fromm

Hallo.

Danke für die prompte Rückmeldung.

Ich denke ich brauche hier eine Hilfestellung ...

... wie ist die Syntax für den Zugriff auf die Readings eines anderen Devices? Zum Beispiel wie bei DOIF mit
"Status werden mit [<devicename>], Readings mit [<devicename>:<readingname>], Internals mit [<devicename>:&<internal>] angegeben".
Funktioniert ein?
set myWatch countDownInit 00 [myDOIF:myWatchMinutes] 00

... und wie funktionieren Berechnungen? Zum Beispiel wie bei DOIF mit "Berechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung unmittelbar mit einer runden Klammer beginnen. Innerhalb der Perlberechnung können Readings, Status oder Internals wie gewohnt in eckigen Klammern angegeben werden.".
Funktioniert?
set myWatch countDownInit 00 {([myDOIF:myWatch])/60} 00

Vorab vielen Dank.

Grüße, Erich

DS_Starter

Zitat... wie ist die Syntax für den Zugriff auf die Readings eines anderen Devices?
In Perl-Routinen verwendet man

ReadingsVal ("<Device>", "<Reading>", "<Default-Wert>")

Mit DOIF kenne ich mich nicht aus, das benutze ich nicht.

Aber ich glaube es ist einfacher wenn ich morgen die Möglichkeit vorsehe, direkt Sekunden an dieser Stelle eingeben zu können und die Umrechnung im Modul selbst vorzunehmen.  ;)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rischbiter123

Moin,

ich weis nicht, wie die anderen Nutzer es sehen, aber ich finde es gerade gut, daß man nicht erst umrechnen muss, sondern direkt Stunden und Minuten eingeben kann.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Wolle02

Vielleicht kann man das ja durch ein Attribut wählbar machen?

DS_Starter

Moin,

Zitatich weis nicht, wie die anderen Nutzer es sehen, aber ich finde es gerade gut, daß man nicht erst umrechnen muss, sondern direkt Stunden und Minuten eingeben kann.

Ja, sehe ich auch so. Bleibt auch genauso erhalten. Würde nur vorsehen, wenn man statt der bisherigen Pflicht

  hh mm ss 

nur eine

  <Zahl>

eingibt, die Eingabe als Sekunden gewertet und intern umgerechnet wird in die Form "hh mm ss".
Damit bliebe das bisherige Verhalten unangetastet was mir wichtig ist.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Erich Fromm

Zitat von: DS_Starter am 25 Mai 2020, 23:56:32
In Perl-Routinen verwendet man

ReadingsVal ("<Device>", "<Reading>", "<Default-Wert>")

Mit DOIF kenne ich mich nicht aus, das benutze ich nicht.

Aber ich glaube es ist einfacher wenn ich morgen die Möglichkeit vorsehe, direkt Sekunden an dieser Stelle eingeben zu können und die Umrechnung im Modul selbst vorzunehmen.  ;)

Vorab schon einmal Dankeschön  :)

D.h. nach Anpassung/Umstellung wäre so etwas denkbar?

set myWatch countDownInit {ReadingsVal ("myDOIF", "myWatchInitValueInSeconds", "0")}


Grüße,
Erich