NEWS
[Gelöst] [Blockly] Rollladen mit Lux wert fahren
-
// Bei Sonnenuntergang (kleiner 4 Lux) on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert'); if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 4 ) { console.log('*** Jalousie runter auf wahr setzen'); setState('javascript.0.Rollladen_Hoch/Runter', true, true); // aktualisiere Rolladen_Hoch/Runter mit wahr } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); setState('javascript.0.Rollladen_Hoch/Runter', false, true); // aktualisiere Rolladen_Hoch/Runter mit unwahr on('javascript.0.Rollladen_Hoch/Runter', function(dp) { if(dp.state.val) Jalousie_runter(); }); } }); -
Hab es jetzt so weiß nicht ob es jetzt so richtig ist.
Funktioniert noch nicht und das kommt in der Ausgabe.
16:03:27.379
[info]
javascript.0 script.js.Rollladen_.Jalousien_ändern_script_Lux: *** Lux hat sich aktualisiert
16:03:27.380
[info]
javascript.0 script.js.Rollladen_.Jalousien_ändern_script_Lux: *** Jalousie runter auf wahr setzen
16:03:27.380
[warn]
javascript.0 at Object. (script.js.Rollladen_.Jalousien_ändern_script_Lux:52:7)
-
@Homer1976:// Status setzen (Standard) lvJalBad = 100; lvJalFlur = 100; lvJalWohnrechts = 100; lvJalWohnlinks = 100; lvJalKueche = 100; ```` `Man sollte keine Variablen ohne das Schlüsselwort var deklarieren. Richtig:
// Status setzen (Standard) var lvJalBad = 100, lvJalFlur = 100, lvJalWohnrechts = 100, lvJalWohnlinks = 100, lvJalKueche = 100;Das gilt auch für die anderen Funktionen.
-
@Homer1976:setState('javascript.0.Rollladen_Hoch/Runter', false, true); // aktualisiere Rolladen_Hoch/Runter mit unwahr on('javascript.0.Rollladen_Hoch/Runter', function(dp) { if(dp.state.val) Jalousie_runter(); }); } }); ```` `Nein, den Trigger mit dem Funktionsaufruf ganz an das Ende des Skripts setzen !
-
// Bei Sonnenuntergang (kleiner 4 Lux) on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert'); if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 4 ) { console.log('*** Jalousie runter auf wahr setzen'); setState('javascript.0.Rollladen_Hoch/Runter', true, true); // aktualisiere Rolladen_Hoch/Runter mit wahr } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); setState('javascript.0.Rollladen_Hoch/Runter', false, true); // aktualisiere Rolladen_Hoch/Runter mit unwahr } }); // ----------------------------------------------- // Aktionen // ----------------------------------------------- function Jalousie_oben_hoch() { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie oben hoch"); // Status setzen (Standard) var lvJalBad = 100; var lvJalFlur = 100; var lvJalWohnrechts = 100; var lvJalWohnlinks = 100; var lvJalKueche = 100; // Status setzen (Ausnahmen) if (getState("javascript.0.Jalousie.Sonnenschutz"/*Jalousie.Sonnenschutz*/).val === true) { lvJalWohnrechts = 0; lvJalWohnlinks = 0; } // Ausführen setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer.LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); } function Jalousie_unten_hoch() { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie unten hoch"); // Status setzen (Standard) var lvJalKZ = 100; var lvJalHWR = 100; var lvJalBad = 100; var lvJalFlur = 100; var lvJalWohnrechts = 100; var lvJalWohnlinks = 100; var lvJalBalkontuer = 100; var lvJalSZ = 100; var lvJalKueche = 100; var lvJalBadoben = 1; // Status setzen (Ausnahmen) if (getState("javascript.0.Jalousie.Sonnenschutz"/*Jalousie.Sonnenschutz*/).val === true) { lvJalWohnrechts = 40; lvJalWohnlinks = 40; if(getState("hm-rpc.2.0007D7099CF99C.1.STATE"/*Tür Flur.STATE*/).val == 2) { lvJalFlur = 60; } else { lvJalWohnrechts = 40; } lvJalWohnlinks = 40; } // Ausführen setState("hm-rpc.1.MEQ0735305.1.LEVEL"/*Rollladen Kinderzimmer .LEVEL*/, lvJalKZ); setState("hm-rpc.1.MEQ0735367.1.LEVEL"/*Rollladen Abstellraum .LEVEL*/, lvJalHWR); setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer.LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735466.1.LEVEL"/*Rollladen Balkontür Küche .LEVEL*/, lvJalBalkontuer); setState("hm-rpc.1.MEQ0735467.1.LEVEL"/*Rollladen Schlafzimmer .LEVEL*/, lvJalSZ); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); setState("hm-rpc.1.LEQ1211399.3.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); } function Jalousie_runter () { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie runter"); // Status setzen (Standard) var lvJalKZ = 0; var lvJalHWR = 0; var lvJalBad = 0; var lvJalFlur = 0; var lvJalWohnrechts = 0; var lvJalWohnlinks = 0; var lvJalBalkontuer = 0; var lvJalSZ = 0; var lvJalKueche = 0; var lvJalBadoben = 1; // Status setzen (Ausnahmen) // Tür Flur Sperre (0 = geschlossen, 1 = gekippt, 2 = offen) if(getState("hm-rpc.2.0007D7099CF99C.1.STATE"/*Tür Flur.STATE*/).val == 2) { lvJalFlur = 100; } // Ausführen setState("hm-rpc.1.MEQ0735305.1.LEVEL"/*Rollladen Kinderzimmer .LEVEL*/, lvJalKZ); setState("hm-rpc.1.MEQ0735367.1.LEVEL"/*Rollladen Abstellraum .LEVEL*/, lvJalHWR); setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer .LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735466.1.LEVEL"/*Rollladen Balkontür Küche .LEVEL*/, lvJalBalkontuer); setState("hm-rpc.1.MEQ0735467.1.LEVEL"/*Rollladen Schlafzimmer .LEVEL*/, lvJalSZ); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); setState("hm-rpc.1.LEQ1211399.2.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); on('javascript.0.Rollladen_Hoch/Runter', function(dp) { if(dp.state.val) Jalousie_runter(); }); } -
Oder mache es ohne den Datenpunkt 'javascript.0.Rollladen_Hoch/Runter', sondern mit einer Skriptvariablen Rollos_unten
// Bei Sonnenuntergang (kleiner 4 Lux) var Rollos_unten = false; on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert'); if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 4 ) { console.log('*** Jalousie runter auf wahr setzen'); if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_unten = true; } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); Rollos_unten = false; } }); -
@Homer1976:so wie als letztes beschrieben funktioniert es Klasse. `
Das freut mich für Dich.
@Homer1976:Wenn es nicht passt nimm es mir nicht übel. `
Warum sollte ich ? Jeder hat mal angefangen.
@Homer1976:setState("hm-rpc.1.LEQ1211399.2.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); on('javascript.0.Rollladen_Hoch/Runter', function(dp) { if(dp.state.val) Jalousie_runter(); }); } ```` `Für den Fall, dass es woanders gebraucht wird: Der Trigger muss außerhalb der Funktion, die aufgerufen wird, deklariert werden.
setState("hm-rpc.1.LEQ1211399.2.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); } // Ende der Funktion on('javascript.0.Rollladen_Hoch/Runter', function(dp) { if(dp.state.val) Jalousie_runter(); }); -
@Homer1976:das Script löst jetzt bei jeder Aktualisierung des Helligkeitsensor immer wieder aus und die Aktoren schalten dann jedes mal. `
Ganau das soll durch die Skriptvariable Rollos_unten verhindert werden, solange die Helligkeit nicht wieder über 100 steigt.if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_unten = true;Oder verwendest du die Variante mit dem Datenpunkt 'javascript.0.Rollladen_Hoch/Runter' ? Dann soll dies die Triggerung "bei Änderung" verhindern.
-
// Bei Sonnenuntergang (kleiner 4 Lux) var Rollos_unten = false; on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert'); if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 3 ) { console.log('*** Jalousie runter auf wahr setzen'); if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_runter = true; } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); Rollos_unten = false; } }); // ----------------------------------------------- // Aktionen // ----------------------------------------------- function Jalousie_oben_hoch() { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie oben hoch"); // Status setzen (Standard) var lvJalBad = 100; var lvJalFlur = 100; var lvJalWohnrechts = 100; var lvJalWohnlinks = 100; var lvJalKueche = 100; // Status setzen (Ausnahmen) if (getState("javascript.0.Jalousie.Sonnenschutz"/*Jalousie.Sonnenschutz*/).val === true) { lvJalWohnrechts = 0; lvJalWohnlinks = 0; } // Ausführen setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer.LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); } function Jalousie_unten_hoch() { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie unten hoch"); // Status setzen (Standard) var lvJalKZ = 100; var lvJalHWR = 100; var lvJalBad = 100; var lvJalFlur = 100; var lvJalWohnrechts = 100; var lvJalWohnlinks = 100; var lvJalBalkontuer = 100; var lvJalSZ = 100; var lvJalKueche = 100; var lvJalBadoben = 1; // Status setzen (Ausnahmen) if (getState("javascript.0.Jalousie.Sonnenschutz"/*Jalousie.Sonnenschutz*/).val === true) { lvJalWohnrechts = 40; lvJalWohnlinks = 40; if(getState("hm-rpc.2.0007D7099CF99C.1.STATE"/*Tür Flur.STATE*/).val == 2) { lvJalFlur = 60; } else { lvJalWohnrechts = 40; } lvJalWohnlinks = 40; } // Ausführen setState("hm-rpc.1.MEQ0735305.1.LEVEL"/*Rollladen Kinderzimmer .LEVEL*/, lvJalKZ); setState("hm-rpc.1.MEQ0735367.1.LEVEL"/*Rollladen Abstellraum .LEVEL*/, lvJalHWR); setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer.LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735466.1.LEVEL"/*Rollladen Balkontür Küche .LEVEL*/, lvJalBalkontuer); setState("hm-rpc.1.MEQ0735467.1.LEVEL"/*Rollladen Schlafzimmer .LEVEL*/, lvJalSZ); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); setState("hm-rpc.1.LEQ1211399.3.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); } function Jalousie_runter () { // Abbruch bei deaktivierter Automatik if (getState("hm-rega.0.55181"/*Jalousie Automatik*/).val === false) { return; } log("Jalousie runter"); // Status setzen (Standard) var lvJalKZ = 0; var lvJalHWR = 0; var lvJalBad = 0; var lvJalFlur = 0; var lvJalWohnrechts = 0; var lvJalWohnlinks = 0; var lvJalBalkontuer = 0; var lvJalSZ = 0; var lvJalKueche = 0; var lvJalBadoben = 1; // Status setzen (Ausnahmen) // Tür Flur Sperre (0 = geschlossen, 1 = gekippt, 2 = offen) if(getState("hm-rpc.2.0007D7099CF99C.1.STATE"/*Tür Flur.STATE*/).val == 2) { lvJalFlur = 100; } // Ausführen setState("hm-rpc.1.MEQ0735305.1.LEVEL"/*Rollladen Kinderzimmer .LEVEL*/, lvJalKZ); setState("hm-rpc.1.MEQ0735367.1.LEVEL"/*Rollladen Abstellraum .LEVEL*/, lvJalHWR); setState("hm-rpc.1.MEQ0735410.1.LEVEL"/*Rollladen Badezimmer .LEVEL*/, lvJalBad); setState("hm-rpc.1.MEQ0735420.1.LEVEL"/*Rollladen Flur .LEVEL*/, lvJalFlur); setState("hm-rpc.1.MEQ0735434.1.LEVEL"/*Rollladen Wohnzimmer rechts .LEVEL*/, lvJalWohnrechts); setState("hm-rpc.1.MEQ0735459.1.LEVEL"/*Rollladen Wohnzimmer links .LEVEL*/, lvJalWohnlinks); setState("hm-rpc.1.MEQ0735466.1.LEVEL"/*Rollladen Balkontür Küche .LEVEL*/, lvJalBalkontuer); setState("hm-rpc.1.MEQ0735467.1.LEVEL"/*Rollladen Schlafzimmer .LEVEL*/, lvJalSZ); setState("hm-rpc.1.MEQ0735469.1.LEVEL"/*Rollladen Fenster Küche .LEVEL*/, lvJalKueche); setState("hm-rpc.1.LEQ1211399.2.STATE"/*Rollladen Fenster Bad oben .STATE*/, lvJalBadoben); } -
[code// Bei Sonnenuntergang (kleiner 4 Lux)
var Rollos_unten = false;
on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
console.log('*** Lux hat sich aktualisiert');
if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 3 ) {
console.log('*** Jalousie runter auf wahr setzen');
if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos
Rollos_unten = true;
} else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) {
console.log('*** Jalousie runter auf unwahr setzen');
Rollos_unten = false;
}
});
]
-
// Bei Sonnenuntergang (kleiner 4 Lux) var Rollos_unten = false; on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert'); if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 3 ) { console.log('*** Jalousie runter auf wahr setzen'); if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_unten = true; } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); Rollos_unten = false; } }); -
Ui jetzt habt ihr soviel in geschrieben leider kein Blockly Skript ;) dann muss ich mal die Tage etwas Zeit investieren um es zu verstehen.
Gruß Christian
-
@Homer1976:Schaltet trotzdem. ? `
Wirklich ? Dann logge mal die Skriptvariable mit:// Bei Sonnenuntergang (kleiner 4 Lux) var Rollos_unten = false; on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('*** Lux hat sich aktualisiert ' + Rollos_unten); // und Anzeige Variable if (getState("hm-rpc.1.NEQ0322210.1.LUX").val < 3 ) { console.log('*** Jalousie runter auf wahr setzen'); if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_unten = true; } else if (getState("hm-rpc.1.NEQ0322210.1.LUX").val > 100) { console.log('*** Jalousie runter auf unwahr setzen'); Rollos_unten = false; } });
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login