NEWS
Triggern von Scripten
-
Hallo zusammen,
wenn in einem Script ein Trigger angegeben ist - bedeutet das, dass bei Erfüllung dieses Triggers das Script ausgeführt wird?
Oder anders gefragt: kann ich die Zustandsänderung eines Objektes direkt als Trigger zum Start eines Scriptes benutzen?
Hintergrund:
Ich stelle gerade von CCU1 auf CCU2 um. Die beiden laufen derzeit parallel. Es gibt einige Systemvariablen, die Aktionen auslösen, die in beiden CCU's laufen sollen. Dazu möchte ich - bis die CCU1 ausrangiert wird - einige Systemvariablen von der CCU1 auf die CCU2 "spiegeln".
Folgenden Script habe ich mir dazu im javascript-adapter geschrieben:
var value1; console.log('script SV_Anwesend läuft'); on({id: "hm-rega.0.41913"/*Anwesend*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; value1 = getState("hm-rega.0.41913").val; }); setState("hm-rega.1.1881"/*Anwesend*/, value1, true);Das Script ist aktiv.
Ich dachte, das Script läuft, sobald die SV Anwesend in der CCU1 (hm-rega.0) ihren Status ändert. Das tut es aber nicht.
Wo mache ich einen (Denk)Fehler?
-
Dein Script läuft schon es macht nur einfach nix. Die Log Meldung taucht nur auf wenn dein Script im Javascript adapter aktiviert wird und dann nicht mehr. Das gleiche gilt für dein setState am ende.
Das was innerhalb deiner Subscription ist wird ausgeführt.
Dein Script muss dann so aussehen:
var value1; on({id: "hm-rega.0.41913"/*Anwesend*/, change: "ne"}, function (obj) { console.log('script SV_Anwesend läuft'); var value = obj.state.val; var oldValue = obj.oldState.val; value1 = getState("hm-rega.0.41913").val; setState("hm-rega.1.1881"/*Anwesend*/, value1, true); }); -
Hallo zusammen,
wenn ich die Skripte richtig lese, dann wird die Anwesenheit auf CCU2 auf true gesetzt, wenn sich die Anwesenheit auf CCU1 ändert. Also bei jeder Änderung, auch bei Änderung zu false.
CCU1 auf die CCU2 "spiegeln". `
Laut iobroker.javascript-Github readme ist die einfachste Art, zwei States zu synchronisieren doch so (vom ersten zum zweiten State):on("hm-rega.0.41913"/*Anwesend*/, "hm-rega.1.1881"/*Anwesend*/); ````oder für mehr Übersichtlichkeit:var ccu1anwesenheit = "hm-rega.0.41913"/Anwesend/,
ccu2anwesenheit = "hm-rega.1.1881"/Anwesend/;on(ccu1anwesenheit, ccu2anwesenheit);
Gruß Pix
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden