NEWS
Datenpunkte werden unter Skripten nicht aktualisiert
-
Hi,
seit einigen Tagen oder auch Wochen sehe ich das Phänomen, das die Datenpunkte unter rpc zwar aktuell dargestellt werden, wenn ich jedoch den gleichen Datenpunkt in meinen Blockly Skripten anschaue, sind diese nicht aktuell. D.h. weder der Wert noch der Zeitstempel stimmen mit rpc überein.
Es hilft kein Durchstarten der Instanzen, ich muss den Host bzw. js controller komplett neu starten. Dann habe ich zwar die Daten des Reboots aktuell drinstehen, der ändert sich jedoch nicht, wie gesagt unter Blockly…
Das alles ist ziemlich lästig, da meine morgendliche Rolladenaktion nicht wirklich gut funktioniert..Ich muss dazu sagen,das ich den RPI morgens in aller Früh zwecks Memory Cleanup durchstarte.
Hat einer eine Idee, was ich machen kann oder hat jemand das gleiche schon mal gehabt?
Update: Versionen
(latest repository)
Admin 3.3.3
npm 4.6.1
js-controller 1.3.0
node: v8.10.0
-
das die Datenpunkte unter rpc zwar aktuell dargestellt werden, wenn ich jedoch den gleichen Datenpunkt in meinen Blockly Skripten anschaue, sind diese nicht aktuell. D.h. weder der Wert noch der Zeitstempel stimmen mit rpc überein. `
kann ich bestätigen - hatte mich auch schon einige unnötige Umprogrammierungen gekostet bis ich das bemerkte.
Der Zustand in dem ID-Selektor entspricht nicht dem aktuellen Zustand.
Gruß
Rainer
-
Der Zustand in dem ID-Selektor entspricht nicht dem aktuellen Zustand. `
Entscheidend ist, dass der Zustand zur Laufzeit des Scripts stimmt, d.h. dass die Trigger richtig funktionieren. Nach meiner Erfahrung funktioniert das problemlos. -
Das kann ich ebenfalls bestätigen.
Nur manchmal nutze ich den ID-Selektor auch um anhand des dort enhaltenen Wertes die Bedingung festzulegen.
Jetzt muss ich immer zusätzlich noch in Objekten nachsehen.
Gruß
Rainer
-
Dann sollte der Betreff des Themas angepasst werden, etwa "Zustände sind im ID-Selektor nicht aktuell" oder so ähnlich.
-
Da liegt aber das Problem. Das Script wird nicht ausgeführt, obwohl nach dem Triggerwert es so sein müsste. Wert ist laut rpc >100, im blockly nur 13,was nach dem Reboots entspricht.
-
Das Script wird nicht ausgeführt, obwohl nach dem Triggerwert es so sein müsste. `
Das wird dann wohl an dem Script liegen ? Poste mal einen Screen shot davon oder den Javascript-Code ("Zeige Javascript" ohne die letzte Zeile in Code tags). -
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