NEWS
Datenpunkte werden unter Skripten nicht aktualisiert
-
Hier das Script….
! on({id: "hm-rpc.0.LEQ0987093.1.BRIGHTNESS"/Garten_BM:1.BRIGHTNESS/, change: "ne"}, function (obj) {
! var value = obj.state.val;
! var oldValue = obj.oldState.val;
! if (compareTime('06:59', null, ">", null) && compareTime('09:00', null, "<", null)) {
! if (getState("admin.0.Systemwide_Var.G_VAR_RolladenOben").val == false) {
! if (getState("admin.0.Systemwide_Var.G_VAR_Arbeitstag").val == true) {
! if (getState("hm-rpc.0.LEQ0987093.1.BRIGHTNESS").val >= 100) {
! setState("hm-rpc.0.NEQ1535061.1.LEVEL"/Kueche_Rolladen:1.LEVEL/, 100);
! setState("hm-rpc.0.LEQ0765834.1.LEVEL"/Schlafzimmer_Fenster_Rolladen:1.LEVEL/, 25);
! setState("hm-rpc.0.LEQ0765937.1.LEVEL"/Schlafzimmer_Tuer_Rolladen:1.LEVEL/, 25);
! setState("hm-rpc.0.LEQ0765832.1.LEVEL"/Buero_Rolladen:1.LEVEL/, 100);
! setState("admin.0.Systemwide_Var.G_VAR_RolladenOben"/G_VAR_RolladenOben/, true);
! setStateDelayed("hm-rpc.0.LEQ0765834.1.LEVEL"/Schlafzimmer_Fenster_Rolladen:1.LEVEL/, 100, 900000, true);
! setStateDelayed("hm-rpc.0.LEQ0765937.1.LEVEL"/Schlafzimmer_Tuer_Rolladen:1.LEVEL/, 100, 900000, true);
! }
! } else {
! if (compareTime('08:00', null, ">", null)) {
! if (getState("hm-rpc.0.LEQ0987093.1.BRIGHTNESS").val >= 100) {
! setState("hm-rpc.0.NEQ1535061.1.LEVEL"/Kueche_Rolladen:1.LEVEL/, 100);
! setState("hm-rpc.0.LEQ0765834.1.LEVEL"/Schlafzimmer_Fenster_Rolladen:1.LEVEL/, 25);
! setState("hm-rpc.0.LEQ0765937.1.LEVEL"/Schlafzimmer_Tuer_Rolladen:1.LEVEL/, 25);
! setState("hm-rpc.0.LEQ0765832.1.LEVEL"/Buero_Rolladen:1.LEVEL/, 100);
! setState("admin.0.Systemwide_Var.G_VAR_RolladenOben"/G_VAR_RolladenOben/, true);
! setStateDelayed("hm-rpc.0.LEQ0765834.1.LEVEL"/Schlafzimmer_Fenster_Rolladen:1.LEVEL/, 100, 900000, true);
! setStateDelayed("hm-rpc.0.LEQ0765937.1.LEVEL"/Schlafzimmer_Tuer_Rolladen:1.LEVEL/, 100, 900000, true);
! }
! }
! }
! }
! }
! }); -
womit vergleichst du denn die Zeit?
Da steht "null"
ich gehe mal davon aus, dass dann der Vergleich auch nicht klappen kann.
Gruß
Rainer
-
Du kannst natürlich auch mal einen Screenshot vom Blockly selbst einstellen, dann können auch die mit"lesen", die kein "normales" Javascript lesen können.
Enrico
-
Hier das Bild vom Blockly script…
4528_blockly.jpg -
Für den ersten Zeitvergleich kannst du den Block auf "zwischen" umstellen, damit sollte der erste Vergleich funktionieren. Ob es beim Zeitvergleich funktioniert mit "größer" oder "kleiner" als zu arbeiten weiß ich nicht genau.
Was mir noch so auffällt, ist, dass du deine "falls"-Bedingungen sehr weit verschachtelt hast, da könntest du doch auch mit "und" arbeiten. Dann hast du hinter einem "sonst" wieder eine weitere "falls"-Bedingung, da kannst du doch schon mit "sonst falls" arbeiten.
Enrico
-
Danke für die Anregungen…
Habs mal komplett umgebaut...
Mals sehn ob es auch so funktioniert..
ABER, ich denke das es auch so nicht funktioniert. Ich habe eher den Eindruck, das bei der Übergabe in die Javascript Instanz die States bzw. Werte nicht korrekt bzw. nicht in "Echtzeit" übergeben werden.
4528_blockly_neu.jpg -
Das sieht so schon viel übersichtlicher aus.
Noch besser wird es, wenn du mal beim ersten "und"-Block mit Rechtsklick raufgehst und "externe" Eingänge anklickst. Dann kannst du das "und" verschachteln bis alle vier ersten Bedingungen in einem(bzw mehreren" "und" zusammen sind. Und dann nur eine "falls" Bedingung mit "sonst falls".
Ich hoffe, du verstehst, was ich meine. Sonst stell doch einen Export von dem Blockly ein, dann kann ich das mal so machen, wie ich das meine.
Enrico
-
So, Script hatte ich gestern noch weiter umgebaut… heute morgen lief es dann auch tatsächlich.
Ich habe noch die "Arbeitstag" Berechnung (interne iobroker Variable) auf nach dem Reboot gesetzt um evtl. falschen Werten nach dem Reboot zu entgegnen. Diese lief vorher um 1:00 Nachts, also vor dem Reboot.
Ich werde es beobachten, nächstes Mal am Montag.
Dennoch möchte ich den Einstieg wieder bei dem ursprünglichen Problem finden. Die Werte eines Datenpunkts werden nach wie vor in den Scripten falsch (die Uhrzeit ist auch different) angezeigt. Wie jetzt gerade wieder. Siehe Bilder. Erstes ist direkt aus dem RPC, das zweite aus Blockly.
4528_rpc.jpg
4528_script.jpg
4528_script.jpg -
Ich kann das auch nur bestätigen, bei mir, jedenfalls bei dem einen angesehenen Objekt, ist der Zeitstempel bei der ID-Auswahl beim Scripten sogar schon mehrere Tage (4!) alt.
Enrico
-
Die Werte eines Datenpunkts werden nach wie vor in den Scripten falsch (die Uhrzeit ist auch different) angezeigt. `
Das meinst du nichtOder?
jedenfalls bei dem einen angesehenen Objekt, ist der Zeitstempel bei der ID-Auswahl beim Scripten sogar schon mehrere Tage (4!) alt. `
ich habe den Eindruck (bei mir z.B. Harmony) dass der Timestamp und Wert aus dem ersten Start des Adapters herrührt. Nach einem reboot der Instanz war alles aktuell und ist es heut e noch (auf dem Stand von dem Reboot)Gruß
Rainer
-
Genau das meine ich…
Gesendet von meinem S9 Plus mit Tapatalk
-
Genau das meine ich… `
Was?Dass die Werte in den Skripten nicht ok sind?
oder eher dass die Werte in der ID-Selector-Box nicht ok sind?
Gruß
Rainer
-
Könnte es sein, dass es mit dem Admin-Adapter zusammenhängt? Der war der Einzige, den ich eben aktualisiert habe und nun ist der Timestamp von heute, vor etwas mehr als ner halben Stunde, wo ich nur den Admin hochgesetzt habe!?
Enrico
-
Genau das meine ich… `
Was?Dass die Werte in den Skripten nicht ok sind?
oder eher dass die Werte in der ID-Selector-Box nicht ok sind?
Gruß
Rainer `
Genau das, das die Werte in der ID-Selector-Box nicht ok sind. Ich habe den Eindruck, das diese falschen Werte auch in den Scripten verwendet werden und so zu seltsamen Ausführungen der Scripte führen.
-
Deswegen ja die Nachfrage!
das die Werte in der ID-Selector-Box nicht ok sind `
Das ist bekannt!Ich habe den Eindruck, das diese falschen Werte auch in den Scripten verwendet werden `
Hast du dafür Beweise?Ich glaube das nämlich nicht.
Dann nimm doch einen debug baustein und schreibe den aktuellen Wert bei Ausführung ins log.
Dann weisst du es genau.
Gruß
Rainer
-
Ich würde auch eher davon ausgehen, dass nur die Werte im ID-Selektor nicht aktuell sind. Ich habe bisher noch keinen Anhaltspunkt, dass irgendwo keine aktuellen Werte verwendet werden.
Habt ihr schon mal probiert nur den Admin neuzustarten, ob dann alles aktuell ist? Dann könnten wir das als Bug melden.
Enrico
-
Ich würde auch eher davon ausgehen, dass nur die Werte im ID-Selektor nicht aktuell sind. Ich habe bisher noch keinen Anhaltspunkt, dass irgendwo keine aktuellen Werte verwendet werden.
Habt ihr schon mal probiert nur den Admin neuzustarten, ob dann alles aktuell ist? Dann könnten wir das als Bug melden.
Enrico `
Test: Aktuelle Uhrzeit 20:50
tatsächlicher Wert: 33 von 20:50
Wert im ID Selktor 223 von 12:57
Reboot Admin 20:51
Wert im ID Selktor 33 von 20:50
Ergebnis: Nach Admin Restart werden die Werte aktualisiert.
-
Ergebnis: Nach Admin Restart werden die Werte aktualisiert. `
Aber eben auch wieder nur einmalig!
Enrico
-
so wie es aussieht ist dies ein Feature and not a Bug.
Siehe https://github.com/ioBroker/ioBroker.admin/issues/196 . Dies würde ja leider passen…warum das allerdings ein Feature ist, kann ich nicht so richtig nachvollziehen...
-
Warum nicht.
Die ID Selector box soll dir nur helfen den richtigen State zu wählen.
Der Wert des States ist absolut unerheblich
Gruß Rainer