NEWS
Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg
-
@th-g Ändere diesen Teil
so ab
das verhindert das (nochmalige) Lesen eines nicht vorhandenen Status(DP = leer). Soweit die Theorie, ob es funktioniert sehen wir dann. Dachte nicht dass das irgendwie unklar sein könnte
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)
Hallo, bin zwar auch Anfänger und dabei zu lernen - versuche aber mal meine Sicht aufzuzeigen.
Die zitierte Logmeldung bedeutet für mich, dass der DP des Adapters hier nicht mehr existiert.
Es scheint also, dass der Adapter in den DP entweder true einträgt oder ihn "löscht" (wie immer das aussieht)
Eigentlich sollte ein DP vom Typ boolean genau zwei Werte annehmen können: true (wahr) odere false (falsch). Wenn der DP anstelle den Wert false zu bekommen "gelöscht wird" löst er keinen Trigger aus, daher kommt es nie zu der Aussage "nicht aktiv", da der Trigger fehlt. Kein Problem von Blockly sondern des Adapters.
Ersatzweise ist ein rein Zyklische Abfrage des Datenpunkts möglich (wie du gezeigt hast - ich würde dann aber die äussere Schleife des Triggers ganz weglassen). Die Fehlermeldung des nicht existierenden DP wird es dann aber immer geben. (Vielleicht nach diesem Beispiel vermeidbar https://forum.iobroker.net/topic/27985/prüfen-ob-datenpunkt-existiert)In einer Zeitintervall-Schleife auf einen alten Wert zuzugreifen wird nicht funktionieren, da er sich ja dann nie mehr ändert.
-
@tobi19 said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)
Hallo, bin zwar auch Anfänger und dabei zu lernen - versuche aber mal meine Sicht aufzuzeigen.
Die zitierte Logmeldung bedeutet für mich, dass der DP des Adapters hier nicht mehr existiert.
Es scheint also, dass der Adapter in den DP entweder true einträgt oder ihn "löscht" (wie immer das aussieht)Das sehe ich auch so
... Wenn der DP anstelle den Wert false zu bekommen "gelöscht wird" löst er keinen Trigger aus, daher kommt es nie zu der Aussage "nicht aktiv", da der Trigger fehlt. Kein Problem von Blockly sondern des Adapters.
Das ist nicht richtig, denn:
Ist Heizen dann vorbei steht im DP Heizen wieder kein Wert und auch hier wird dann im DP Status_WP -nicht aktiv- richtig angezeigt.
Danach fangen aber die ständigen Warnungen im Log um Rhythmus des Intervalls an.>Das liegt m.E. daran, dass der Wert, welcher triggert, unmittelbar nach dem Triggern noch einmal eingelesen wird mit Wert vom Objekt Heizen. Das sollte man grundsätzlich nicht machen, da der Trigger bereits den Wert liefert und der neu eingelesene durchaus anders sein kann. In diesem speziellen Fall wird dann aber versucht, einen nicht (mehr) existenten DP zu lesen, was zu den LOG Einträgen führt. Die Verwendung des Triggerwertes anstelle von neuem Einlesen sollte das wohl verhindern
Ob das tatsächlich hilft, kann nur der TE bestätigen
-
Wie kann denn das gehen, wenn es keine Frage mehr gibt, ob der Status true ist? Was bedeute das nun nur mit der Wert?
Das das ein Problem vom Adapter ist ist bekannt aber laut Entwickler nicht zu ändern, da einfach kein Wert von der Anlage ausgegeben wird.
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Wie kann denn das gehen, wenn es keine Frage mehr gibt, ob der Status true ist? Was bedeute das nun nur mit der Wert?
Das das ein Problem vom Adapter ist ist bekannt aber laut Entwickler nicht zu ändern, da einfach kein Wert von der Anlage ausgegeben wird.
Der Wert (keine angelegte Variable!!!) ist der Wert zum Zeitpunkt des Triggerns, im Prinzip genau was du gemacht hast, jedoch halt der Originalwert. Ein danach gelesener Wert könnte bereits ein anderer sein. Falls prüft immer auf Wahr, weshalb es die verkürzte Version von
Falls Wert = Wahr
ist.Funktioniert es denn jetzt oder kommen die LOG Einträge immer noch?
-
Ah aber das musst du doch auch erklären, jetzt verstehe ich das erst. Ich muss warten bis die Wärmepumpe wieder anspringt
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Ah aber das musst du doch auch erklären, jetzt verstehe ich das erst. Ich muss warten bis die Wärmepumpe wieder anspringt
Du hättest es meiner Meinung nach auch umsetzen können, ohne es erstmal zu verstehen. Man(n) ist ja nicht immer in der Laune/Lage für explizite Erklärungen, wobei meine Auführungen, speziell für Anfänger, normalerweise recht ausführlich sind. Du hattest heute halt erstmal Pech damit
-
Die Warnung im Log ist nicht mehr da ABER nach dem Heizen wird nun auch nicht mehr im DP Status_WP -nicht aktiv- gesetzt. Es steht nun immer Heizen im DP.
-
@th-g
Da die Variable "Wert" nur einmalig beim Trigger eingelesen wird ändert sie sich innerhalb der durch "Ausführen Intervall alle 1 Sek" aufgespannten Schleife nie und somit kann der 'sonst' Fall der Abfrage nie eintreten.Habe die Erklärung von fastfoot so verstanden, dass der Trigger beim Ausschalten genau ein mal kommt und hier die Variable "Wert" richtig eingelesen wird . Somit sollte es ja gehen, wenn du in deinem letzten Blockly die Intervall-Schleife mit Stop Befehl weglässt. Der Trigger kommt ein mal, wenn Heizen eingeschaltet wird und ein mal beim Ausschalten. Der DP wird dann dementsprechende gesetzt .
Dann auch probieren ob beim Trigger "wurde geändert" oder "wurde aktualisiert" funktioniert. -
Auch wenn ich den Intervall rausnehmen geht es nicht.
Das Problem ist immer noch, dass ein leeres Feld kein Trigger ist.
@alcalzone said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
@TH-G Du solltest zusätzlich vor dem Ausführen des Intervalls einen Stop erzwingen. Sonst kann es sein, dass Kopien des Intervalls laufen, die sich mit der Zeit anhäufen.
@AlCalzone Kannst du bitte helfen und deine Anmerkung vertiefen? Wie meintest du das mit dem Stop?
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Die Warnung im Log ist nicht mehr da ABER nach dem Heizen wird nun auch nicht mehr im DP Status_WP -nicht aktiv- gesetzt. Es steht nun immer Heizen im DP.
Gestern war wohl nicht mein Tag Ich habe das Intervall total übersehen und bin deshalb davon ausgegangen, dass auch getriggert wird wenn von True auf Nichts geändert wird. Ich denke dass das ein Fehler im JS-Adapter ist. Es ist richtig, dass Wert sich innerhalb des Intervalls nicht ändert, da er an den Trigger gekoppelt ist.
Ich würde es jetzt so wie ursprünglich belassen und mit den Fehlern leben bis sie gefixt sind. Ich kann versuchen, später eine JS-Funktion zu schreiben, die du als Workaround verwenden könntest
-
Das wäre sehr gut und würde mich freuen, wenn du eine Übergangslösung hast.
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Das wäre sehr gut und würde mich freuen, wenn du eine Übergangslösung hast.
So, neuer Versuch, die JS-Funktion prüft ob der Status existiert, falls nicht wird Falsch zurückgegeben, falls er existiert wird der tatsächliche Wert geliefert(der in diesem Fall eigentlich immer Wahr sein sollte), insofern ist die Funktion aufgebauscht.
Die Datenpunkte und die Variable id im Skript musst du natürlich noch anpassen
-
Danke aber wie bekomme ich das importiert?
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Danke aber wie bekomme ich das importiert?
- Hier den Import anklicken und kopieren
- Blockly erzeugen
- oben rechts linkes Icon importieren mit CTRL-V
-
Ja genau so habe ich es gemacht aber es will nicht rein mit der Meldung -Fehler beim Importieren-
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Ja genau so habe ich es gemacht aber es will nicht rein mit der Meldung -Fehler beim Importieren-
Dann musst du darauf achten, den kompletten Text zu kopieren, der ist in Ordnung, gerade probiert
-
Ja das ist mir bekannt. Ein anderer Import geht. Ich lösche jetzt und machen ein neues Blockly.
Das wird als Wert angezeigt, wenn ich einen DP hinzufügen will.
Mit einem neuen Blockly geht es nun warum auch immer.
Nun musst du mir unbeholfene Anwender noch sagen, was ich wo eintragen muss. Der Falls Teil ist mir soweit klar.
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Ja das ist mir bekannt. Ein anderer Import geht. Ich lösche jetzt und machen ein neues Blockly.
Das wird als Wert angezeigt, wenn ich einen DP hinzufügen will.
Mit einem neuen Blockly geht es nun warum auch immer.
Nun musst du mir unbeholfene Anwender noch sagen, was ich wo eintragen muss. Der Falls Teil ist mir soweit klar.
Da wo steuere Status_WP steht klickst du jeweils drauf und wählst deinen tatsächlichen Datenpunkt aus. Bei setze ID musst du den Pfad händisch eingeben oder aus dem Objektbaum kopieren(rechts neben der ID dort klicken)
-
Meinst du das jetzt so: