NEWS
Datenpunkte triggern sich gegenseitig
-
Hallo zusammen!
Ich habe folgendes Problem: Ich benötige insgesamt 7 Datenpunkte: jeweils einen für einen der drei RGB-Kanäle mit einem Wertebereich von 0-255, jeweils einen der frei RGB-Kanäle mit dem prozentualen Wert von 0-100 und einmal den vollständigen RGB-Wert im HEX-Format. Beispiel: Rot: 255, 100%; Grün: 25, 9.8%; Blau: 33, 13%; RGB: #FF1921
Ich habe nun ein Skript erstellt, dass diese 7 Datenpunkte überwacht und bei Aktualisierung umrechnet und abhängige Datenpunkte aktualisiert. Ändere ich z.B. Grün auf 100% wird der grüne RGB-Wert auf 255 und der HEX-Wert auf FFFF21 gesetzt. Bei Änderungen am HEX-Wert ebenfalls. Allerdings habe ich das Problem, dass durch die Änderungen der anderen Datenpunkte diese ebenfalls triggern und somit findet das kein Ende. Eine Änderung löst 2 Trigger aus, diese zwei wieder jeweils 2 und so weiter. Wie erreiche ich es nun, dass bei einer Änderung durch das Skript der Trigger feuert? -
@Zeebo
Das ist ganz einfach. Du triggers auf Wertänderungen „mit acknowledge“, und setzt die Updates ohne acknowledge, wenn deine scripte die Werte umrechnen.A.
-
@Asgothian
Verstehe ich jetzt nicht ganz.
Hier mal der Code:
Wenn ich zb. den Datenpunkt dp_r ändere, wird u.a. mit setHex() der Hex-Wert aktualisiert, dadurch wird dann dp_hex getriggert, in dem wieder die drei States gesetzt werden. Das soll ja nicht.
Das mit dem ACK habe ich wohl noch nicht ganz verstanden (auch nicht anhand der Doku) -
@Zeebo sagte:
durch die Änderungen der anderen Datenpunkte diese ebenfalls triggern und somit findet das kein Ende.
Das kann man mit fromNe in jedem Trigger verhindern. Hier für den ersten Trigger:
const js = 'system.adapter.javascript.0'; on({id: dp_r, change: "ne", fromNe: js}, function (obj) {