NEWS
Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg
-
@AlCalzone sagte in VIS nervt aber warum? Trigger DP ohne Wert?:
@FredF Wenn der State schon existiert, bringt eine Änderung des Default-Wert nichts mehr. Außerdem ist der String
"null"
ungleichnull
.Ok. Einen Default-Wert kann aber beim manuellen Anlegen eines Objekts dennoch nicht mitgeben werden.
-
-
@AlCalzone
Es gab schon mal einen Thread in dem ein State nicht true/false hatte sondern nur true/"leer"
Ich glaube da ging es um KNX - bin mir aber nicht sicher.Ich glaube auch da war ein Triggern nicht möglich.
@TH-G
Was hat das ganze mit dem Titelvis nervt
zu tun? -
Das war der Auslöser mit VIS, dass es aber nun doch so ein anderes Problem ist, war nicht abzusehen. Hatte die Überschrift schon angepasst und werde das nun nochmal machen.
-
@TH-G sagte in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Der History Adapter überfordert mich leider, sorry
Ist nicht schwer... Neben dem Datenpunkt, den du überwachen willst (in deinem Fall die 3) ganz rechts auf den Schraubenschlüssel klicken.
Dort dann den Haken bei "aktiviert" setzen. Standardeinstellungen kannst du sonst lassen.
Im Tab "Tabelle" siehst du dann die Änderungen:
-
History Adapter schau ich mir dann nochmal an
Ich habe es gerade nochmals genau beobachtet
Ich habe nun für die drei DP eigene Blocklys angelegt wie
on({id: "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG"/*WARMWASSERBEREITUNG*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG").val == true) { setState("0_userdata.0.Status_WP"/*Status_WP*/, 'Warmwasser', true); } else { setState("0_userdata.0.Status_WP"/*Status_WP*/, 'nicht aktiv', true); } });
Es wird wenn "True" in STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG steht auch der Text in meinen DP für VIS geschrieben.
Ändert sich aber der Status von True auf "Nichts" wird im Logikmodul nicht "Sonst" ausgeführt.
Im Log steht nur das:
javascript.0 2020-06-29 10:02:00.303 info (1584) script.js.common.Tecalor_Betriebsart_Aktuell_Warmwasser: registered 1 subscription and 0 schedules
javascript.0 2020-06-29 10:02:00.299 info (1584) Start javascript script.js.common.Tecalor_Betriebsart_Aktuell_Warmwasser -
@TH-G Versuch es doch mal so...
on({id: "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG"/*WARMWASSERBEREITUNG*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var tmp = "nicht aktiv"; if (getState("stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG").val == true) { tmp = "Warmwasser"; } setState("0_userdata.0.Status_WP"/*Status_WP*/, tmp, true); });
-
@TH-G Ich glaube ich weiß was das Problem ist.
Der Adapter nutzt die expire-Funktion, um states automatisch nach gewisser Zeit zurück (auf null) zu setzen. Scheint als bekommt der JS-Adapter diese Änderung nicht mit. Ich hör mich mal um, was man da tun kann.Workaround wäre tatsächlich ein Intervall zusätzlich zum Trigger.
-
-
Äääähm Leute ... bitte baut mal das getState da aus aus dem Trigger!
Wenn ein "on" Trigger triggert kann es sein das "getState" noch den alten Wert hat. Immer das übergebene State object nutzen!
Also:
on({id: "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.WARMWASSERBEREITUNG"/*WARMWASSERBEREITUNG*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var tmp = "nicht aktiv"; if (value == true) { tmp = "Warmwasser"; } setState("0_userdata.0.Status_WP"/*Status_WP*/, tmp, true); });
-
@apollon77 sagte in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Äääähm Leute ... bitte baut mal das getState da aus aus dem Trigger!
Wenn ein "on" Trigger triggert kann es sein das "getState" noch den alten Wert hat. Immer das übergebene State object nutzen!
Hallo, bisher hörte ich in Diskussionen immer, dass der State dann evtl schon einen neuen Wert hat und man es deshalb unterlassen sollte, mal davon abgesehen dass man eh den Wert, der schon mitgeliefert wird, nehmen sollte. Könntest du den Sachverhalt bitte etwas näher erläutern? Im Moment des GetState() wurde der Triggerwert doch schon ermittelt, wie kann man da noch den alten Wert bekommen? Danke!
-
@fastfoot Sagen wir es mal so: Er kann einen "anderen" wert haben
-
So funktioniert es jetzt:
-
@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.
-
Hallo, ich muss das Thema nochmals aktivieren.
Ich bekommen massenweise Warnungen im Log und ich würde das gerne lösen.
So sieht es derzeit aus:
Ich brauche bitte nochmals Hilfe was ich tun kann.
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Ich brauche bitte nochmals Hilfe was ich tun kann.
Im Tab Log findest du mehr Infos, welche sind das? Ausserdem solltest du, anstatt den Wert von Heizung nochmals auszulesen, den tatsächlichen Wert benutzen, zu finden im Trigger Block.
-
Hier der Log:
avascript.0 2021-01-15 11:53:02.849 warn (2355) at processTimers (internal/timers.js:497:7)
javascript.0 2021-01-15 11:53:02.849 warn (2355) at listOnTimeout (internal/timers.js:554:17)
javascript.0 2021-01-15 11:53:02.849 warn (2355) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1982:34)
javascript.0 2021-01-15 11:53:02.848 warn (2355) at Object.<anonymous> (script.js.common.Tecalor_Betriebsart_Aktuell_Heizen:8:9)
javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)Was du mit dem tatsächlichen Wert meinst verstehe ich nicht. Wenn Heizung aktiv ist steht in dem Feld true wenn nicht steht dort nichts
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Hier der Log:
javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)Was du mit dem tatsächlichen Wert meinst verstehe ich nicht. Wenn Heizung aktiv ist steht in dem Feld true wenn nicht steht dort nichts
mit tatsächlicher Wert meinte ich den Wert zum Zeitpunkt des Auslösens des Triggers. Wie du ihn abfrägst habe ich ja im Bild gezeigt.
-
Sorry ich weiß jetzt nicht was unklar ist aber der Wert im DP Heizen ist "true" oder ein leeres Feld.
Was willst du mir bitte sagen?
-
@th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:
Sorry ich weiß jetzt nicht was unklar ist aber der Wert im DP Heizen ist "true" oder ein leeres Feld.
Was willst du mir bitte sagen?
ich rede von deinem Blockly, wieviele Werte genau fragst du da ab? Von genau diesem einen Wert rede ich und habe eine Alternative genannt es besser zu machen