NEWS
Test Adapter mytime
-
Ok, dann müssen wir konkreter werden, damit ich dein setup besser nachvollziehen kann.
Welche adapter Version setzt du ein
Welchen time verwendest du? Countdown oder timeseries?
Wie ist die exakte Konfiguration des Timers in der Konfiguration.
Verwendest du ein Widget um irgendwas auf vis anzeigen zu lassen?
Welches und mit welcher Konfiguration hast du das. Am besten ein Export des Widgets machen.
Wie hoch ist die zeitdifferenz zwischen dem Server und dem Client?
Beschreibe nochmal genau wie du die zeitdifferenz feststellst.Seit Version 1.3.0 fragend die Countdown Widgets die Zeit auf dem Servers, berechnen die Differenz und berücksichtigen diese dann.
-
nönö bist du nicht... ich habs auch.und auch am Fire Tabled... habs auch schon moniert.. aber.. ist normal..
vor allem die kurzen in sekunden Bereich timer.. gehen bei mir auseinander in der Darstellung.. nicht im Ablauf@oliverio sagte in Test Adapter mytime:
Seit Version 1.3.0 fragend die Countdown Widgets die Zeit auf dem Servers, berechnen die Differenz und berücksichtigen diese dann.
und die Zeit auf dem Tabled wird mit berücksichtigt somit läuft diese dann auseinander..und NEIN ich synchroniesiere meine Tableds nicht alle paar stunden um die Uhrzeit richtig zu haben. die ist mir wumpe... ausserdem soll der Lauf/Ticker vom Server kommen ..aber das hatten wir schon..
-
@arteck @shadowhunter23
Jetzt muss ich nochmal nachfragen.
Habt ihr nur Probleme mit der unterschiedlichen Zeit?
Oder auch mit der rechtzeitigen Anzeige und Schaltung der Timers von mytime Widgets?Der Adapter kann natürlich nicht die Zeit im Client einstellen, ich kann nur die zeitdifferenz in der Berechnung und Anzeige meiner Widgets berücksichtigen.
Zeitsynchronisation am Fire hd müsste gehen wenn die automatische Zeitzone eingestellt ist und das Gerät Zugriff auf das Internet hat
-
@oliverio ich hab nur Darstellungsprobleme
und was der Fire HD müsste könnte sollte... steht auf einem anderen Blatt.. nochmal
ich habe einen Timer 20 sek.. der fängt im Widget manchmal bei 20 an.. meisten aber irgendwo zwischen 0 und 20... da die Zeit (müsste sollte könnte) nicht 10000000% synchron ist zu der Server Zeit.
das kannst du ja selber testen... keiner meiner Tabled's laufen 100 % Synchron mit der Server Zeit.. ist so.. und in den kleinen Bereichen.. < 60 sek.. passt es selten, dass im Widget das richtige steht..
-
@oliverio sagte in Test Adapter mytime:
Habt ihr nur Probleme mit der unterschiedlichen Zeit?
Nur Probleme mit der unterschiedlichen Zeit. Momentan hab ich 4 Sekunden unterschied von Server zum Tablet.
Die Ursache liegt am Tablet und nicht am iobroker. Da das Tablet je länger es läuft die Synchronisierung der Zeit nicht macht. Somit ist es beim Fire leider so das dort die Zeit nicht mehr stimmt. Nach einem Neustart des Tablet sind beide Zeiten synchron.Jetzt wo ich das nochmals schreibe merke ich auch dass das nicht am mytime Adapter liegt. Sonst müsstest du ja die Zeit- Synchronisierung des Tablets triggern und das geht nicht. mytime kennt ja nur die Zeit vom Server und die ist richtig.
-
@shadowhunter23 sagte in Test Adapter mytime:
Jetzt wo ich das nochmals schreibe merke ich auch dass das nicht am mytime Adapter liegt. Sonst müsstest du ja die Zeit- Synchronisierung des Tablets triggern und das geht nicht. mytime kennt ja nur die Zeit vom Server und die ist richtig.
ja es ist aber ungünstig die Zeiten zu mischen.. also die von Server zu nehmen und davon ausgehen dass die am Endgeät auch zu 100% passt.
das Widget sollte die Zeit von Server darstellen und der Server sollte diese auch berechnen (tickern) was zur Zeit nicht der Fall istein zusatz DP mit der ticker Zeit währe hier von vorteil.. was der Widget anzeigt.. und nicht ständig am Client berechnet wird.
-
@arteck sagte in Test Adapter mytime:
das Widget sollte die Zeit von Server darstellen
welches widget?
ich zeige die Zeit ja nicht dar, sondern nur den countdown dazu.
Der countdown passt nun zur serverzeit. wenn du direkt aber ein uhrzeit wirdget legst und der countdown bspw auf 14:00 uhr (clientzeit) enden soll und der client aber 6 sekunden voraus ist, dann wird beim beenden des countdown timers 14:00:06 stehen. uhrzeitwidget dürfte das aus dem time and weather adapter sein. ich habe die wordclock. ja da kann man die sekunden als umlaufende punkte mit einblenden. die dürften mittlerweile aber auch die serverzeit berücksichtigen. daher habe ich ja gefragt. durch welches widget bekommt ihr die zeitdifferenz mit.
die systemzeit kann der adapter nicht anpassen. ich kann nur auf meine widgets einwirken. -
@shadowhunter23 sagte in Test Adapter mytime:
Sonst müsstest du ja die Zeit- Synchronisierung des Tablets triggern und das geht nicht
eigentlich müsste das fire tablet das selber machen, wenn die Einstellung so wie in der Beschreibung ist, eingestellt ist.
dazu muss das tablet eine internetverbindung haben, dann sollte das tablet sich mit einem der bekannten ntp zeitserver verbinden und die zeit richtig einstellen.
falls das tablet keinen direkten internet zugriff, das benötigt man einen eigenen ntp-server als relay. -
@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?