NEWS
Test Adapter mytime
-
@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.
-
@oliverio sagte in Test Adapter mytime:
@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.1.4.2
Ich teste nachher mit 1.4.3