Ich hatte den Bedarf eine frei positionierbare Uhr auf einer Dashboardseite anzeigen zu können.
Ausgehend von den Javascript-Uhren auf den Seiten:
https://www.w3schools.com/graphics/canvas_clock_start.asp
http://www.3quarks.com/de/Bahnhofsuhr/
http://www.3quarks.com/de/Segmentanzeige/index.html
habe ich mir ein kleines Modul gebastelt mit welchem man sich eine Uhr im modernen Stil, eine Bahnhofsuhr oder eine Digitalanzeige definieren kann. Im Anhang gibt es ein paar Beispiele dazu.
Define
define <name> Watches [Modern | Station | Digital]
Modern : erstellt eine analoge Uhr im modernen Design
Station : erstellt eine Bahnhofsuhr
Digital : erstellt eine Digitalanzeige (Uhr, (CountDown)Stoppuhr, statische Zeitanzeige oder Text)
Zu jeder Uhr gibt es eine Handvoll Attribute zur Anpassung der Farbe und Darstellung.
Das Modul wird über FHEM Update ausgeliefert. Die neueste Entwicklungsversion befindet sich im Verzeichnis:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Danach FHEM wie gewöhnlich restarten.
Grüße,
Heiko
Ich habe die Möglichkeiten noch etwas erweitert.
Man kann nun auch einen kurzen Text in der Digtalanzeige platzieren.
digitalDisplayPattern [text | watch]
Umschaltung der Digitalanzeige zwischen Uhrenmodus (default) und Textanzeige. Der anzuzeigende Text kann mit dem Attribut "digitalDisplayText" definiert werden.
watch : Anzeige einer Uhr
text : Anzeige eines definierbaren Textes
digitalDisplayText
Ist das Attribut "digitalDisplayPattern = text" gesetzt, kann mit "digitalDisplayText" der anzuzeigende Text eingestellt werden. Im Default wird "Play" anzgezeigt.
Mit der Siebensegmentanzeige können Ziffern, Bindestrich, Unterstrich und die Buchstaben A, b, C, d, E, F, H, L, n, o, P, r, t, U und Y angezeigt werden. So lassen sich außer Zahlen auch kurze Texte wie ,,Error", ,,HELP", ,,run" oder ,,PLAY" anzeigen.
Das Beispielbild in #0 ist aktualisiert.
Hallo DS_Starter,
Ich habe dein Modul gefunden, da ich eine Möglichkeit suche, eine Zeit anzuzeigen, die ein device eingeschaltet ist.
Wenn ich richtig verstanden habe, zeigt dein Module die Systemzeit an und ist nicht dafür entwickelt worden eine Laufzeit anzuzeigen.
Ich suche eine Anzeige die z. B. auf 00:00 steht und sekundenweise aufwärts zählt solange z. B. ein Schalter eingeschaltet ist.
Kann man dein Modul dafür verwenden und es so erweiten? Hast Du eine Idee?
Das ist putzig, ich habe die Erweiterung als Stoppuhr noch auf meiner ToDo-Liste. :)
Momentan geht es noch nicht.
Eine Basis dafür könnte ein Zähler sein wie hier dargestellt http://www.3quarks.com/de/Segmentanzeige/index.html
Es zeigt dann ein Bild wie im Anhang.
Mal sehen ob/wann ich dazu komme.
LG,
Heiko
Eine Idee hätte ich die jetzt schon funktioniert. Du kannst dir eine Digitaluhr definieren und die Anzeige mit digitalDisplayPattern = text auf Textanzeige umstellen.
Dann kannst du dir einen Zähler (z.B. mit at) definieren der z.B. alle 10 Sekunden hochzählt und das Attribut der Watch ändern:
attr <Name> digitalDisplayText <Zähler>
Nicht sehr komfortabel, aber funktioniert.
VG
Ich habe das Modul um eine Stoppuhr und eine statische Zeitanzeigemöglichkeit erweitert.
Beide Möglichkeiten werden im Model Digitaluhr angeboten.
Set
start
Startet die Stoppuhr.
Dieses Set-Kommando ist nur bei einer Uhr vom Modell "digital" mit gesetztem Attribut digitalDisplayPattern = stopwatch vorhanden.
stop
Stoppt die Stoppuhr.
Dieses Set-Kommando ist nur bei einer Uhr vom Modell "digital" mit gesetztem Attribut digitalDisplayPattern = stopwatch vorhanden.
static <hh> <mm> <ss>
Setzt eine statische Zeitanzeige mit hh-Stunden(24), mm-Minuten und ss-Sekunden.
Dieses Set-Kommando ist nur bei einer Uhr vom Modell "digital" mit gesetztem Attribut digitalDisplayPattern = staticwatch vorhanden.
Beispiel
set <name> static 8 15 3
Attribut
digitalDisplayPattern [staticwatch | stopwatch | text | watch]
Umschaltung der Digitalanzeige zwischen einer Uhr (default), einer Stoppuhr, statischen Zeitanzeige oder Textanzeige. Der anzuzeigende Text im Modus Textanzeige kann mit dem Attribut digitalDisplayText definiert werden.
staticwatch : statische Zeitanzeige
stopwatch : Stoppuhr
text : Anzeige eines definierbaren Textes
watch : Uhr
Version 0.5.0 liegt im contrib.
LG
Hallo Heiko,
Was zeigt die Uhr denn an, Systemzeit des Servers oder die Zeit des Browser Clients?
Gesendet von meinem S68Pro mit Tapatalk
Hi Frank,
die Zeit des Clients (Javascript).
Serverzeit wäre natürlich toll, aber da wüßte ich nicht wie es ginge.
Systemzeit des Servers ist ab V0.8.0 angezeigt.
LG,
Heiko
Ich habe noch ein "set ... reset" hinzugefügt.
Ein set .. stop lässt die gestoppte Zeit der Stoppuhr stehen, wohingegen ein "reset" den Zähler auf 00:00:00 setzt.
VG
Hallo Heiko,
jetzt bin ich rein zufällig über den Thread gestolpert. Toll. dass du so eine Uhr gebaut hast. Ich kann so was auch gut gebrauchen und wie das so ist kommen natürlich gleich die Wünsche und Begehrlichkeiten. ???
Meinst du, du könntest auch noch einen Countdown einbauen? Also eine umgekehrte Stoppuhr?
Gruß
Wolle
Zitatwie das so ist kommen natürlich gleich die Wünsche und Begehrlichkeiten.
Kenne ich :)
ZitatMeinst du, du könntest auch noch einen Countdown einbauen? Also eine umgekehrte Stoppuhr?
Weiß nicht, aber ich versuchs mal.
Es geht mit Sicherheit, aber ich bin bei Javascript ein absoluter Beginner. Anhand der Uhr wollte ich auch ein bisschen üben. ;) Naja, da habe ich wieder einen sinnvollen Grund es zu tun.
Grüße,
Heiko
Dann sag ich schon mal ganz dick DANKE für deine Bemühungen!
Hallo miteinander,
ich habe die Version 0.8.0 in mein contrib geladen.
Es hat sich allerhand getan.
* alle Uhren zeigen jetzt die Serverzeit des FHEM-Servers an (ab V0.9.0 per Attribut zw. Server/Clientzeit umschaltbar)
* es ist eine CountDown Watch hinzugefügt (digitalDisplayPattern = countdownwatch). Ist der Countdown abgelaufen, löst das Reading countDownDone einen Event aus.
* es gibt einen Setter "continue" für die beiden Stoppuhren
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Danach FHEM restarten.
Grüße,
Heiko
Ich habe dem Modul jetzt noch ein Attribut "timeSource" spendiert mit dem man zwischen Anzeige der lokalen Client (Browser) Zeit und der FHEM-Serverzeit umschalten kann.
Per default wird die Serverzeit verwendet.
Moin Heiko,
vielen Dank für die Umsetzung.
Ich habe mir gleich mal einen CountDown eingerichtet und einen Testcountdown mit 10 Sekunden eingestellt.
set DigiWatch countDownInit 00 00 10
Leider ist mir dann FHEM komplett abgeschmiert und ich konnte es nur durch einen Reboot des Pi wieder zum Leben erwecken.
Im Logfile habe ich folgendes gefunden:
Undefined subroutine &main::ReadingsBulkUpdateValue called at /opt/fhem/FHEM/60_Watches.pm line 151.
Gruß
Wolle
Ach sorry, da habe ich aus versehen eine falsche Subroutine genutzt die es nur bei mir gibt. :o
Korrigiere ich gleich und gebe Bescheid.
Bestätigung, hab das gleiche
Undefined subroutine &main::ReadingsBulkUpdateValue called at /opt/fhem/FHEM/60_Watches.pm line 151.
Rest schaut aber top aus!
Danke
So, bitte nochmal ziehen.
Kommt leider immer mal wieder im Laufe des Gefechts vor.
LG,
Heiko
Kein Ding. Funktioniert jetzt super.
Vielen herzlichen Dank.
Gruß
Wolle
noch nicht ganz.
bei stop eines laufenden Countdowns wird der nicht "resumed" sonder läuft im hintergrund weiter.
Bei continue steht der in hintergrund weitergezählte werd in der watch
Zitat
bei stop eines laufenden Countdowns wird der nicht "resumed" sonder läuft im hintergrund weiter.
Bei continue steht der in hintergrund weitergezählte werd in der watch
Ja, das war Absicht. Steht für "continue" auch so in der Hilfe.
oh, ok rtfm,
dann hätt ich einen change request. :-)
neues set-command mit "resume"
machbar?
Greets
Zitatneues set-command mit "resume"
ich schau mal ... :)
Moin,
habe es mir jetzt auch mal installiert. Läuft super.
Kleine Kosmetik in der Hilfe:
countDownInit <hh> <mm> <ss>
Setzt die Sterzeit einer
müsste wohl Startzeit heißen.
@knopf_piano
Als workaround countDownInit einfach auf 0 0 0 setzen.
LG
Andreas
Ich habe noch folgende Set-Funktionalität für die beiden Stoppuhrvarianten eingebaut und etwas Bugfixing betrieben:
* alarmHMS <hh> <mm> <ss>
Setzt die Alarmzeit im Format hh-Stunden(24), mm-Minuten und ss-Sekunden.
Erreicht die Zeit den definierten Wert, wird ein Event des Readings "alarmed" erstellt.
Die Stoppuhr hält an diesem Wert an.
Wird eine CountDown-Stoppuhr mit "coninue" fortgesetzt, erfolgt ein nochmaliger alarmed-Event beim Erreichen der Zeit 00:00:00.
(default: 0 0 0)
Dieses Set-Kommando ist nur bei einer Uhr vom Modell "digital" mit gesetztem Attribut digitalDisplayPattern = stopwatch | countdownwatch vorhanden.
Beispiel
set <name> alarmHMS 0 30 10
Für countdownwatch gibt es auch das "reset" Kommando.
Grüße,
Heiko
Hallo Uhrenfreunde,
für "stopwatch" ist nun ein resume Setter vorhanden. Dafür habe ich "continue" entfernt.
Es verträgt sich nicht wenn man z.B. resume und danach vllt. ein continue verwendet. Aber ich glaube die Verwendung von resume ist generell sinnvoller für eine Stoppuhr.
Für die Countdown Watch muss ich es noch implementieren, ist noch unverändert zur Zeit.
Bei allen Stoppuhren gibt es nun auch ein "alarmHMSdel" um eine gesetzte Alarmzeit zu löschen.
Kleiner Nachtrag: alarmHMS habe ich zu "alarmHMSset" umbenannt. Gibt nun damit alarmHMSset und alarmHMSdel ... passt besser zusammen.
Grüße,
Heiko
resume ist nun auch für countdownwatch verfügbar. Den Setter "continue" habe ich komplett entfernt.
VG,
Heiko
Frage?
bei mir zeigt die VERSION immer noch--> VERSION 0.9.0
Internals:
DEF Digital
FUUID 5eac8580-f33f-8631-d9bc-5bb966963385c533
MODEL Digital
NAME Uhr
NR 112
STATE initialized
TYPE Watches
VERSION 0.9.0
.attraggr:
.attrminint:
READINGS:
2020-05-03 13:55:32 state initialized
Attributes:
group Uhr
hideDisplayName 1
room Testroom,test
sollte aber 13 sein
Auszug aus der 60_Watches
# Versions History intern
my %Watches_vNotesIntern = (
"0.13.0" => "03.05.2020 set resume for countdownwatch, set 'continue' removed ",
"0.12.0" => "03.05.2020 set resume for stopwatch, new 'alarmHMSdel' command for stop watches, alarmHMS renamed to 'alarmHMSdelset' ",
"0.11.0" => "02.05.2020 alarm event stabilized, reset command for 'countdownwatch', event alarmed contains alarm time ",
"0.10.0" => "02.05.2020 renamed 'countDownDone' to 'alarmed', bug fix ",
"0.9.0" => "02.05.2020 new attribute 'timeSource' for selection of client/server time ",
und b.
Ich verwende F18 style
und da muss man explizit z.B.
attr Uhr group Uhr
um es per dragging positionieren zu können.
nur als Info
Danke :)
Zitat
Frage?
bei mir zeigt die VERSION immer noch--> VERSION 0.9.0
Ja, lag an der Sortierroutine noch aus 2018.
Habe jetzt gesamte Gerüst des Moduls auf aktuellen Stand gebracht inklusive Umstellung auf Packages und Support für Meta.pm, d.h. für den FHEM Installer von Loredo.
Liegt wieder im contrib.
Bezüglich f18 ist es wohl allgemein so, dass ein Device einer Gruppe zugeordnet sein muss um es per Drag positionieren zu können ?
Habe mir zum Test auch gerade eine solche Instanz angelegt. Verwende sonst nur default Style zur Entwicklung und für die produktiven Wandtablets den dark-Style mit Dashboard.
LG,
Heiko
fein isses,
danke!
Zitatfein isses,
danke!
:D
Mal eine allgemeine Frage...
Als ich das Modul vor zwei Jahren mal für mich gebastelt hatte, wollte ich einfach nur auf den Wandtabletts eine Uhr im FHEM Dashboard angezeigt haben.
Welche Use cases seht ihr denn bei euch für das Modul ?
Grüße,
Heiko
ZitatBezüglich f18 ist es wohl allgemein so, dass ein Device einer Gruppe zugeordnet sein muss um es per Drag positionieren zu können ?
Normalerweise gruppiert Fhemweb auch ohne F18, wenn keine group angegeben ist
nach Modulnamen --> also hier Watches
Bei F18 wird kann man, wenn man dragging akitiv schaltet die Gruppen frei positionieren auf dem Bildschirm.
Ich wollte nur Info geben, ob das jetzt ein Bug Ist kann ich nicht beantworten.
Ich habe endlich wieder eine Uhr , nochmals danke
Mit F18 ging die "alte" Bahnhofsuhr, statt Fhemlogo nicht mehr!
deswegen Freude bei mir über das Modul ;D
Moin
ich nutze es zum Einen auch als Uhr und den Countdown als Restlaufanzeige u.a. für die Waschmaschine.
Wäre es eigentlich sehr schwierig, statt der 7 die 16-Segmentanzeige zu implementieren? Dann könnte man den Textmodus stärker nutzen. Nur ne Frage, kein Wunsch (oder doch ::) ).
LG
Andreas
ZitatWäre es eigentlich sehr schwierig, statt der 7 die 16-Segmentanzeige zu implementieren?
Für jemanden der sich mit Javascript auskennt wäre es vermutlich kein Hexenwerk. Ich bin da noch nicht so firm ... aber arbeite dran. ;)
Ich behalte es im Hinterkopf. Vllt. gelingt es mir wenn ich etwas tiefer eingedrungen bin.
Wäre bestimmt eine feine Sache...
LG,
Heiko
ZitatWäre es eigentlich sehr schwierig, statt der 7 die 16-Segmentanzeige zu implementieren?
Ich habe die wichtige Stelle bereits entdeckt, denke das kriege ich hin.
Ich habe eine neue Version in mein contrib geladen die eine Sechzehnsegmentanzeige realisiert und in diesem Zusammenhang noch einiges mehr an Einstellungsmöglichkeiten bei Digitalanzeigen bietet.
Auszug Hilfe was ergänzt ist:
digitalDigitAngle
Stellt den Neigungswinkel der dargestellten Zeichen ein.
(default: 9)
digitalDigitDistance
Stellt den Zeichenabstand ein.
(default: 2)
digitalDigitHeight
Stellt die Zeichenhöhe ein.
(default: 20)
digitalDigitWidth
Stellt die Zeichenbreite ein.
(default: 12)
digitalSegmentDistance
Legt den Abstand zwischen den Segmenten fest.
(default: 0.5)
digitalSegmentType
Schaltet die Segmentanzahl der Digitalanzeige um.
(default: 7)
digitalSegmentWidth
Verändert die Breite der einzelnen Segmente.
(default: 1.5)
Bei Textanzeige sollte man auf jeden Fall auf sechzehn Segmente umschalten. Dann kann man auch einen solchen Text wie im Anhang darstellen. Den default habe ich bei 7 gelassen da ich finde, dass die Uhrdarstellung (was nach dem Define der Standard ist) so besser aussieht.
Bei Erreichen einer eingestellten Alarmzeit stoppt die Digitaluhr nicht mehr automatisch. Das kann man mit einem Notify als Reaktion auf den erstellten Alarmevent selbst machen wenn man möchte.
Hoffe es gefällt euch :)
Grüße,
Heiko
Moin,
Super. Danke für die schnelle Umsetzung.
LG
Andreas
Moin,
leider kommt jetzt nach Ablaufen des Countdowns kein Stop-Event mehr, nur noch beim Stoppen von Hand.
LG
Andreas
Hallo Andreas,
zieh dir die Version nochmal, ich hatte inzwischen noch etwas weiter gemacht.
Leere auch mal den Browser Cache.
Ansonsten sollte es im Eventmonitor so aussehen:
2020-05-04 14:17:44.267 Watches DigiText starttime: 1588594664235
2020-05-04 14:17:44.267 Watches DigiText started
2020-05-04 14:17:53.347 Watches DigiText alarmed: 00:00:05
2020-05-04 14:17:53.347 Watches DigiText stopped
2020-05-04 14:18:08.295 Watches DigiText resumed
2020-05-04 14:18:14.338 Watches DigiText alarmed: 00:00:00
2020-05-04 14:18:14.357 Watches DigiText stopped
Das Beispiel zählt ab Start runter, alermiert bei 5 Sekunden Restzeit, wird durch notify gestoppt, dann mit Hand resumed und stoppt automatisch bei 0 mit stopped-Event.
LG
ZitatMal eine allgemeine Frage...
Als ich das Modul vor zwei Jahren mal für mich gebastelt hatte, wollte ich einfach nur auf den Wandtabletts eine Uhr im FHEM Dashboard angezeigt haben.
Ich habe schon lange so einen praktischen CountDown Timer vermisst, der mir auch schön die noch verbleibende Restzeit anzeigt. Aber auch für die normalen Uhren finde ich ein Anwendungseckchen ;-)
Ich könnte mir schon vorstellen, dass da noch ein paar mehr Leute "Bedarf" hätten, wenn das Modul bekannter wäre.
Vielleicht solltest du über ein offizielles Einchecken nachdenken?
Auf jeden Fall vielen Dank für das Modul !!!
Gruß
Wolle
ZitatVielleicht solltest du über ein offizielles Einchecken nachdenken?
Ja, ich denke darüber nach. Ich schaue in der Statistik nach wieviel User das Modul nutzen. Zur Zeit sind es 15, meist ist die Dunkelziffer etwas höher.
Ich möchte einfach nur sicher sein keine groben Schnitzer mehr eingebaut zu haben und wenn alles soweit rund läuft mache ich das sicherlich auch. Deswegen sind die Rückmeldungen der Anwender auch so wichtig.
Grüße,
Heiko
Moin Heiko,
habe mir jetzt noch mal die aktuelle Version von 15:48 Uhr gezogen.
So sieht es bei mir im Eventmonitor aus, wenn ich per notify stoppe:
2020-05-04 17:47:49 Watches Countdown alarmed: 0
2020-05-04 17:47:49 Watches Countdown starttime: 1588607269068
2020-05-04 17:47:49 Watches Countdown started
2020-05-04 17:48:11 Watches Countdown alarmed: 00:00:00
2020-05-04 17:48:11 Watches Countdown stopped
2020-05-04 17:48:12 Watches Countdown alarmed: 00:00:00
Und so, wenn ich erst per Hand stoppe:
2020-05-04 17:50:37 Watches Countdown alarmed: 0
2020-05-04 17:50:37 Watches Countdown starttime: 1588607437959
2020-05-04 17:50:37 Watches Countdown started
2020-05-04 17:50:59 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:00 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:01 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:03 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:04 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:05 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:05 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:06 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:06 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:06 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:06 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:07 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:07 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:07 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:07 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:07 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:08 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:08 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:08 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:08 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:08 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:09 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:09 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:09 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:09 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:10 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:10 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:10 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:10 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:10 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:11 Watches Countdown alarmed: 00:00:00
2020-05-04 17:51:11 Watches Countdown stopped
2020-05-04 17:51:11 Watches Countdown alarmed: 00:00:00
LG
Andreas
Hi Andreas,
habe 17:40 das letzte mal upgedated. Zieh nochmal bitte.
Benutzt du Client oder Serverzeit ?
Vergiss es ... bei mir kommt das Gleiche wenn ich keinen Alarmpunkt mit alarmHMSset gesetzt habe.
Ich ergründe das ...
Vorher hatte es funktioniert. Zumindest, bevor Du die Segmentauswahl hinzugefügt hattest. Kann leider nicht sagen, ob direkt danach nicht mehr, oder erst später.
Im Contrib finde ich übrigens nur die Version von 15:48 Uhr, auch nach Browserrefresh mit F5.
LG
Andreas
So, jetzt nochmal bitte Andreas.
Wegen der Zeit nicht wundern. SVN hat UTC, d.h. mein eben gemachter Update dürfte mit ca. 16:25 drin stehen.
Moin Heiko,
jetzt geht es wieder.
Wäre es eigentlich möglich, im Textmodus den Text mit set zu setzen statt als Atribut? Dann hätte man bei wechselnden Texten nicht immer das blöde Fragezeichen. Geht aber natürlich auch so.
LG
Andreas
ZitatWäre es eigentlich möglich, im Textmodus den Text mit set zu setzen statt als Atribut?
Na klar, das baue ich um. Ist ohnehin besser wenn man Text z.B. mit einem Notify o.ä. wechselnd einblenden will.
Der Text kann nun mit
set <name> displayTextSet <Text>
gesetzt und mit dem Setter "displayTextDel" gelöscht werden.
Das Attribut "digitalDisplayText" ist entfernt.
LG,
Heiko
Moin,
Du bist ja schneller als die Polizei erlaubt. Wenn jetzt noch ( ganz vorsichtig angefragt) statt Play vielleicht Text oder ähnlich neutrales nach dem Löschen erscheinen würde, fände ich es perfekt. K.A., wie Du oder die anderen Nutzer darüber denken.
LG
Andreas
"Text" geht zwar nicht (default 7-Segmentanzeige), aber ich habe den Standardtext einfach auf "----" gesetzt.
Denke das ist neutral genug. :D
Contrib ist upgedated.
LG,
Heiko
Für den Textmodus der Digitalanzeige habe ich noch einen Laufschriftmodus implementiert und auch die Möglichkeit die angezeigte Anzahl der Textstellen per Attribut festzulegen.
Dadurch bleibt die Größe der Textanzeige erhalten wenn man wechselnde Texte zur Anzeige bringt. Der Text muß natürlich reinpassen ;) oder aber man schaltet auf Laufschrift um. :)
* digitalTextDigitNumber <Anzahl>
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).
(default: 0)
* digitalTextTicker
Schaltet den Laufschriftmodus einer Textanzeige (digitalDisplayPattern = text) ein bzw. aus.
(default: 0)
Liegt als V0.17.0 im contrib.
Super, als ob Du Gedanken lesen könntest. Hatte mich nur nicht getraut, dass auch noch vorzuschlagen.
LG
Andreas
Ja, manchmal habe ich solche Intuitionen :D
Was ich noch vorhabe zu implementieren ist:
- Support für mehrere Alarmzeiten, vllt. 3 insgesamt
- Alarmeventerstellung auch für Analoguhren
Das erstmal soweit. Dann muß ich mich auch mal wieder um meine anderen Module kümmern. ;)
LG,
Heiko
Dann hätte ich noch eine Anregung, wenn es nicht zu umständlich ist. Eventuell den Ticker auch per set setzen. Jetzt läuft die Schrift ja auch, wenn der Text passen würde. Ansonsten könnte man dann selber beim Setzen des Textes (z.B. per DOIF) sagen, wenn der Text mehr Zeichen enthält als in DigitNumber eingestellt, dann schalte Laufschrift ein und zeig den Text an, ansonsten Laufschrift aus.
LG
Andreas
Das ist eine sehr gute Idee Andreas.
Ich muss mir nur durch den Kopf gehen lassen ob ich dann generell auf das Attr verzichte oder quasi mit einem Setter überschreibbar mache.
Das denke ich mir noch aus und melde mich wieder mit einer Version ...
Moin,
das hat nun etwas länger gedauert, aber die neue Version ist nun im contrib.
Ich hatte noch ein Problem festgestellt, dass der gesetzte Text erst mit einem Browser Refresh aktiviert wurde. Das musste ich zunächst lösen. Jetzt kann der Text und der Laufschriftmodus mit einem Setter (auch über ein at, notify, what else..) ein- und ausgeschaltet werden. Das vorherige Attribut 'digitalTextTicker' habe ich entfernt.
* textTicker on | off
Schaltet den Laufschriftmodus einer Textanzeige (siehe Attribut digitalDisplayPattern) ein bzw. aus.
(default: off)
In dem Zusammenhang habe ich die default Schrift "----" nun komplett gelöscht. Ist also per default keine Anzeige vorhanden.
Es gab bei Umschalten unschöne Effekte, dass kurzzeitig das Pattern "----" aufblitzte ... hat mich gestört. ;)
LG,
Heiko
Kleiner Tipp ...
Wenn ihr euch eine Auswahlliste vorgefertigter Texte für "displayTextSet" hinterlegen wollt, geht das mit widgetoverride folgendermaßen:
attr Digitalanzeige widgetOverride displayTextSet:Ein#Test,Noch#ein#Test,Und#noch#einer,Und#ein#letzter#Test#in#der#Liste
Die Auswahl steht dann als Drop-Down-Liste im Setter displayTextSet zur Verfügung.
Grüße,
Heiko
Mit der Version 0.20.0 im contrib kann nun auch eine Alarmzeit für die Analoguhren (Station, Modern) gesetzt werden.
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
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
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
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
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 :)
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
Das Modul habe ich nun ins FHEM Repo eingecheckt und wird ab morgen früh mit dem normalen Update ausgeliefert.
VG
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 (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
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
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
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. ;)
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
Vielleicht kann man das ja durch ein Attribut wählbar machen?
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
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
Hallo zusammen,
in meinem contrib befindet sich vor die neue Version.
Möglich ist jetzt:
set <name> countDownInit <hh> <mm> <ss> | <Sekunden>
Setzt die Startzeit einer CountDown-Stoppuhr. Das Format kann sein <hh> Stunden, <mm> Minuten und <ss> Sekunden oder alternativ nur eine Angabe in Sekunden.
Dieses Set-Kommando ist nur bei einer digitalen CountDown-Stoppuhr vorhanden.
Beispiel
set <name> countDownInit 0 30 10
set <name> countDownInit 3600
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Danach FHEM restarten.
Ich checke die Version heute Abend noch ein und ist dann morgen früh im Update verfügbar.
@Erich, du kannst es ja schonmal ausprobieren. Wie gesagt, DOIF kenne ich nicht weil noch nie benötigt. Aber in einer Perl-Routine würde man es z.B. so machen:
{
my $val = AttrNum ("myDOIF", "myWatchInitValueInSeconds", "0");
fhem("set <Watch-Device> countDownInit $val");
}
Viel Spaß beim testen.
Grüße,
Heiko
Moin,
falls er wirklich das wait haben möchte, braucht er AttrNum.
LG
Andreas
So wie jetzt im obigen Post ?
Müsste klappen. Sonst muss @Erich Fromm einen neuen Thread aufmachen.
Moin,
neue Version getestet. Funktioniert.
LG
Andreas
Zitat von: DS_Starter am 26 Mai 2020, 18:41:46
@Erich, du kannst es ja schonmal ausprobieren. Wie gesagt, DOIF kenne ich nicht weil noch nie benötigt. Aber in einer Perl-Routine würde man es z.B. so machen:
{
my $val = AttrNum ("myDOIF", "myWatchInitValueInSeconds", "0");
fhem("set <Watch-Device> countDownInit $val");
}
Dankeschön, Heiko.
... ich stehe hier immer noch auf dem Schlauch. Ignorieren wir doch mal das DOIF. Wie würde es bei einem notify funktionieren?
define myWatchNotify notify <SuchmusterIrgendwas> <Anweisung>
Wie wäre <Anweisung> zu formulieren, wenn mit Anweisung ein "set myWatch countDownInit <Variable>" erfolgen soll?
Gruß, Erich
Hallo Erich,
im Prinzip so wie ich es oben geschrieben habe. Hier als Beispiel mit 900 Sekunden:
define myWatchNotify notify <SuchmusterIrgendwas> {
my $val = 900;
fhem("set myWatch countDownInit $val");
}
Die Variable $val kannst du natürlich aus einem ReadingsVal, AttrVal etc. ableiten, sofern das Ergebnis eine ganze Zahl ist.
Grüße,
Heiko
Hallo,
eine weitere tolle Funktion.
Ich würde die Funktion nutzen um die Zeit mitzustoppen, verschiedene Geräte Laufzeiten zu überwachen.
Wie kann man bei einer Stopuhr auf die erreichte Zeit zugreifen, ein Reading konnte ich noch nicht finden.
In einem DOIF möchte ich die erreichte Zeit, auch nach mehreren Stopps auswerten.
Gruß Osid-timo
ZitatWie kann man bei einer Stopuhr auf die erreichte Zeit zugreifen, ein Reading konnte ich noch nicht finden.
Die Uhr(en) sind JavaScript-basierend und laufen im Browser ab wobei es natürlich Kommunikation mit dem FHEM-Server für bestimmte Funktionen gibt.
Ich könnte die erreichte Stoppzeit in ein Reading schreiben wenn die Stoppuhr angehalten wird. Der Wert wäre aber kumulierend, würde also nach einem resume und erneuten Stop die insgesamt gestoppte Zeit enthalten.
Wenn es das ist was du bräuchtest, könnte ich es sicherlich einbauen.
Habe ich dich richtig verstanden ?
Grüße,
Heiko
Hallo Heiko,
Vollkommen richtig verstanden, es ist genau das was ich suche
Gruß Oswald
Hallo Oswald,
alles klar, ich melde mich mit einer Testversion. Bin erstmal mit etwas anderem beschäftigt, aber ich mache das zeitnah.
Hallo Oswald,
ich habe deine Anregung umgesetzt. In der Stopwatch gibt es nun das Readin stoptime.
Die neue Version ist morgen früh im Regelupdate enthalten,
Grüße,
Heiko
Hallo Heiko,
danke für die Funktionsintegration
ein kleines Thema gibt es noch: nach einem Reset ist das Reading stoptime weg und nicht 00:00:00.
Damit ist eine Abfrage in einem DOIF nicht möglich
DOELSEIF (([PumpeStoppUhr1:stoptime] lt "00:03:00") or ["$SELF:P_mybutton: on"] )
(( IF ([PumpeStoppUhr1:stoptime] eq "00:00:00") (set PumpeStoppUhr1 start) ELSE (set PumpeStoppUhr1 resume) ##gewünschte Laufzeit noch nicht abgelaufen
ist diese Änderung noch möglich?
Gruß Oswald
Zitatist diese Änderung noch möglich?
Kann ich machen, dauert aber etwas weil ich momentan keine Zeit habe.
Kannst du inzwischen nicht abfragen auf
(( IF (![PumpeStoppUhr1:stoptime])....
Das ist nur sinngemäß, ich kenne und nutze DOIF nicht. Deswegen wird die Syntax vermutlich falsch sein.
LG,
Heiko
Moin,
ich habe hier https://forum.fhem.de/index.php?topic=111866
in den Codeschnipseln mal einen Thread aufgemacht, wo man Anwendungsbeispiele für die countdownwatch einstellen kann.
Das erste Beispiel für eine mögliche Anzeige des DOIF-Wait-Timers ist auch schon eingestellt.
LG
Andreas
Hallo Heiko,
Danke für den Tipp
ich löse das jetzt mit dem State des Moduls
DOELSEIF (([ElEnergie:EasymeterQ3C_power,21] < [$SELF:P_P_on,-10] and [PumpeStoppUhr1:stoptime,00:00:00] lt "00:03:00") or ["$SELF:P_mybutton: on"] )
(( IF ("[PumpeStoppUhr1:&STATE]" eq "initialized") (set PumpeStoppUhr1 start) ELSE (IF ("[PumpeStoppUhr1:&STATE]" eq "stopped") (set PumpeStoppUhr1 resume))) ##gewünschte Laufzeit noch nicht abgelaufen
Gruß Oswald
Hallo Oswald, @all,
wird das reset auf 00:00:00 noch benötigt ?
Würde es nicht unbedingt benötigt, würde ich das Verhalten von reset so belassen wie es ist.
LG,
Heiko
Moin,
von mir aus kann es so bleiben wie es ist.
LG
Andreas
Gibt es die Möglichkeit, dass die Readings die Sekunden mitzählen? Würde das gerne in FTUI nutzen.
ZitatGibt es die Möglichkeit, dass die Readings die Sekunden mitzählen?
Technisch wäre das sicherlich möglich. Allerdings läuft die Uhr als JavaScript Anwendung im Client (Browser). Die Readings müssten jedoch jede Sekunde auf den FHEM Server "runter" geschrieben werden. Ich befürchte Performanceprobleme bzw. Ungenauigkeiten durch die nötige asynchrone Arbeitsweise.
Nach meinem bisherigen Wissensstand würde ich die Frage eher verneinen, es sei denn ein JavaScript Experte zeigt mir einen gangbaren Weg.
Vielleicht gibt es neue Erkenntnisse wenn du dein beabsichtigtes Szenario noch genauer beschreibst.
Ich möchte die Zeit wählen, wie lange mein Fenster offen ist.
Mit dem Modul HourCounter bekomme ich diesen Wert, allerdings nur im Interval von 60 Sekunden.
Mein Wunsch wäre dies "live" sehen zu können, optimal auch über Tablet UI.
Ich habe in meinem contrib eine Testversion liegen.
Für das MODEL DIGITAL und stopwatch (Attr digitalDisplayPattern = stopwatch) wird ein Reading currtime erstellt.
Probiere mal bitte ob es das ist was dir vorschwebt und wie es sich in deinem System verhält.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Grüße,
Heiko
Zitat von: DS_Starter am 31 Juli 2020, 10:57:01
Ich habe in meinem contrib eine Testversion liegen.
Für das MODEL DIGITAL und stopwatch (Attr digitalDisplayPattern = stopwatch) wird ein Reading currtime erstellt.
Probiere mal bitte ob es das ist was dir vorschwebt und wie es sich in deinem System verhält.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Grüße,
Heiko
Sieht super aus.
Ich habe mal den Alarm auf 15 Sekunden gestellt.
set Uhr Alarm Set 00 00 15
Jetzt fängt er immer ab 15 an zu zählen. Wie kann ich das wieder auf 0 stellen?
Kann der aktuelle Zeitpunkt in einem Reading gezeigt werden, also den alarmSet?
Mit einem Stop wird das Reading stoptime geschrieben. Diese ist nun 1 Sekunde unterschiedlich zu currtime
Internals:
DEF Digital
FUUID 5f21ef78-f33f-1e7a-44a0-a7d6db1c376bed2a
FVERSION 60_Watches.pm:v0.26.0-s22109/2020-06-03
MODEL DIGITAL
NAME Uhr
NR 65
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.26.0
READINGS:
2020-07-31 11:21:47 alarmTime 00:00:00
2020-07-31 11:27:56 alarmed 0
2020-07-31 11:31:16 currtime 00:03:34
2020-07-31 11:27:56 starttime 1596187676257
2020-07-31 11:31:16 state stopped
2020-07-31 11:31:17 stoptime 00:03:35
Attributes:
DbLogExclude .*
digitalDisplayPattern stopwatch
digitalSegmentType 16
webCmd start:stop
Edit: Ist es über webCmd möglich start / stop zu setzen?
ZitatIch habe mal den Alarm auf 15 Sekunden gestellt.
Code: [Auswählen]
set Uhr Alarm Set 00 00 15
Jetzt fängt er immer ab 15 an zu zählen. Wie kann ich das wieder auf 0 stellen?
Kann ich bei mir nicht nachvollziehen. Die Zeitmessung fängt bei mir mit
set <> start immer bei 0 an. Aber dein Befehl ist falsch, heißt
set <> alarmSet 00 00 15
ZitatKann der aktuelle Zeitpunkt in einem Reading gezeigt werden, also den alarmSet?
Ja, wird im Reading
alarmTime angezeigt.
Internals:
DEF Digital
FUUID 5ea8924f-f33f-b178-81bc-cfe34d8b125f4632
FVERSION 60_Watches.pm:v1.1.1-s22109/2020-06-03
MODEL DIGITAL
NAME StopWatch
NR 640
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.25.0
Helper:
DBLOG:
alarmTime:
LogDB1:
TIME 1596193130.55094
VALUE 00:00:15
alarmed:
LogDB1:
TIME 1596193805.95194
VALUE 0
currtime:
LogDB1:
TIME 1596193818.57641
VALUE 00:00:12
starttime:
LogDB1:
TIME 1596193805.95194
VALUE 1596193805951
state:
LogDB1:
TIME 1596193818.62938
VALUE stopped
stoptime:
LogDB1:
TIME 1596193819.2278
VALUE 00:00:12
OLDREADINGS:
READINGS:
2020-07-31 12:58:50 alarmTime 00:00:15
2020-07-31 13:10:05 alarmed 0
2020-07-31 13:10:18 currtime 00:00:12
2020-07-31 13:10:05 starttime 1596193805951
2020-07-31 13:10:18 state stopped
2020-07-31 13:10:19 stoptime 00:00:12
Attributes:
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
disable 0
htmlattr width="150" height="100"
room Watches
ZitatMit einem Stop wird das Reading stoptime geschrieben. Diese ist nun 1 Sekunde unterschiedlich zu currtime
Ja, das kann passieren und waren meine Befürchtungen von denen ich weiter oben schon schrieb -> Ungenauigleiten und evtl. Performanceprobleme.
Letzteres scheint nicht aufzutreten und mit ersterem muß man dann wohl leben. ;)
Auf meiner schnellen VM gibt es allerdings keine Abweichung zwischen diesen Readings. (siehe oben)
ZitatEdit: Ist es über webCmd möglich start / stop zu setzen?
Nein, momentan nicht. Evtl. zu einem späteren Zeitpunkt zu/abschaltbar.
Zitat von: DS_Starter am 31 Juli 2020, 13:16:30
Kann ich bei mir nicht nachvollziehen. Die Zeitmessung fängt bei mir mit set <> start immer bei 0 an. Aber dein Befehl ist falsch, heißt
set <> alarmSet 00 00 15
Habe mich verschieben, habe den Button verwendet. Nach einem reset und alarmDel sind alle Readings weg. Nach einem Start danach ist der Beginn nach wie vor bei 15. Selbst wenn ich ein neues Device anlege. Gibt es sowas wie einen Cache?
Zitat von: DS_Starter am 31 Juli 2020, 13:16:30
Ja, wird im Reading alarmTime angezeigt.
Internals:
DEF Digital
FUUID 5ea8924f-f33f-b178-81bc-cfe34d8b125f4632
FVERSION 60_Watches.pm:v1.1.1-s22109/2020-06-03
MODEL DIGITAL
NAME StopWatch
NR 640
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.25.0
Helper:
DBLOG:
alarmTime:
LogDB1:
TIME 1596193130.55094
VALUE 00:00:15
alarmed:
LogDB1:
TIME 1596193805.95194
VALUE 0
currtime:
LogDB1:
TIME 1596193818.57641
VALUE 00:00:12
starttime:
LogDB1:
TIME 1596193805.95194
VALUE 1596193805951
state:
LogDB1:
TIME 1596193818.62938
VALUE stopped
stoptime:
LogDB1:
TIME 1596193819.2278
VALUE 00:00:12
OLDREADINGS:
READINGS:
2020-07-31 12:58:50 alarmTime 00:00:15
2020-07-31 13:10:05 alarmed 0
2020-07-31 13:10:18 currtime 00:00:12
2020-07-31 13:10:05 starttime 1596193805951
2020-07-31 13:10:18 state stopped
2020-07-31 13:10:19 stoptime 00:00:12
Attributes:
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
disable 0
htmlattr width="150" height="100"
room Watches
Ich habe das Reading bei mir nicht.
Internals:
DEF Digital
FUUID 5f21ef78-f33f-1e7a-44a0-a7d6db1c376bed2a
FVERSION 60_Watches.pm:v0.26.0-s22109/2020-06-03
MODEL DIGITAL
NAME Uhr
NR 65
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.26.0
OLDREADINGS:
READINGS:
2020-07-31 13:36:32 alarmed 0
2020-07-31 13:36:36 currtime 00:00:18
2020-07-31 13:36:32 starttime 1596195392204
2020-07-31 13:36:36 state stopped
2020-07-31 13:36:37 stoptime 00:00:19
Attributes:
DbLogExclude .*
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
htmlattr width="350" height="100"
Zitat von: DS_Starter am 31 Juli 2020, 13:16:30
Ja, das kann passieren und waren meine Befürchtungen von denen ich weiter oben schon schrieb -> Ungenauigleiten und evtl. Performanceprobleme.
Letzteres scheint nicht aufzutreten und mit ersterem muß man dann wohl leben. ;)
Auf meiner schnellen VM gibt es allerdings keine Abweichung zwischen diesen Readings. (siehe oben)
Nicht so schlimm. Immerhin es steht in einem Reading. Ich habe auch eine VM auf einem NUC. Sollte also nicht daran liegen.
Leere doch mal deinen Browsercache -> JavaScript !
In meinem contrib liegt nun eine ausgebaute Version. Alle Uhrendefinitionen können nun die angezeigte Zeit als Reading currtime schreiben.
Da ich keine Performanceprobleme erzeugen möchte, muss man diese Funktionalität mit der Attribut timeAsReading bewußt einschalten.
Edit: Ist eingecheckt und morgen im Update enthalten
Zitat von: DS_Starter am 31 Juli 2020, 13:49:10
Leere doch mal deinen Browsercache -> JavaScript !
Habe den Browesercache gelöscht, aber nach wie vor das Verhalten. Auch andere Browser haben das Problem, denke also nicht, dass es daran liegt.
Hmm, kann ich bei mir nach wie vor nicht nachvollziehen. Ein set <> start lässt die Stoppuhr immer von 00:00:00 beginnen, egal ob alarmTime mit set <> alarmSet gesetzt wurde oder nicht.
Ich benutze Firefax und Chrome. Auch Edge funktioniert tadellos.
Du hattest doch geschrieben, du hast das Reading alarmTime nicht !?
Ich habe mal nachgeschaut ... das Reading wird beim set Kommando alarmSet mit wenigen FHEM Standard Perl Befehlen gesetzt. Das hat noch nichts mit JavaScript zu tun.
Wenn das Reading nicht gesetzt wird müsste es Perl Fehlermeldungen im Log geben o.ä.
Dein FHEM ist aktuell ?
Zitat von: DS_Starter am 02 August 2020, 23:02:57
Du hattest doch geschrieben, du hast das Reading alarmTime nicht !?
Ich habe mal nachgeschaut ... das Reading wird beim set Kommando alarmSet mit wenigen FHEM Standard Perl Befehlen gesetzt. Das hat noch nichts mit JavaScript zu tun.
Wenn das Reading nicht gesetzt wird müsste es Perl Fehlermeldungen im Log geben o.ä.
Dein FHEM ist aktuell ?
Mittlerweile bekomme ich das Reading angezeigt.
Internals:
DEF Digital
FUUID 5f21ef78-f33f-1e7a-44a0-a7d6db1c376bed2a
FVERSION 60_Watches.pm:v0.26.0-s22507/2020-08-01
MODEL DIGITAL
NAME Uhr
NR 65
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.26.0
OLDREADINGS:
READINGS:
2020-08-03 01:48:19 alarmed 0
2020-08-03 01:48:38 currtime 00:02:22
2020-08-03 01:48:19 starttime 1596412099816
2020-08-03 01:48:32 state stopped
2020-08-03 01:48:48 stoptime 00:02:31
Attributes:
DbLogExclude .*
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
htmlattr width="350" height="100"
timeAsReading 1
verbose 5
FHEM ist aktuell.
Im Log steht nichts.
Also ich sehe bei dir immer noch kein Reading alarmTime. ;)
Vielleicht kann jemand anders deine Definition mal ausprobieren. Bei mir läuft sie einwandfrei und ich wüsste nicht wo ich ansetzen könnte. Habe bei mir auch mehr als eine Stoppuhr definiert. Gegenseitige Beeinflussung scheidet demnach auch aus.
LG
Zitat von: DS_Starter am 03 August 2020, 09:37:40
Also ich sehe bei dir immer noch kein Reading alarmTime. ;)
Vielleicht kann jemand anders deine Definition mal ausprobieren. Bei mir läuft sie einwandfrei und ich wüsste nicht wo ich ansetzen könnte. Habe bei mir auch mehr als eine Stoppuhr definiert. Gegenseitige Beeinflussung scheidet demnach auch aus.
LG
Falsche list, hier:
Internals:
DEF Digital
FUUID 5f21ef78-f33f-1e7a-44a0-a7d6db1c376bed2a
FVERSION 60_Watches.pm:v0.26.0-s22507/2020-08-01
MODEL DIGITAL
NAME Uhr
NR 65
STATE stopped
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.26.0
OLDREADINGS:
READINGS:
2020-08-03 09:57:45 alarmTime 00:01:24
2020-08-03 09:57:48 alarmed 0
2020-08-03 09:57:55 currtime 00:00:19
2020-08-03 09:57:48 starttime 1596441468350
2020-08-03 09:57:55 state stopped
2020-08-03 09:57:56 stoptime 00:00:20
Attributes:
DbLogExclude .*
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
htmlattr width="350" height="100"
timeAsReading 1
verbose 5
Jetzt beginnt er bei 13 Sekunden mit dem zählen.
Ich habe den RAW Code auf einem anderen Server importiert, und das gleiche Problem.
defmod Uhr Watches Digital
attr Uhr DbLogExclude .*
attr Uhr digitalColorBackground 1F1F1F
attr Uhr digitalColorDigits E95D0F
attr Uhr digitalDisplayPattern stopwatch
attr Uhr digitalSegmentType 7
attr Uhr digitalSegmentWidth 2.5
attr Uhr htmlattr width="350" height="100"
attr Uhr timeAsReading 1
attr Uhr verbose 5
Ich ahne etwas. Die Startzeit der Stoppwatch wird beim Start im Reading starttime gespeichert um daraus die abgelaufene Zeit zu ermitteln. Diese Zeit wird vom FHEM Server geliefert.
Wenn dein Client nicht zeitsynchronisiert ist, hast du vermutlich diese Diskrepanz. Vergleiche mal die Zeitsynchronisation von Server und Client.
Ich habe start und den date BEfehl auf dem Server fast gleichzeitig ausgeführt. Zeit sollte aber passen.
Internals:
DEF Digital
FUUID 5f27c473-f33f-50ef-a3b2-ebf1368742551569
FVERSION 60_Watches.pm:v0.26.0-s22507/2020-08-01
MODEL DIGITAL
NAME Uhr
NR 1025
STATE started
TYPE Watches
HELPER:
PACKAGE FHEM::Watches
VERSION 0.26.0
OLDREADINGS:
READINGS:
2020-08-04 00:52:03 alarmed 0
2020-08-04 00:52:16 currtime 00:00:12
2020-08-04 00:52:03 starttime 1596495123575
2020-08-04 00:52:03 state started
Attributes:
DbLogExclude .*
digitalColorBackground 1F1F1F
digitalColorDigits E95D0F
digitalDisplayPattern stopwatch
digitalSegmentType 7
digitalSegmentWidth 2.5
event-on-change-reading .*
htmlattr width="350" height="100"
timeAsReading 1
verbose 5
Di 4. Aug 00:52:04 CEST 2020
Das passt schon, aber das meinte ich nicht. Du müsstest die Ausgabe von date auf dem Server mit der Zeitangabe auf deinem Client (PC) vergleichen. Idealerweise solten sich beide regelmäßig mit einem Zeitdienst bzw. NTP-Server synchronisieren. Dann laufen die auch nicht auseinander.
Hallo zusammen,
ich habe der Stoppuhr und der Countdownwatch einen kleinen Satz Steuerbuttons spendiert. Damit kann man auf der Weboberfläche die grundlegendsten Funktionen start, stop, resume, reset ausführen.
Und noch zwei Attribute wenn man die Tasten nicht braucht oder deren Größe verändern möchte.
controlButtonSize
Ändert die Größe der Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.
hideButtons
Verbirgt die Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.
Liegt erstmal in meinem contrib zum manuellen Download.
Grüße,
Heiko
Zitat von: DS_Starter am 04 August 2020, 08:00:01
Das passt schon, aber das meinte ich nicht. Du müsstest die Ausgabe von date auf dem Server mit der Zeitangabe auf deinem Client (PC) vergleichen. Idealerweise solten sich beide regelmäßig mit einem Zeitdienst bzw. NTP-Server synchronisieren. Dann laufen die auch nicht auseinander.
Das war auch gleich. Ich habe den Timer auf einem anderen Client gestartet. Danach lauft es auf allen erstmal richtig.
Zitat von: DS_Starter am 10 August 2020, 22:56:58
Hallo zusammen,
ich habe der Stoppuhr und der Countdownwatch einen kleinen Satz Steuerbuttons spendiert. Damit kann man auf der Weboberfläche die grundlegendsten Funktionen start, stop, resume, reset ausführen.
Und noch zwei Attribute wenn man die Tasten nicht braucht oder deren Größe verändern möchte.
controlButtonSize
Ändert die Größe der Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.
hideButtons
Verbirgt die Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.
Liegt erstmal in meinem contrib zum manuellen Download.
Grüße,
Heiko
Sieht gut aus. Nur beim Start und Resume wird am Anfang ganz kurz eine andere Zeit angezeigt. Manchmal -50 / +50% / 1min. Kann aber nicht sagen was genau.
Zitat
Nur beim Start und Resume wird am Anfang ganz kurz eine andere Zeit angezeigt. Manchmal -50 / +50% / 1min. Kann aber nicht sagen was genau.
Das beobachte ich bei mir auch. Ist nur bei Betätigung über die Tasten so. Wird die Funktion über die normalen "set ... xxx" ausgeführt, gibt es diese Beobachtung nicht. Mal schauen ob ich das noch verbessern kann. Momentan ist mir der Zusammenhang noch unklar.
Ich denke ich habe diese zufälligen Zeitanzeige jetzt eliminiert.
Version liegt wieder im contrib zum Test.
LG
Die neue Version ist eingecheckt und morgen früh im Update enthalten.
Hallo Heiko,
ich wollte das Modul Watches als Countdown benutzen, erhalte aber, sobald ich hideButton=0 einstelle, einen Fehler (Bild1). Danach taucht noch ein weiterer Fehler auf. Aber ich nehme an das dies ein Folgefehler ist (Bild2).
defmod Schaltuhr Watches Digital
attr Schaltuhr DbLogExclude .*
attr Schaltuhr digitalDisplayPattern countdownwatch
attr Schaltuhr hideButtons 0
attr Schaltuhr room Test
attr Schaltuhr verbose 5
setstate Schaltuhr initialized
setstate Schaltuhr 2021-01-08 17:44:59 state initialized
Viele Grüße
Karlheinz
Hallo Karlheinz,
ich habe deine Watch Definition bei mir mal nachgestellt.
Habe bei mir keinen Fehler feststellen können. Erst dachte ich dass bei dir sscam_tooltip.js fehlt aber das war natürlich Unfug. ;)
Ich habe es mit dem default Style von FHEMWEB gestest. Soweit ich es sehe, verwendest du es auch.
Hast du den Browsercache schonmal gelöscht ?
Moin Karlheinz,
unter welchem BS rufst du den Browser auf? Ich frage nur, weil ich unter Android auch einen Javascript-Fehler bekomme, wenn ich in der DEF-Box etwas ändern will. Kann aber natürlich auch sein, dass es damit gar nichts zu tun hat.
LG
Andreas
Hi Andreas,
habe es unter Android auch gerade getestet (Firefox) .... kein Fehler.
LG,
Heiko
Hallo Heiko,
habs mal mit dem Internet Browser und auch mit Safari probiert. Gleiches Ergebnis. Ein Unterschied zum Aufruf von FHEM gibt es bei mir. Ich unterscheide Prod und Testsystem:
http://xxx.xxx.x.xx:8083/fhem_live bzw. http://xxx.xxx.x.xx:8083/fhem_test
@Andreas
FHEM läuft auf zwei Raspis:
Prod: Linux raspberrypi3 4.19.66-v7+ und Test: Linux raspi3bplus 5.4.72-v7+
Viele Grüße
Karlheinz
Das könnte ein Grund sein. Du hast dann sicherlich unter ./opt eine unterschiedliche Verzeichnisstruktur.
Kannst du die kurz skizzieren wenn es so ist ?
Die Verzeicnisstruktur habe ich eigentlich nicht verändert. Auf die schnelle z.B. /opt/fhem/www/pgm2
Kommen momentan allerdings nicht dazu mehr Infos zu liefern. Das wird heute erst spät möglich sein.
/opt/fhem/www/pgm2 passt.
Ein List vom global device wäre auch noch hilfreich.
Hier mein global Device:
attr global userattr DbLogExclude DbLogInclude DbLogValueFn:textField-long alexaName alexaProactiveEvents:1,0 alexaRoom attributesExclude cmdIcon devStateIcon devStateIcon:textField-long devStateStyle fp_Grundriss genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,scene homebridgeMapping:textField-long icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue sortby webCmd webCmdLabel:textField-long widgetOverride
attr global DbLogExclude .*
attr global altitude xxx
attr global autoload_undefined_devices 1
attr global autosave 0
attr global language DE
attr global latitude xx.xxxxxx
attr global logfile /opt/fhem/log/fhem-%Y-%m.log
attr global longitude xx.xxxxxx
attr global modpath .
attr global motd none
attr global room System
attr global showInternalValues 1
attr global statefile log/fhem.save
attr global updateInBackground 1
attr global userReadings FeatureLevel { $featurelevel }
attr global verbose 3
setstate global no definition
Passt auch ... modpath. Hatte aber inzwischen nachgeschaut dass ich modpath im Modul berücksichtigt habe. Isst so und passt soweit auch. Hab momentan keine Idee.
Ist es auch bei anderen MODELS so, also stopwatch etc. ?
Bei stopwatch kommt der gleiche Fehler.
Guten Morgen,
ich habe zwar nicht herausgefunden wodurch bei dir/(euch) der JS-Fehler verursacht wird, aber habe die relevante Stelle im Modul anders gestaltet und hoffe damit das Problem beseitigt zu haben.
Bei mir hat es ja auch vor der Anpassung funktioniert.
Liegt zum Test in meinem contrib.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/60_Watches.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/60_Watches.pm"
Grüße,
Heiko
Mal als Rückmeldung von mir:
Ich habe deine Contribänderung nicht eingespielt, hab also die ganz normale Version installiert.
Bei mir kommen mit hideButtons 1 keinerlei Fehler, sowohl auf dem Produktivsystem als auch auf dem Testsystem. Auch im Logfile ist nichts zu erkennen.
Soll nix heißen.
Danke für die Info. Geht mir genauso. Konnte diesen JS-Fehler bei mir überhaupt nicht reproduzieren. Deswegen war ich auch ziemlich ratlos. Meine Änderung kannst du aber trotzdem mal implementieren. Dadurch ist der Code etwas schlanker geworden und ich übernehme es vermutlich ohnehin ins Repo.
Hab die Testversion eingebaut. Es taucht kein Fehler mehr auf. Die Tooltips werden jetzt angezeigt und die Buttons funtionieren auch.
Danke für die schnelle Lösung.
Ein kleiner Schönheitsfehler taucht bei mir allerdings noch auf: Beim Versuch das Watches-Device zu editieren geht etwas schief und es wird die Startseite von FHEM angezeigt. Mche ich ein "list Schaltuhr" und klicke dann dort den Link Schaltuhr an, dann wird alles korrekt angezeigt.
Hallo Karlheinz,
danke für die Rückinfo. Ich checke das Modul ein und ist morgen früh im Update enthalten.
ZitatBeim Versuch das Watches-Device zu editieren geht etwas schief und es wird die Startseite von FHEM angezeigt
Das habe ich ehrlich gesagt nicht verstanden was du meinst.
Kannst du es vllt. nochmal genauer beschreiben bzw. dokumentieren ?
Seltsame Dinge passieren bei dir ;)
LG
Tja, ist halt manchmal so mit den seltsamen Dingen. ;-)
Ich hab mal die Abfolge der Screenschots angehängt.
1. Bild: Anzeige des Devices im Room
2. Bild: Nach anklicken vom Link Schaltuhr im Room
3. Bild: Anzeige nach "list Schaltuhr"
4. Bild: Anzeige des Devices Schaltuhr
Ich hoffe jetzt ist es verständlicher.
Das Verhalten tritt nur bei diesem Device auf. Bei allen anderen Devices habe ich kein Problem mit dem Aufruf.
...ist übrigens auch so, wenn hideButtons auf 1 steht. Im Log gibt es keine Fehlermeldung.
Ja, danke. Jetzt ist es eindeutig was du meinst. Das hat mit dem JS jetzt nichts zu tun.
Ich denke das ist deiner besonderen Art geschuldet wie du Test / Prod adressierst.
Mein Link ist so definiert:
href="/fhem?detail=...."
Bei dir ist es aber nicht /fhem sondern /fhem_live bzw. /fhem_test.
Es gibt bestimmt eine FHEMWEB Variable welche ich statt "/fhem" verwenden kann. Vielleicht schaffe ich es heute noch, dann melde ich mich nochmal.
LG,
Heiko
Das entsprechende Attr für den Aufruf kannst du im FHEMWEB-Device setzten. Bei mir dementsprechend "attr WEB_HTTPS webname fhem_live".
Zur Info: Da ich über ein Reverse-Proxy auf meine beiden FHEM-Systeme zugreife, unterscheide ich über diesen Weg. Ich wollte halt alle anderen Definitionen in beiden Systemen gleich haben.
Lass dir Zeit. Es hat keine Eile, da ein Aufruf über list ja funktioniert.
Viele Grüße
Karlheinz
Ich denke du findest die entsprechende Definition in
$FW_ME
When using FHEMWEB, you have to specify a base path in all requests; this value is stored in the variable $FW_ME and defaults to /fhem. The user may change it by setting the webname attribute.
Jepp, genau die ist es. Habe ich auch in meinen anderen Modulen wie 49_SSCam so verwendet.
Frag mich mal warum hier nicht ... :o
Liegt wieder im contrib zum Test.
Prima, geht! Ich glaube die Zeile 570 würde auch noch diese Änderung vertragen. ;-)
$ret .= qq{Watch <a href="/fhem?detail=$d">$d</a> is disabled};
Viele Grüße und danke für die schnelle Änderung.
Karlheinz
Klar, hab ich auch noch nachgezogen. Liegt im contrib und ich checke die Änderung dann auch noch ein.
Heiko
Super! :)
Hallo Heiko,
großes Lob für das Watches-modul. Lassen sich schöne Uhren damit anzeigen.
Auf der fhem-WEB-Oberfläche läuft das prima. Ich möchte meine Oberfläche allerdings auf DOIF-ui_Table umstellen. Da klappt das mit Watches leider nicht. Ich kann zwar eine Uhr innerhalb einer Gruppe anzeigen lassen, bei ui_Table besteht aber die Möglichkeit, eine "Tabelle" als Grundgerüst zu nehmen und verschiedene Sachen auch nebeneinander zu plazieren.
ui_Table kann eigentlich alles möglich anzeigen, eben auch einfach html. Gibt es eine Möglichkeit, dass ich mir ein WatchesDevice definiere und auf das Ergebnis als html zugreife? Ich muss gestehen, die Mechanismen mit Javascript und html und was wo hin muss habe ich noch nicht durchschaut, aber vielleicht kannst Du was dazu sagen.
Hier https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Eigene_uiTable-Funktionen_programmieren (https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Eigene_uiTable-Funktionen_programmieren) ist gleich am Anfang der Beispieldefinition ein Weg gezeigt, eine Funktion, die html zurückliefert, einzubinden.
Würde mich freuen, wenn Du da mal einen BLick drauf werfen könntest.
Vielen Dank!
Sany
Hallo Sany,
Zitat
Gibt es eine Möglichkeit, dass ich mir ein WatchesDevice definiere und auf das Ergebnis als html zugreife?
Eigentlich sollte das machbar sein. Allerdings hatte ich es bisher nicht für den Nutzer so vorgesehen.
Um eine html zurück zu bekommen, könnte man theoretisch folgende Funktion nutzen
FHEM::Watches::modernWatch ("BlueHand")
"BlueHand" wäre der Name eines definierten Watches-Device. Diese Funktion liefert HTML-Code mit eingebetteten JS zurück.
Wie man das in uiTable einbindet weiß ich allerdings nicht, nutze weder DOIF noch uiTable.
modernWatch könnte auch stationWatch oder digitalWatch je nach Typ des definierten Devices.
Wenn ich den Link richtig interpretiere, müsste man einfach
return(<HTML-code>) angeben, also
return( FHEM::Watches::modernWatch ("BlueHand") )
"BlueHand" wäre natürlich durch ein Device in deinem FHEM zu ersetzen.
Probier mal, vllt. klappt das ja sogar. ;)
LG,
Heiko
funktiniert prima!
ich habs mal im DOIF-Bereich beschrieben, wie man ein Watches-Device dann in uiTable einbauen kann. Passt dort eher hin.
https://forum.fhem.de/index.php/topic,120681.msg1152634.html#msg1152634 (https://forum.fhem.de/index.php/topic,120681.msg1152634.html#msg1152634)
Nochmals vielen Dank!
Sany
Hallo zusammen,
bin gerade über diese hübsche Erweiterung gestolpert. Sehr fein, kann ich mir gut als Basis für die Restlaufzeit der Waschmaschine vorstellen, Anzeige zB in FTUI.
Zwei Fragen:
1.) wenn ich timeAsReading einschalte, bekomme ich beim Countdown sekündlich von currtime ein Event - erstmal ok, aber auf einem belasteten System würde ich mir wünschen, dass nur alle x Zeiteinheiten ein Event generiert wird.
Ein
event-on-change-reading mit currtime:10
war nicht erfolgreich. (ja, nur ein Versuch, ich habe nicht wirklich erwartet, dass es so einfach sein wird..)
2.) die Events werden scheinbar nur generiert, wenn der Timer aktuell von einem Browser angezeigt wird.
Fenster zu - keine Events, aber der Countdown läuft trotzdem weiter... magisch :-)
aber für eine Anzeige in FTUI benötige ich zumindest alle x Zeiteinheiten eines.
Welche Möglichkeiten habe ich?
Vielen Dank vorab
Ralph.
Hallo Ralph,
oh je, ist schon lange her dass mal eine Frage zu dem Modul gestellt wurde ;-)
Also das Modul funktioniert teilweise mit JavaScipt und Perl-Bestandteilen und ist insofern anders als "normale" Module.
Deswegen ist es auf die laufende Browser (JavaScript) Komponente angewiesen.
Wenn du nur alle 5 Sekunden einen Event haben möchtest, kannst du setzen:
event-min-interval currtime:5
Wie gesagt, klappt das nur mit laufender Browser-Komponente. Hast du ja auch bereits festgestellt.
Bisschen Magie ist schon dabei :)
Grüße,
Heiko
Dankeschön !
Als Anregung mal meine Eieruhr fürs TabletUI.
Der Browser auf dem TabletUI angezeigt wird läuft ja sowieso
Habe ein separates WEB definiert, das im Endeffekt nur die Uhr anzeigt.
defmod WEB_Eier FHEMWEB 8887 global
attr WEB_Eier CORS 1
attr WEB_Eier Css input, #logo, #menu, #textInput {\
display: none !important;;\
}\
\
#content {\
left: 0px !important;;\
top: 0px !important;;\
}\
attr WEB_Eier HTTPS 1
attr WEB_Eier alias WEB_Eier Lokal 8887
attr WEB_Eier defaultRoom EierUhr
attr WEB_Eier group FHEM-WEB
attr WEB_Eier hiddenroom save,Tablet-UI,Unsorted,Everything,Logfile,Commandref,Remote doc,Edit files,Select style,Event monitor
attr WEB_Eier hiddenroomRegexp \b(?!.*Uhr\b)\w+
attr WEB_Eier longpoll websocket
attr WEB_Eier stylesheetPrefix default
und im TabletUI dann als iframe eingebunden.
<iframe src="https://192.168.6.249:8887/fhem" style="width:150;height:50;border:0; border:none;margin-left: 130px;" width="150" height="50"></iframe>
wenn die Uhr nicht angezeigt werden soll, kann man auch höhe und breite von dem Iframe auch auf 0 setzen.
Achso nochwas.
Das Iframe sollte nur in einem Browser/Tablet eingebunden sein, sonst kann es zu lustigen Zeitsprüngen kommen.
Bei mir halt nur auf dem WandTablet in der Küche.
Ist es möglich, die Uhr positionierbar zu machen?
Mir fehlen dafür die Anfasser im Style f18.
Falls das so nicht möglich ist, wäre dann eine Positionsangabe wie z.B. im Flurplan möglich?
Kann man doch schon machen:
- die Uhr einer Gruppe zuweisen
- in Style "Dagging active" setzen
- die Uhr positionieren
- "Dagging active" ausschalten
Sollte so passen.
LG
Danke, habe ich inzwischen so gemacht.
Hallo,
ich finde die Uhr recht gut.
Frage: ist es möglich diese noch um eine Datumsanzeige zu erweitern?
Stelle mir das Format dann so vor für die Digitaluhr "%A, %d.%B %Y %H:%M:%S"
Möglich ist soetws sicherlich.
Allerdings bin ich im JavaScript Umfeld nicht so fit um eine solche Anpassung problemlos und ohne viel Zeiteinsatz umsetzen zu können.
Die Uhren Impementierung basiert auf dieser Veröffentlichung: http://www.3quarks.com/de/Segmentanzeige/index.html
Möglicherweise habe ich mal die Zeit mich intensiver damit zu befassen.
Ansonsten nehme ich Patchvorschläge gern entgegegen.
LG