NEWS
Datenpunkt aktualisieren - Bug?
-
Moin,
wenn ich mit diesem Blockly einen Datenpunkt aktualisiere...
hat der Datenpunkt anschließend den Status gesteuert bzw. ist rot.
Ich das schon immer so?
Ich dachte früher wurde der Datenpunkt aktualisiert und war weiß. -
@stenmic
Bin ich vor kurzem auch drüber gestolpert... "steure" mit einem Blockly nen wled Stripe. Datenpunkt ist auch weiß. Schau ich aber was aufgezeichnet wird, ist ack rot. -
Beim Setzen direkt im Objektbaum tritt bei mir das Verhalten nicht auf. Setze ich da den "Bestätigt" Haken, wird der neue Wert zuerst grün, und kurz danach weiß angezeigt..
-
@stenmic sagte in Datenpunkt aktualisieren - Bug?:
hat der Datenpunkt anschließend den Status gesteuert bzw. ist rot.
Sollte nicht so sein. Zeig mal bitte den generierten JavaScript-Code.
Und: Welche Version des Adapters nutzt Du?
-
@warp735 sagte in Datenpunkt aktualisieren - Bug?:
Bin ich vor kurzem auch drüber gestolpert... "steure" mit einem Blockly nen wled Stripe. Datenpunkt ist auch weiß. Schau ich aber was aufgezeichnet wird, ist ack rot.
Worüber? Das ist ja ein ganz anderes Thema, oder? Datenpunkte von anderen Adaptern sollte man ja immer nur unbestätigt setzen. Diese zu bestätigen liegt dann beim jeweiligen Adapter (in diesem Fall WLED).
-
@haus-automatisierung sagte: generierten JavaScript-Code.
Selektiert "aktualisiere":
setStateDelayed('Object ID', { val: true, ack: true }, parseInt(((0) || '').toString(), 10), false);
Im Tab "Objekte" wird als Ergebnis "Bestätigt: false" angezeigt. Es liegt also an setStateDelayed() mit der Übergabe des Status als Objekt. Auch mit Javascript getestet.
JS Version 8.4.2.EDIT: Diese Version funktioniert wie erwartet:
setStateDelayed("0_userdata.0.Test.+15_Min", false, true, 0);
-
@haus-automatisierung sagte in Datenpunkt aktualisieren - Bug?:
Datenpunkte von anderen Adaptern sollte man ja immer nur unbestätigt setzen
I know... klappt ja auch. Nur weggeschrieben wird was anderes
-
@haus-automatisierung
v8.4.2steuere:
setStateDelayed('Object ID', { val: true, ack: false }, parseInt(((0) || '').toString(), 10), false);
aktualisiere:
setStateDelayed('Object ID', { val: true, ack: true }, parseInt(((0) || '').toString(), 10), false);
Noch was ist mir bei den neueren Versionen aufgefallen...
Wenn man einen Baustein deaktiviert und ihn anschließend (irgendwann) wieder aktiviert,
aktualisiert sich manchmal (eher häufig) die Anschicht nicht (bleibt optisch deaktiviert).Erst wenn ich das Skript über den Reiter oben schließe und anschließend wieder zum bearbeiten öffne, passt die Ansicht.
Ist aber leider nicht reproduzierbar. -
@martinp sagte in Datenpunkt aktualisieren - Bug?:
Beim Setzen direkt im Objektbaum tritt bei mir das Verhalten nicht auf. Setze ich da den "Bestätigt" Haken, wird der neue Wert zuerst grün, und kurz danach weiß angezeigt..
das ar ja auch nicht das Thema.
Es geht um den schreibe-Block.Muss mal direkt nachsehen wie das jetzt bei mir nach dem letzten Update aussieht
-
@paul53 sagte in Datenpunkt aktualisieren - Bug?:
JS Version 8.4.2.
Danke! Daher die Frage. In der 8.4.0 habe ich das "expire" mit in den Block eingebaut und den Aufruf geändert. Gucke ich mir an.
-
@homoran sagte in Datenpunkt aktualisieren - Bug?:
Muss mal direkt nachsehen wie das jetzt bei mir nach dem letzten Update aussieht
Hab noch 8.3.1, da läuft alles normal
-
@haus-automatisierung sagte: das "expire" mit in den Block eingebaut
Wer braucht "expire" (einen Datenpunkt ohne Zustand nach Zeitablauf)?
-
@paul53 sagte in Datenpunkt aktualisieren - Bug?:
Wer braucht "expire" (einen Datenpunkt ohne Zustand nach Zeitablauf)?
Ich weiß nicht, frag mal warum das im js-controller implementiert wurde
-
@stenmic sagte in Datenpunkt aktualisieren - Bug?:
Noch was ist mir bei den neueren Versionen aufgefallen...
Wenn man einen Baustein deaktiviert und ihn anschließend (irgendwann) wieder aktiviert,
aktualisiert sich manchmal (eher häufig) die Anschicht nicht (bleibt optisch deaktiviert).
Erst wenn ich das Skript über den Reiter oben schließe und anschließend wieder zum bearbeiten öffne, passt die Ansicht.
Ist aber leider nicht reproduzierbar.Ist bei mir auch so.
-
@haus-automatisierung said in Datenpunkt aktualisieren - Bug?:
@paul53 sagte in Datenpunkt aktualisieren - Bug?:
Wer braucht "expire" (einen Datenpunkt ohne Zustand nach Zeitablauf)?
Ich weiß nicht, frag mal warum das im js-controller implementiert wurde
Ist m.W. nach schon lange drinnen.
Wenn ein Datenpunkt nicht regelmäßig neu befüllt wird geht dann der Wert auf null. Könnte Sinn machen wenn man z.B. die Zisternenpumpe laufen läßt solange ein Wasserstand gemeldet wird. Kommt kein Update dann kann die Pumpe abschalten. (Wobei ich hier externe Sicherheistschalter eher empfeheln würde) . Alternativ siht man dann in der vis, dass eben kein (aktueller) Wert verfügbar ist ohne dass man den last timestamp aufwerten muss -
@homoran sagte: Hab noch 8.3.1, da läuft alles normal
In Version 8.5.0 auch wieder.
-
@mcm1957 sagte in Datenpunkt aktualisieren - Bug?:
Ist m.W. nach schon lange drinnen.
Daher habe ich den Wunsch (das in Blockly auch zu ermöglichen) ja direkt aufgegriffen. Ziel ist ja langfristig schon, die Funktionalität aus JS möglichst komplett in Blockly zu haben.
-
@haus-automatisierung sagte in Datenpunkt aktualisieren - Bug?:
Daher habe ich den Wunsch (das in Blockly auch zu ermöglichen) ja direkt aufgegriffen.
Danke nochmals dafür. Durch den Wechsel von NibeUplink zu MyUlink habe ich jetzt mal versucht den Baustein anzuwenden. Um die Ventilatorgeschwindigkeit zu steuern muss ich ein Datenpunkt mit einem JSON beschreiben. Damit das nach der Verarbeitung nicht mehr drinsteht hab ich ihm ein "expire" mitgegeben. Ich hatte es so verstanden, dass dadurch der Wert des Datenpunktes nach der mitgegeben Zeit vom übergebenen JSON zu "null" wechselt, aber das macht er hier leider nicht. Ist das ein Bug oder habe ich das falsch verstanden? Blockly und JavaSrcipt-Pendant siehe unten:
// Ventilation on({ id: [].concat(['0_userdata.0.Datenpunkte.Heizung.Set.Ventilatorgeschwindigkeit']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; setStateDelayed('myuplink.0.Birkholz.Fontane.setData', { val: (['{ "47260": "',(obj.state ? obj.state.val : ''),'" }'].join('')), ack: false, expire: 30 }, parseInt(((0) || '').toString(), 10), false); });
-
@bommel_030 sagte in Datenpunkt aktualisieren - Bug?:
Ich hatte es so verstanden, dass dadurch der Wert des Datenpunktes nach der mitgegeben Zeit vom übergebenen JSON zu "null" wechselt
Das ist erstmal richtig - außer Du steuerst damit einen Datenpunkt an, welcher danach bestätigt wird (dann wird er ja wieder neu geschrieben, ohne expire). In dem Fall verstehe ich die Verwendung von expire dann nicht.
-
@haus-automatisierung sagte in Datenpunkt aktualisieren - Bug?:
In dem Fall verstehe ich die Verwendung von expire dann nicht.
In diesem Fall reiner Spieltrieb... Da du es (auch auf meinen Wunsch) eingebaut hast wollte ich das natürlich testen und Feedback geben. Danke für die Erklärung, klingt logisch. Sobald ich die Heizung umgemodelt hab mach ich mich mal an die GPS Daten für die das "aktualisiere" mit "expire" eigentlich gedacht war.