NEWS
[Gelöst] [Blockly] Rollladen mit Lux wert fahren
-
@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 !
-
Für mich ist das alles absolutes Neuland nutze es erst 1 Monat.
Hab es jetzt mal so angepasst wie ich es jetzt verstanden habe.
Wenn es nicht passt nimm es mir nicht übel. :shock:
-
// 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; } });
-
Hallo Paul,
so wie als letztes beschrieben funktioniert es Klasse.
Ich Danke Dir ein weiteres mal, auf dich ist wie immer Verlass.
Wünsche Dir noch einen schönen Sonntag
Grüße Steffen
-
@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(); });
-
Hab meine Velux Rollladen über einen HM-LC-Sw4-WM am laufen.
Kann ich den als Schalter so stehen lassen. ?
-
Hallo Paul,
das Script löst jetzt bei jeder Aktualisierung des Helligkeitsensor immer wieder aus und die Aktoren schalten dann jedes mal.
Gruß Steffen
-
@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); }
-
So ist es jetzt.
-
Da warst Du zu schnell: Ich hatte einen Fehler gepostet, den ich vielleicht 1 Minute später korrigiert habe: Zeile 11
Rollos_runter = true;
ändern in
Rollos_unten = true;
-
[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;
}
});
]
-
Schaltet trotzdem. ?
-
// 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; } });
-
Kommando zurück hab es nochmal neu gestartet mal die nächsten 2 Aktualisierungen abgewartet jetzt läuft es sauber durch fragt ab aber schaltet nicht.
-
@Homer1976:fragt ab aber schaltet nicht. `
Dann kannst Du noch überflüssige Sachen (die nur die CPU unnötig belasten) rauswerfen.// Bei Sonnenuntergang (kleiner 4 Lux) var Rollos_unten = false; on({id: 'hm-rpc.1.NEQ0322210.1.LUX', change: "ne"}, function (obj) { // console.log('*** Lux hat sich aktualisiert ' + Rollos_unten); // und Anzeige Variable if (obj.state.val < 3 ) { // console.log('*** Jalousie runter auf wahr setzen'); if(!Rollos_unten) Jalousie_runter(); // Funktionsaufruf zum Runterfahren der Rollos Rollos_unten = true; } else if (obj.state.val > 100) { // console.log('*** Jalousie runter auf unwahr setzen'); Rollos_unten = false; } });