NEWS
Schalten einer Weihnachtsbeleuchtung
-
Hallo, ich bräuchte bitte wieder einmal Hilfe:
Ich habe zwei Steckdosen für Weihnachtsbeleuchtungen (1x Christbaum-Aussen, und 1x Weihnachtsbeleuchtung-Innen).
Zusätzlich habe ich einen Datenpunkt Weihnachtsbeleuchtung erstellt sowie eine Ein/Aus-Schaltfläche in VIS.Wenn ich nun auf einer der beiden Steckdosen direkt einschalte, schaltet automatisch die zweite mit ein und der Datenpunkt wird auf true gesetzt. Schalte ich auf der Dose eine aus, dann bleibt die zweite Dose eingeschaltet und der Datenpunkt unverändert. Schalte ich auch händisch die zweite Dose aus, dann wird auch der Datenpunkt auf false gesetzt.
Soweit passt mir das auch.Wenn ich jetzt aber über VIS die dafür vorgesehene Schaltfläche verwende, dann klappt nur das einschalten. Über die VIS-Schaltfläche sollten immer beide Dosen ein- bzw. ausgeschaltet werden. Deshalb setze ich über VIS den eingerichteten Datenpunkt auf true bzw. false.
Wie kann ich auch das Ausschalten über VIS erledigen.
Die bisherigen Blockly scripts sehen so aus:Vielleicht kann mir jemand helfen. Vielen Dank.
-
@manfredh-1 sagte: Wie kann ich auch das Ausschalten über VIS erledigen.
Das Schalten in VIS erzeugt eine unbestätigte Änderung.
Immer nur einen Trigger pro Datenpunkt verwenden! -
Ja, das mit der unbestätigten Änderung war mir klar.
Ich hab nun folgendes gemacht. Alle Steckdosen sind in Funktion "Weihnachtsbeleuchtung" zusammengefasst. Über VIS steuer ich einen Datenpunkt. Wenn dieser auf true steht werden alle Steckdosen der Funktion eingeschaltet, bei false ausgeschaltet.Drücke ich auf irgendeiner Dose dein Einschalter dann wird mit dem nachfolgenden Script der Datenpunkt auf true gesetzt und somit wiederum alle Dosen eingeschalten mit dem vorherigen Script, welches den Datenpunkt abfragt.
Nur das ausschalten über die Dose funktioniert nicht, hier weiß ich absolut nicht weiter. Ich kann zwar alle Dosen händisch ausschalten, aber der Datenpunkt bleibt klarerweise auf true stehen und somit wird der Status im VIS falsch angezeigt.
Wie gesagt, kenn mich absolut noch nicht besonders aus auf iobroker. Lerne gerade immer mehr dazu....
-
@manfredh-1 sagte: Alle Steckdosen sind in Funktion "Weihnachtsbeleuchtung" zusammengefasst.
Sind es mehr als 2, so dass sich der Selektor und die Schleife lohnen?
Vorschlag für 2 Steckdosen:Wert (unter "Trigger"):
-
@manfredh-1 sagte: Nur das ausschalten über die Dose funktioniert nicht
Version zum Ein- und Ausschalten der Beleuchtung über VIS oder eine Steckdose:
-
@paul53 Super vielen Dank, ich lern immer wieder dazu.. Mit der zweiten Variante funktioniert es einwandfrei. Im nächsten Jahr brauch ich dann nur noch die zusätzlichen Steckdosen der Funktion hinzufügen und alles läuft.
-
@paul53 Ich habe jetzt noch eine Frage:
Das schalten funktioniert jetzt ja sowohl über VIS als auch auch an einer Steckdose direkt.
Nun habe ich aber zusätzlich folgendes Blockly drinnen, damit um 22.35 Uhr die Weihnachtsbeleuchtung ausgeschaltet wird. Das macht sie auch, allerdings schaltet sie 4x aus und 4x ein hintereinander, erst dann bleibst sie auf aus.
Was muss ich ändern, damit das nicht passiert. Angesteuert wird ebenfalls der Datenpunkt, den ich auch über VIS schalte. -
@manfredh-1 sagte: Angesteuert wird ebenfalls der Datenpunkt, den ich auch über VIS schalte.
Dann muss auch das Verhalten gleich sein. Poste mal vom nachgebauten Blockly den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
-
Hallo, hier der Code. Hoffe ich hab das richtig exportiert.
var wbl, id_wbl; schedule({astro: "sunset", shift: 0}, async function () { setState("0_userdata.0.Weihnachtsbeleuchtung"/*Weihnachtsbeleuchtung*/, true); }); schedule("35 22 * * *", async function () { setStateDelayed('0_userdata.0.Weihnachtsbeleuchtung', false, false, parseInt(((0) || "").toString(), 10), false); }); wbl = Array.prototype.slice.apply($("[state.id=*](functions=Weihnachtsbeleuchtung)")); on({id: wbl, change: "ne", ack: true}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("0_userdata.0.Weihnachtsbeleuchtung"/*Weihnachtsbeleuchtung*/, (obj.state ? obj.state.val : ""), true); console.log((obj.state ? obj.state.val : "")); }); on({id: '0_userdata.0.Weihnachtsbeleuchtung', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; for (var id_wbl_index in wbl) { id_wbl = wbl[id_wbl_index]; if ((obj.state ? obj.state.val : "") != getState(id_wbl).val) { setStateDelayed(id_wbl, (obj.state ? obj.state.val : ""), false, parseInt(((0) || "").toString(), 10), false); } } });
-
@manfredh-1
Das sieht gut aus. Was liefert die Log-Ausgabe (Zeile 16) um 22:35 Uhr? -
@paul53
Im Log steht folgendes:2021-11-28 22:35:00.351 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:00.575 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:00.591 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:00.610 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:00.621 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:00.627 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:00.685 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:00.795 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:00.881 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:00.924 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:00.998 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false 2021-11-28 22:35:01.028 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: true 2021-11-28 22:35:01.088 - info: javascript.0 (1040) script.js.common.Weihnachtsbeleuchtung: false
-
@manfredh-1
Sehr eigenartig: Woher kommt das erste true um 22:35:00.351? Logge mal neben dem Wert auch die ID.Die folgenden true sind vermutlich eine Folge des ersten.
-
@paul53 said in Schalten einer Weihnachtsbeleuchtung:
Sehr eigenartig: Woher kommt das erste true um 22:35:00.351?
Ja, werde das ins Blockly einbauen und heute mal testen. Komisch ist, dass es gestern abend mit dem automatischen Ausschalten einwandfrei funktioniert hat, jedoch heute morgen beim händischen Ausschalten über die Schaltfläche in VIS einige Male hin- und hergeschalten hat.