NEWS
Test Adapter mytime
-
@oliverio sagte in Test Adapter mytime:
@arteck
Wenn es da zu Differenzen kommt entstehen diese Effekte.
Am besten einen ntp Dienst auf beiden konfigurieren.was.. wie ich denke der timer wird NUR am Server berechnet..
also
bei start timestamp merken und subtrahieren von gerade laufenden ... und ab ins widget damit
was hat der client mit zu tun ??? (ist bei mir ein FireHD10) -
@arteck sagte in Test Adapter mytime:
gerade laufenden
genau es wird der aktuelle timestamp vom Ende timestamp abgezogen.
Der Ende Timestamp wird auf dem server berechnet.
der aktuelle timestamp wird für das widget auf dem client berechnet.
auf dem server wird er ebenefalls berechnet um dann den timerstatus entsprechend schalten zu können.Alles andere würde eine kontinuierliche kommunikation zwischen client und server benötigen um die aktuelle zeit/timestamp an den client zu übertragen, was aus meiner sicht unnötig und ressourcenverschwendend sein würde. ausserdem ist nicht garantiert, das die datenänderungen pünktlich auf dem client eintreffen. das würde zu sprüngen in der sekundenanzeige führen.
ubuntu und debian habe zeitsync bereits eingebaut und eigentlich aktiviert.
-
@oliverio dann wird es aber nie passen in sek bereich... auf dem client (Tablet)
das linux timesync hat ist mir klar.. ich verstehe trotzdem dein Konstrukt nicht
du hast eine WS verbindung zur Visu.. wo ist das Problem ??? du bekommst nie 100% timesync zwischen Client (Tablet) und Server im sekunden Bereich..
ergo
die Berechnung nur auf dem Server und rüber damit zur VIS .. wie jedes andere Widget auch.. sekunden tick...wo ist dann das unnötige ???
-
@stefan-cloer said in Test Adapter mytime:
hier lag der Fehler, hatte direkt von github installiert. Danke
Das sollte optimaler Weise der Adapter nicht erlauben wenn es wegen irgendwelchen Implementierungsdetails nicht funktioniert. IoBroker erlaubt solche Adapter zu kennzeichnen damit es auf den Usersystemen keine / weniger Probleme gibt.
Hab mal ein Issue dazu erstellt.
https://github.com/oweitman/ioBroker.mytime/issues/866Ist sicher nicht prior - kostet aber auch keum Aufwand.
-
@arteck sagte in Test Adapter mytime:
dann wird es aber nie passen in sek bereich... auf dem client (Tablet)
das verstehe ich nicht so ganz warum es nie passen wird?
hier bei mir laufen diverse geräte und der server, auf dem iobroker läuft, alle mit synchronisierter zeit.
die skripte schalten dann auch, wenn die sekunden im widget auf 0 gehen. (wie gesagt, schalten auf dem server, anzeige auf dem client)
es mag sein, das es da ein paar millisekunden drift gibt, aber definitiv nicht im sekunden bereich. wenn dann ist das gerät nicht zeitsynchronisiert.
idR ermittelt der ntp dienst automatisch die abweichungsrate des ocillators auf dem gerät und stellt dann selbst den polling interval ein. ntp berücksichtigt sogar die latenz vom ntp server, so das selbst das korrigiert wird.in den fällen wo hier im forum seit 2020 differenzen gemeldet worden sind, war es immer ein nicht/falsch konfigurierter oder deaktivierter ntp dienst.
-
@oliverio sagte in Test Adapter mytime:
in den fällen wo hier im forum seit 2020 differenzen gemeldet worden sind, war es immer ein nicht/falsch konfigurierter oder deaktivierter ntp dienst.
Ich hatte an den Amazon Fire Tablets auch schon 3-4 Sekunden Abweichung. Hab allerdings dort nicht rausgefunden wie man die Zeit synchronisiert.
-
@shadowhunter23 sagte in Test Adapter mytime:
Ich hatte an den Amazon Fire Tablets auch schon 3-4 Sekunden Abweichung. Hab allerdings dort nicht rausgefunden wie man die Zeit synchronisiert.
sollte nicht so sein. bei mir kann ich bspw die zeit gar nicht einstellen, da diese selbst synchronisiert wird.
Bei Fire HD10 / Gen11
Einstellungen / Geräteoptionen / Datum und ZeitMeldung
Dein Fire stellt die Uhrzeit und Datum mithilfe von WLAN automatisch ein. Falls die Uhrzeit nicht korrekt ist, überprüfe bitte, das die richtige Zeitzone eingestellt ist.Das kann aber eigentlich nur zu einer Abweichung von einer ganzen Stunde führen (zumindest hier in Europa)
Falls sich das tatsächlich herausstellt, das das ein Problem ist, würde ich zwar immer noch nicht die Serverzeit sekündlich übertragen, sondern selbst alle paar Minuten nur die Differenz Server/Client berechnen und diese dann in die Berechnung einfließen lassen.
Aber wie gesagt, dafür gab es bisher zu wenig Meldungen
-
Moin,
vielen Dank für die weitere pflege des Adapters !!!!! -
Moin,
habe jetzt alles scripts mit dem neuen Datenpunkten ausgetauscht. Leider wird die eingestellte Countdown Zeit in der Adapter Einstellung nicht den Datenpunkt übernommen. Mache ich was falsch?
-
Das muss ich testen. Melde mich
-
@oliverio Frohes Neues und vielen Dank
-
Frohes neues Jahr und danke für den tollen Adapter, den ich eben für meine Zwecke entdeckt habe. Ich möchte den Adapter zur Erinnerung regelmässiger Aufgaben nutzen:
- Bettwäsche wechseln
- Zahnbürste wechseln
- Aussenanlagen giessen
- Zisterne Filter reinigen
- Entkalker warten
- Rasenmäher warten
- Blumen innen giessen
…
Die Erinnerungen kann ich mit dem Adapter realisieren. Toll wäre noch eine Erweiterung mit Bedingungen, zb:
- wenn es genug geregnet hat (Datenpunkt Regenmesser), Timer zurück setzen
- …
-
@elektroman sagte in Test Adapter mytime:
Mache ich was falsch?
Nein hast du nicht.
Tatsächlich war das nicht eingebaut, das wenn ein Countdown timer mal angelegt war, das die Daten nicht aktualisiert werden.
Ich habe das mal so umgangen, das jetzt jede Zeile einen Knopf erhalten hat, bei dem bei Änderung dann die Daten in den Datenpunkt geschrieben werden.
Da steckt zwar auch ein kleiner glitch noch drin, das bei einem frisch eingetragenen Timer (noch kein Datenpunkt angelegt), das nicht funktioniert. Die Überprüfung auf existierende/oder nicht Datenpunkte, habe ich aktuell mit jsonConfig nicht gelöst bekommen. Aber durch das normale Speichern der Konfiguration werden dann ja nalle Datenpunkte angelegt.In Version 1.4.0 (erstmal nur beta-repo) ist das nun eingebaut
-
@mading sagte in Test Adapter mytime:
wenn es genug geregnet hat (Datenpunkt Regenmesser), Timer zurück setzen
Ich gehe mal davon aus, das du vom timeseries modul sprichst?
was würdest du dir unter "zurücksetzen" vorstellen?
Den Startzeitpunkt(Datum/Uhrzeit) setzen? so das die Timeserie/Regel von da an im vorgeplanten Rhythmus wieder neu berechnet wird?Ich könnte da einen Sendto-Befehl bereitstellen, mit dem man aus aus dem javascriptadapter dann sen Befehl absetzen kann, wenn ein skript dann auf entsprechende Regeln reagiert.
Wäre es das was du dir vorstellst?
-
Neue Version 1.4.0
Wie im obigen Post bereits geschrieben, wurde ein zusätzlicher Knopf in der Konfiguration eingefügt, die das Schreiben eines einzelnen Countdown-Timers/Datenpunkts auslöst.
Da Countdown-Timers ja durch beschreiben von Datenpunkten anpassbar sind und durch Speichern aller Countdown-Timers auf einen schlag, laufende countdowns unterbrochen werden können, habe ich diesen Weg gewählt. -
@oliverio Moin, ich teste das mal, danke
-
@oliverio klappt gut
-
Vielen dank
-
@oliverio said in Test Adapter mytime:
Da Countdown-Timers ja durch beschreiben von Datenpunkten anpassbar sind und
Ich laufe beim Anlegen eines Countdown und klicken auf den SetDP Button auf Probleme. Ich lege einen Namen an und setze die Stunde auf 1.
mytime.0 2025-01-22 20:27:10.268 info starting. Version 1.4.0 in /opt/iobroker/node_modules/iobroker.mytime, node: v20.18.1, js-controller: 7.0.6 host.iobroker 2025-01-22 20:27:09.591 info instance system.adapter.mytime.0 in version "1.4.0" started with pid 1612894 host.iobroker 2025-01-22 20:26:39.267 info Restart adapter system.adapter.mytime.0 because enabled host.iobroker 2025-01-22 20:26:39.266 error instance system.adapter.mytime.0 terminated with code 6 (UNCAUGHT_EXCEPTION) mytime.0 2025-01-22 20:26:38.728 warn Terminated (UNCAUGHT_EXCEPTION): Without reason mytime.0 2025-01-22 20:26:38.727 info terminating mytime.0 2025-01-22 20:26:38.726 info cleaned everything up... mytime.0 2025-01-22 20:26:38.718 error Cannot set properties of undefined (setting 'config') mytime.0 2025-01-22 20:26:38.717 error 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) at Mytime.emit (node:events:518:28) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7262:20) at Immediate.<anonymous> (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:291:37) at process.processImmediate (node:internal/timers:483:21) mytime.0 2025-01-22 20:26:38.715 error unhandled promise rejection: Cannot set properties of undefined (setting 'config') mytime.0 2025-01-22 20:26:38.714 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().
Nodejs-Installation:
/usr/bin/nodejs v20.18.1
/usr/bin/node v20.18.1
/usr/bin/npm 11.0.0
/usr/bin/npx 11.0.0
/usr/bin/corepack 0.29.4ioBroker Core: js-controller 7.0.6
admin 7.4.10