NEWS
Test Adapter mytime
-
@oliverio sagte in Test Adapter mytime:
eigentlich müsste das fire tablet das selber machen, wenn die Einstellung so wie in der Beschreibung ist, eingestellt ist.
Leider synchronisiert ein Fire nicht regelmäßig die Zeit. Internetverbindung ist immer vorhanden und Einstellung für die automatische Zeitzone ist aktiv.
-
@oliverio sagte in Test Adapter mytime:
dazu muss das tablet eine internetverbindung haben, dann sollte das tablet sich mit einem der bekannten ntp zeitserver verbinden und die zeit richtig einstellen.
solle, könnte, müsste, ich glaube..
DER MACHT ES NICHT.punkt.wie oft den noch
mach ein Timer mit 10 sek.. und die Zeit hat eine Abweichung von 11 sekunden auf dem Tabled...(auch wenn nicht sollte,könnte müsste aber ) dann seh ich 0 (ein zero) im Widget
ich weiss nicht wie oft wir das schon durchgekaut haben..
und wie welches Widget
der passende zum Adapter. ich nutze den Flipwo ist das Problem... den Ticker einfach in ein DP zu zeigen..
wo die Zeit runnterläuft..halt als ticker..dann ist es unabhängig vom client Zeit
-
und du glaubst das ich das nicht immer teste?
es kann natürlich schon sein, das mir etwas durchgeht.
Insbesondere, das ich bei der Berücksichtigung der Serverzeit evtl ein widget vergessen habe
oder ein Anwendungsfall oder Software/Hardware-Konstellation nicht bedacht ist.
Daher diese detaillierte Fragen. Nachvollziehen kann ich es allerdings immer noch nicht.
Der Adapter ist über 500 mal installiert. Ich gehe davon aus, das es dann öfters hier oder auf github eine Meldung geben würde.
Hier mein Testview, der auch nicht erst seit heut existiert
3c591191-a21e-4e4a-b0b1-d05d84d28b16-20250530-1220-39.9448337.mp4Evtl auch noch die lokale Netzwerk latzenz berücksichtigen?
Wobei das schon krass sein muss, wenn da mehrere Sekunden zusammen kommen. -
Oben timeandweather Uhr und die zeigt die Uhrzeit vom Tablet an. Darunter per Blockly eine Zeit vom Server. Wie man sieht ist die Zeit vom Tablet weit weg. Und mytime läuft mit der Zeit vom Server. Startet nun ein mytime Timer dann läuft dieser nicht synchron zur Tablet Zeit und zeigt am Ende einige Sekunden 0 an obwohl der Timer noch läuft.
VID_20250530_211608.mp4 -
@oliverio sagte in Test Adapter mytime:
Der Adapter ist über 500 mal installiert. Ich gehe davon aus, das es dann öfters hier oder auf github eine Meldung geben würde.
das sagt nix... zigbee2mqtt ist dast 3k installiert und ich habe die tage 3 User gehabt mit einem Problem.. also....das sagt nix
es hängt immer mit dem UserCase ab, und das kriegst mit deinem Test nicht abgweickelt da es auf der gleichen Kiste läuft wo du entwickelst und die ist bestimmt Zeitsynchron.wir reden hier um Sekunden Bereich... wenn du Minuten oder Tage darstellst dann fällt das nicht auf...(deshalb so wenige User oder die achten da nicht drauf)
bei mir verhält es sich genauso wie bei @Shadowhunter23 (warum auch anderst ist ja das gleiche Problem)
und ja die laufen auseinander.. meine Windoof Maschiene hat letztens 5 min Zeitdifferenz gehabt.. wenn man da nicht drauf achtet ..
ich verstehe nur nicht warum du dich da so streubst ein Zusatz DP zu machen ?? mit einem Ticker im DP (wie ich es gezeigt habe)
-
@arteck sagte in Test Adapter mytime:
das sagt nix...
@arteck sagte in Test Adapter mytime:
und das kriegst mit deinem Test nicht abgweickelt da es auf der gleichen Kiste
Du machst recht viele Annahmen
@arteck sagte in Test Adapter mytime:
und ja die laufen auseinander.. meine Windoof Maschiene hat letztens 5 min Zeitdifferenz gehabt.. wenn man da nicht drauf achtet ..
ich verstehe nur nicht warum du dich da so streubst ein Zusatz DP zu machen ?? mit einem Ticker im DP (wie ich es gezeigt habe)Weil das eine schlechte Lösung ist. Nur weil man es nicht schafft seine Maschinen Zeitsynchron zu halten, obwohl es da Lösungen gibt, werfe ich doch keine extra Netzlast und Performance (ihr sprecht davon jede Sekunde die Uhrzeit über das Netz an x Clients zu verteilen) drauf um das auszugleichen? Wenn das mehrere Programmierer machen würden, dann wären Performanceschwache Clients aber bedient.
Ich habe hier mal alle Clients gecheckt (Windows11/Chrome, Fire HD 10, IOS Tablet). Bei keinem waren die Abweichungen mehr wie 500ms. Meist sogar wirklich unter 100ms, was ich eher der Netz- und Verarbeitungslatenz zwischen Server und Client zurechne.
Nachdem ich den Fall nachstellen konnte, indem ich unter Windows die Uhrzeit künstlich angepasst habe, habe ich das Problem finden können. Aktuelle Uhrzeit und Serverzeit wurde in der falschen Reihenfolge voneinander abgezogen um die Differenz zu ermitteln. Das fällt dann auf, wenn die Differenz mindestens 500ms, eher höher ist, auf. Was bisher hier im Netz nie aufgefallen ist.
-
Neue Version 1.4.2
- Das Problem bei der Berechnung der Zeitdifferenz zwischen Server und Client konnte behoben werden.
Wer das für sich genauer testen möchte, habe ich hier meine Testview mit zusätzlichen Informationen aufbereitet. Hier zum importieren
Es wird noch der Adapter timeandweather benötigt für das Uhrzeit widgetZusätzlich wird noch das folgende Blockly-Skript und der Datenpunkt 0_userdata.0.zeit vom Typ string benötigt, welches die Serverzeit als String sekündlich in den Datenpunkt schreibt
So sieht der view dann aus.
-
Hi,
gerade mal den Adapter installiert und versucht einen Countdown Timer anzulegen:
dabei koimmt dann das im log: (sorry, kann gerade nur aus dem Browser Fenster kopieren)
host.iobroker 2025-06-05 17:12:16.343 info Restart adapter system.adapter.mytime.0 because enabled host.iobroker 2025-06-05 17:12:16.343 error instance system.adapter.mytime.0 terminated with code 6 (UNCAUGHT_EXCEPTION) mytime.0 2025-06-05 17:12:15.642 warn Terminated (UNCAUGHT_EXCEPTION): Without reason mytime.0 2025-06-05 17:12:15.641 info terminating mytime.0 2025-06-05 17:12:15.641 info cleaned everything up... mytime.0 2025-06-05 17:12:15.638 error Cannot set properties of undefined (setting 'config') mytime.0 2025-06-05 17:12:15.637 error TypeError: Cannot set properties of undefined (setting 'config') at mytimeCountdown.setCountdownConfigMsg (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:587:46) at mytimeCountdown.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:566:18) at mytimeclassNew.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeserver.js:60:48) at Mytime.onMessage (/opt/iobroker/node_modules/iobroker.mytime/main.js:102:22) at Mytime.emit (node:events:524:28) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7309:20) at Immediate.<anonymous> (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:286:37) at process.processImmediate (node:internal/timers:483:21) mytime.0 2025-06-05 17:12:15.635 error unhandled promise rejection: Cannot set properties of undefined (setting 'config') mytime.0 2025-06-05 17:12:15.635 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
Was mache ich denn falsch?
JS-Controller 7.0.7
Node v20.19.1
Admin v7.6.18
myTime 1.4.2Edit: debug log
mirko@iobroker:~$ tail -f /opt/iobroker/log/iobroker.current.log |grep mytime 2025-06-05 17:24:47.535 - debug: mytime.0 (90064) processMessages mytime 2025-06-05 17:24:47.535 - debug: mytime.0 (90064) processMessages countdown{"command":"setCountdownConfig","message":{"behavior":"timer","days":"0","hours":"0","minutes":"30","name":"30min","seconds":"0"},"from":"system.adapter.admin.0","callback":{"message":{"behavior":"timer","days":"0","hours":"0","minutes":"30","name":"30min","seconds":"0"},"id":491,"ack":false,"time":1749137087530},"_id":12576096} 2025-06-05 17:24:47.536 - debug: mytime.0 (90064) send setCountdownConfig 2025-06-05 17:24:47.536 - debug: mytime.0 (90064) setCountdownConfigMsg 2025-06-05 17:24:47.540 - error: mytime.0 (90064) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2025-06-05 17:24:47.540 - error: mytime.0 (90064) unhandled promise rejection: Cannot set properties of undefined (setting 'config') 2025-06-05 17:24:47.542 - error: mytime.0 (90064) TypeError: Cannot set properties of undefined (setting 'config') at mytimeCountdown.setCountdownConfigMsg (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:587:46) at mytimeCountdown.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:566:18) at mytimeclassNew.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeserver.js:60:48) at Mytime.onMessage (/opt/iobroker/node_modules/iobroker.mytime/main.js:102:22) 2025-06-05 17:24:47.543 - error: mytime.0 (90064) Cannot set properties of undefined (setting 'config') 2025-06-05 17:24:47.554 - debug: mytime.0 (90064) main onUnload try 2025-06-05 17:24:47.555 - debug: mytime.0 (90064) closeConnections 2025-06-05 17:24:47.555 - debug: mytime.0 (90064) deleteObservers 2025-06-05 17:24:47.555 - info: mytime.0 (90064) cleaned everything up... 2025-06-05 17:24:47.555 - info: mytime.0 (90064) terminating 2025-06-05 17:24:47.556 - warn: mytime.0 (90064) Terminated (UNCAUGHT_EXCEPTION): Without reason 2025-06-05 17:24:48.057 - info: mytime.0 (90064) terminating 2025-06-05 17:24:48.333 - error: host.iobroker instance system.adapter.mytime.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2025-06-05 17:24:48.333 - info: host.iobroker Restart adapter system.adapter.mytime.0 because enabled
-
Kannst du bitte den log level auf debug stellen und dann nochmal versuchen anzulegen. Da kommen ein paar mehr Zeilen mit um zu sehen wo das genau passiert ist.
-
@oliverio gerade meinen Beitrag vorher editiert.
Edit: Melde dich wenn du noch etwas benötigst! Danke für die schnelle Antwort!
Edit 2: Mit V1.4.0 sieht es genauso aus:
2025-06-05 17:31:06.188 - info: mytime.0 (90356) starting. Version 1.4.0 in /opt/iobroker/node_modules/iobroker.mytime, node: v20.19.1, js-controller: 7.0.7 2025-06-05 17:31:06.206 - debug: mytime.0 (90356) main onReady start 2025-06-05 17:31:06.207 - debug: mytime.0 (90356) main onReady open mytime 2025-06-05 17:31:06.207 - debug: mytime.0 (90356) mytime init 2025-06-05 17:31:06.208 - debug: mytime.0 (90356) setState connection: true 2025-06-05 17:31:06.210 - debug: mytime.0 (90356) mytimeCountdown init 2025-06-05 17:31:06.211 - debug: mytime.0 (90356) setCountdownInfo {} 2025-06-05 17:31:06.213 - debug: mytime.0 (90356) mytimeTimeserie init 2025-06-05 17:31:06.213 - debug: mytime.0 (90356) setTimeseriesInfo [] 2025-06-05 17:31:06.722 - debug: mytime.0 (90356) getStates * Countdowns 2025-06-05 17:31:06.724 - debug: mytime.0 (90356) getStates * Timeseries 2025-06-05 17:31:06.865 - debug: mytime.0 (90356) state mytime.0.info.connection changed: true (ack = true) 2025-06-05 17:31:31.087 - debug: mytime.0 (90356) processMessages mytime 2025-06-05 17:31:31.088 - debug: mytime.0 (90356) processMessages countdown{"command":"setCountdownConfig","message":{"behavior":"timer","days":"0","hours":"0","minutes":"30","name":"30min","seconds":"0"},"from":"system.adapter.admin.0","callback":{"message":{"behavior":"timer","days":"0","hours":"0","minutes":"30","name":"30min","seconds":"0"},"id":498,"ack":false,"time":1749137491062},"_id":12576105} 2025-06-05 17:31:31.088 - debug: mytime.0 (90356) send setCountdownConfig 2025-06-05 17:31:31.088 - debug: mytime.0 (90356) setCountdownConfigMsg 2025-06-05 17:31:31.090 - error: mytime.0 (90356) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2025-06-05 17:31:31.091 - error: mytime.0 (90356) unhandled promise rejection: Cannot set properties of undefined (setting 'config') 2025-06-05 17:31:31.094 - error: mytime.0 (90356) TypeError: Cannot set properties of undefined (setting 'config') at mytimeCountdown.setCountdownConfigMsg (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:588:46) at mytimeCountdown.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeCountdown.js:566:18) at mytimeclassNew.processMessages (/opt/iobroker/node_modules/iobroker.mytime/lib/mytimeserver.js:60:48) at Mytime.onMessage (/opt/iobroker/node_modules/iobroker.mytime/main.js:102:22) 2025-06-05 17:31:31.094 - error: mytime.0 (90356) Cannot set properties of undefined (setting 'config') 2025-06-05 17:31:31.108 - debug: mytime.0 (90356) main onUnload try 2025-06-05 17:31:31.109 - debug: mytime.0 (90356) closeConnections 2025-06-05 17:31:31.109 - debug: mytime.0 (90356) deleteObservers 2025-06-05 17:31:31.109 - info: mytime.0 (90356) cleaned everything up... 2025-06-05 17:31:31.110 - info: mytime.0 (90356) terminating 2025-06-05 17:31:31.112 - warn: mytime.0 (90356) Terminated (UNCAUGHT_EXCEPTION): Without reason 2025-06-05 17:31:31.614 - info: mytime.0 (90356) terminating 2025-06-05 17:31:31.936 - error: host.iobroker instance system.adapter.mytime.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2025-06-05 17:31:31.937 - info: host.iobroker Restart adapter system.adapter.mytime.0 because enabled 2025-06-05 17:31:31.937 - warn: host.iobroker Do not restart adapter system.adapter.mytime.0 because restart loop detected
-
@OliverIO : sag Bescheid wenn du ein Issue auf Github benötigst.
-
@OliverIO guten Morgen.
Hattest du schon Gelegenheit dir das log anzuschauen und vielleicht eine Idee was die Ursache sein kann?
Gibt es noch etwas das ich testen kann um den Adapter zum laufen zu bekommen falls es an meiner Installation liegt?
-
Eine Idee habe ich.
Wahrscheinlich hab ich irgendwas bei der Grund Initialisierung vergessen.
Muss das aber noch mal testen -
@oliverio OK. Wenn ich was Testen soll, geb Bescheid.
Danke für deinen Einsatz
-
ok, fehler ist identifiziert.
der neu hinzugekommene Knopf "setDP" dient eigentlich dazu, die Zeit eines bereits vorhandenen Countdown timers erneut oder gemäß Eingabe zu setzen.
Wenn du aber den Eintrag erst frisch hinzugefügt hast, dann existiert der Datenpunkt noch nicht und die Funktion geht schief.
Meine Vorstellung wäre, das dieser Knopf nur aktiv ist, wenn der Datenpunkt existiert und wenn tatsächlich was geändert wurde.
Das muss ich erst austüfteln, wie ich das im admin gestalten muss.Für dich reicht es einfach, den speichern Knopf unten zu drücken.
Dann ist der Countdown auch angelegt. -
@oliverio top.
Gleich mal testen wenn ich wieder am Rechner bin .
-
@oliverio sagte in Test Adapter mytime:
Neue Version 1.4.2
- Das Problem bei der Berechnung der Zeitdifferenz zwischen Server und Client konnte behoben werden.
Getestet und funktioniert, trotz Zeitversatz wird der Timer richtig beendet. Vielen Dank für die Anpassung!
-
Ich teste gerade mal die Widgets, mache ich bei dem "Circle" etwas falsch das sich der Sekunden Wert nicht ändert und auch der Kreis nicht?
Wie man am anderen Widget sieht läuft der Timer.
-
@wendy2702 welche version hast du?
wenn server uhr und client uhr nicht genau läuft, gab es bis v1.4.2 ein problem. also hier mal aus dem beta channel laden. -
Neue Version 1.4.3
Die Validator Regel für den SetDP Knopf in der Konfiguration wurde verbessert, so das der Knopf nur gedrückt werden kann, wenn der Datenpunkt bereits existiert.