NEWS
[Gelöst]Zeit stellen für Rolladen im Vis
-
Morgen ich fahre meine Rolladen mit einer schedule Funktion.
weiß nur nicht ob es das richtige ist.
! schedule({hour: 6, minute: 0}, function () {
! // werktags, kein Feiertag -> unten hoch
! if(!isWeekend() && getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === false) {
! log("Werktag, Kein Feiertag: Fahre Jalousie hoch");
! Jalousie_unten_hoch();
! }
! }); -
morgen, nein nicht für das was ich vor habe.. Deine shedule ist quasi der Trigger zu welcher Uhrzeit du aktiv wirst…
Ich gehe davon aus, das du diese Zeiten in Vis ändern möchtest..
Im Prinzip kannst du das auch mit dem Widget welches ich nehmen würde machen...brauchst dann halt nur eins weil feste Uhrzeit..
Ich brauche 2 weil Zeitfenster..
Aber unser Problem ist hier die Zeit aus dem Widget ins Script zu bekommen.
Dazu habe ich 2 States angelegt. Du bräuchtest nur einen...
Anhand des States haben wir zumindest die Info aus der Vis im Script. Jetzt müssen wir es aber noch im Script verarbeiten..
so könnte der Anfang bei dir aussehen.
Ich versuche mir die Infos wie das realisiert werden kann anhand des Backitup script herauszufinden...
Steige da aber noch nicht so richtig durch....Das Script haben Profis geschrieben...
Ich stehe leider auch erst am Anfang..
createState('javascript.0.Rolladen.Hoch', {def: '07:00',type: 'string',name: 'Rolladen hoch '});
var RolloHoch = getState ('javascript.0.Rolladen.Hoch').val;
schedule({hour: 6, minute: 0}, function () { // dieser shedule müsste dann mit den Infos aus der Variable RolloHoch gefüllt werden
// werktags, kein Feiertag -> unten hoch
if(!isWeekend() && getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === false) {
log("Werktag, Kein Feiertag: Fahre Jalousie hoch");
Jalousie_unten_hoch();
}
});
-
schau mal hier in die Scripte:
Zum einen wird ein Wochenplan erstellt, aber man kann auch jeden Tag individuell aus vis ändern.
Ohne viel Aufwand würde ich aus dem Post die Lüftersteuerung (gleicher Thread) empfehlen.
viewtopic.php?f=21&t=3969#p69025
Grüße
Brati
-
Hallo Brati,
kannst du mir erklären wie ich es hier einbinde so läuft momentan mein Rolladenscript.
! schedule({hour: 6, minute: 0}, function () {
! // werktags, kein Feiertag -> unten hoch
! if(!isWeekend() && getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === false) {
! log("Werktag, Kein Feiertag: Fahre Jalousie hoch");
! Jalousie_unten_hoch();
! }
! });
! schedule({hour: 8, minute: 0}, function () {
! // wochenende oder Feiertag -> unten hoch
! if(isWeekend() || getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === true) {
! log("Wochende bzw. Feiertag: Fahre Jalousie hoch");
! Jalousie_unten_hoch();
! }
! });
! schedule({hour: 8, minute: 0}, function () {
! // werktags, kein Urlaub, kein Feiertag, -> oben hoch
! if (!isWeekend() && getState("hm-rega.0.55182"/Urlaub/).val === false && getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === false) {
! log("Werktag, kein Urlaub, kein Feiertag: Fahre Jalousie hoch");
! Jalousie_oben_hoch();
! }
! });
! schedule({hour: 8, minute: 0}, function () {
! // wochenende -> oben hoch
! if (isWeekend()) {
! log("Wochenende: Fahre Jalousie hoch");
! Jalousie_oben_hoch();
! }
! // Feiertag, werktags -> oben hoch
! if (!isWeekend() && getState("hm-rega.0.54978"/Feiertag_heute/).val === true) {
! log("Werktag, Feiertag: Fahre Jalousie hoch");
! Jalousie_oben_hoch();
! }
! // Urlaub, werktags -> oben hoch
! if (!isWeekend() && getState("hm-rega.0.55182"/Urlaub/).val === true) {
! log("Werktag, Urlaub: Fahre Jalousie hoch");
! Jalousie_oben_hoch();
! }
! }); -
@Homer1976:Hallo Brati,
kannst du mir erklären wie ich es hier einbinde so läuft momentan mein Rolladenscript. `
Nee :shock: . Ich würde das von Grund auf anders aufbauen und hat ganz schön viele Variablen drin. Aber wir können es ja versuchen:
-
pro Jalousiegruppe (unten/ oben) erstmal je ein Script.
-
soll es am Wochenende/ im Urlaub eine Standardzeit geben oder das auch variabel gestaltet sein?
Ohne es jetzt Testen zu können, wäre das mein Ansatz. Mittels Widget werden die Standardzeiten gesetzt und jeden Tag abgearbeitet. Um 01:02 Uhr wird geprüft, ob Werktag/ Urlaub usw. ist und dann auf 08.00 Uhr gesetzt.
var idTimerStunde ="Timer.Jalousie.Unten.Stunde"; var idTimerMinute ="Timer.Jalousie.Unten.Minute"; var idTimerAktiv ="Timer.Jalousie.Unten.Aktiv"; var TimerOn = "00 8 * * *"; // ##################### variable ZEITSTEUERUNG ##################### var x = new RegExp("\javascript\.0\.Timer\.Wecker\.Unten.+"); on({id:x,change:'ne',chance:'ne'}, function(obj) { clearSchedule(TimerOn); var id_Stunde = getState(idTimerStunde).val, id_Minute = getState(idTimerMinute).val; AufZeit = id_Minute + ' ' + id_Stunde + ' * * *'; log("Jalousie unten auf geändert auf: " + AufZeit); TimerOn = schedule(AufZeit, function(){ Jalousie_unten_hoch(); }); }); // // ##################### Werktag/ Urlaub prüfen um 01:02 Uhr jeden Tag ##################### schedule("02 01 * * *", function (){ if(isWeekend() || getState("feiertage.0.heute.boolean"/*Feiertag_heute*/).val === true) { log("Wochende bzw. Feiertag: Zeit unten eingestellt"); setState(idTimerStunde, 8); setState(idTimerMinute, 0); } }); createState(idTimerStunde); createState(idTimerMinute); createState(idTimerAktiv); // Timer bei Neustart setzen var Temp_Minute = getState(idTimerMinute).val; setState(idTimerMinute, 59); setState(idTimerMinute, Temp_Minute, true);
Vielleicht kannst du daraus was machen.
Grüße
Brati
-
-
Wenn es möglich ist wäre es sinnvoll für Woche und Wochenende einzurichten.
Hab mal alles so übernommen kann die Zeit auch einstellen Rolladen schalten aber zur gewünschten Zeit nicht.
-
So sieht mein gesamtes Script aus kannst ja mal darüber schauen.
! // –---------------------------------------------
! // Trigger
! // -----------------------------------------------
! var idTimerStunde ="Timer.Jalousie.Unten.Stunde";
! var idTimerMinute ="Timer.Jalousie.Unten.Minute";
! var idTimerAktiv ="Timer.Jalousie.Unten.Aktiv";
! var TimerOn = "00 8 * * ";
! // ##################### variable ZEITSTEUERUNG #####################
! var x = new RegExp("\javascript.0.Timer.Wecker.Unten.+");
! on({id:x,change:'ne',chance:'ne'}, function(obj) {
! clearSchedule(TimerOn);
! var id_Stunde = getState(idTimerStunde).val,
! id_Minute = getState(idTimerMinute).val;
! AufZeit = id_Minute + ' ' + id_Stunde + ' * * ';
! log("Jalousie unten auf geändert auf: " + AufZeit);
! TimerOn = schedule(AufZeit, function(){
! Jalousie_unten_hoch();
! });
! });
! // // ##################### Werktag/ Urlaub prüfen um 01:02 Uhr jeden Tag #####################
! schedule("02 01 * * ", function (){
! if(isWeekend() || getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === true) {
! log("Wochende bzw. Feiertag: Zeit unten eingestellt");
! setState(idTimerStunde, 8);
! setState(idTimerMinute, 0);
! }
! });
! createState(idTimerStunde);
! createState(idTimerMinute);
! createState(idTimerAktiv);
! // Timer bei Neustart setzen
! var Temp_Minute = getState(idTimerMinute).val;
! setState(idTimerMinute, 59);
! setState(idTimerMinute, Temp_Minute, true);
! // Bei Sonnenuntergang (kleiner 5 Lux)
! var Rollos_unten = false;
! on({id: "hm-rpc.1.OEQ2282364.1.LUX"/Helligkeit 100kLux.LUX/, change: "ne"}, function (obj) {
! // console.log(' Lux hat sich aktualisiert ' + Rollos_unten); // und Anzeige Variable
! if (obj.state.val < 5) {
! // 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;
! }
! });
! // -----------------------------------------------
! // Aktionen
! // -----------------------------------------------
! function Jalousie_oben_hoch() {
! // Abbruch bei deaktivierter Automatik
! if (getState("hm-rega.0.55181"/Jalousie Automatik/).val === false) { return; }
! log("Jalousie oben hoch");
! }
! 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 = 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.MEQ0735462.1.LEVEL"/Rollladen Fenster Bad oben .Level/, 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 = 0;
! // 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.MEQ0735462.1.LEVEL"/Rollladen Fenster Bad oben .Level/, lvJalBadoben);
! } -
So läuft es
javascript.0 2018-08-26 20:54:00.387 info script.js.##_Timer_Test: Jalousie unten auf Test javascript.0 2018-08-26 20:53:41.384 info script.js.##_Timer_Test: Jalousie unten auf geändert auf: 54 20 * * *
der on regex war noch falsch gesetzt:
! ````
// -----------------------------------------------
// Trigger
// -----------------------------------------------
var idTimerStunde ="Timer.Jalousie.Unten.Stunde";
var idTimerMinute ="Timer.Jalousie.Unten.Minute";
var idTimerAktiv ="Timer.Jalousie.Unten.Aktiv";
var TimerOn = "00 8 * * *";
! // ##################### variable ZEITSTEUERUNG #####################
var x = new RegExp("\javascript.0.Timer.Jalousie.Unten.+");
on({id:x,change:'ne',chance:'ne'}, function(obj) {
clearSchedule(TimerOn);
var id_Stunde = getState(idTimerStunde).val,
id_Minute = getState(idTimerMinute).val;
! AufZeit = id_Minute + ' ' + id_Stunde + ' * * *';
! log("Jalousie unten auf geändert auf: " + AufZeit);
! TimerOn = schedule(AufZeit, function(){
log("Jalousie unten auf Test");
// Jalousie_unten_hoch();
! });
});
! // // ##################### Werktag/ Urlaub prüfen um 01:02 Uhr jeden Tag #####################
schedule("02 01 * * *", function (){
if(isWeekend() || getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === true) {
log("Wochende bzw. Feiertag: Zeit unten eingestellt");
setState(idTimerStunde, 8);
setState(idTimerMinute, 0);
}
});
! createState(idTimerStunde, "6", {desc: 'Jalusie Auf Stunde'});
createState(idTimerMinute,"0", {desc: 'Jalusie Auf Minute'});
createState(idTimerAktiv, true, {desc: 'Jalusie Auf Aktiv'});
! // Timer bei Neustart setzen
! var Temp_Minute = getState(idTimerMinute).val;
setState(idTimerMinute, 59);
setState(idTimerMinute, Temp_Minute, true);Die variable Zeit für Werktag/ Feiertag könnte man einfach in einen State setzen, den man dann um 01:02 Uhr ausliest… Grüße Brati
-
Tolle Sache funktioniert Prima….
Das ich den Lüfter Beitrag nicht schon vorher gesehen habe....
Danke für die Hinweise...
//--------------------------------------------------------------------------- //Script Timer Vis var idTimerStunde ="javascript.0.Rolladen.Timer.ZeitfensterMorgen.Stunde"; var idTimerMinute ="javascript.0.Rolladen.Timer.ZeitfensterMorgen.Minute"; var TimerOn = "00 12 * * *"; var idZeitfensterMorgen ="javascript.0.Rolladen.ZeitfensterMorgen"; // ##################### variable ZEITSTEUERUNG ##################### var x = new RegExp("\javascript\.0\.Rolladen\.Timer\.ZeitfensterMorgen.+"); on({id:x,change:'ne',chance:'ne'}, function(obj) { clearSchedule(TimerOn); var id_Stunde = getState(idTimerStunde).val, id_Minute = getState(idTimerMinute).val; AufZeit = id_Minute + ' ' + id_Stunde + ' * * *'; log("Timer Rolladen ZeitfensterMorgens geändert: " + AufZeit); TimerOn = schedule(AufZeit, function(){ setState(idZeitfensterMorgen, true); setStateDelayed(idZeitfensterMorgen ,false, 3600*1000 ); }); }); createState(idTimerStunde); createState(idTimerMinute); createState('javascript.0.Rolladen.ZeitfensterMorgen', {def: 'false', type: 'boolean', name: 'Zeitfenster Morgen'}); // Timer bei Neustart setzen var Temp_Minute = getState(idTimerMinute).val; setState(idTimerMinute, 59); setState(idTimerMinute, Temp_Minute, true);
-
Hi,
klappt wirklich super kann ich nur weiter Empfehlen vielen Dank an Brati für die schnelle Hilfe. :lol:
Wenn du mal irgendwann Zeit findest wäre es schön wenn du mir für Urlaub und Wochenende noch einen Timer einbauen könntest.
Hab es schon probiert hab den 2 Timer auch im Script eingebaut und funktioniert weiß nur nicht wie ich das WE und Feiertage einbauen soll.
Danke und Grüße Steffen
-
Hallo,
das ist recht einfach. Zwei Fragen:
1. Ich gehe davon aus, dass am WE/ Feiertag die gleiche Zeit gilt?
2. Benutzt du den Aktiv Status? Der wird nämlich in der Abfrage nicht verwendet und würde die Möglichkeit geben, dass Hochfahren komplett zu deaktivieren.
Bei mir sieht das ja so aus und der Haken oben links bestimmt ob der Timer überhaupt aktiv ist:
~~![](</s><URL url=)<link_text text="download/file.php?id=11748">https://forum.iobroker.net/download/file.php?id=11748</link_text>" />
Grüße
Brati~~
-
Mahlzeit,
hab es mal etwas umgebaut, weil ja am Feiertag auch die normale Zeit erhalten bleiben soll. Die Abfrage zum Aktiv-State ist nicht enthalten, wäre aber eine einfache if then Bedingung.
! ````
// -----------------------------------------------
// Trigger
// -----------------------------------------------
var idTimerStunde ="Timer.Jalousie.Unten.Stunde",
idTimerMinute ="Timer.Jalousie.Unten.Minute",
idTimerAktiv ="Timer.Jalousie.Unten.Aktiv",
idTimerStundeWE ="Timer.Jalousie.Unten.StundeWE",
idTimerMinuteWE ="Timer.Jalousie.Unten.MinuteWE",
idTimerAktivWE ="Timer.Jalousie.Unten.AktivWE",
id_Stunde = 6,
id_Minute = 0,
AufZeit = "00 8 * * ", TimerOn =" * * * *" ;
! // ##################### variable ZEITSTEUERUNG #####################
var x = new RegExp("\javascript.0.Timer.Jalousie.Unten.+");
on({id:x,change:'ne',chance:'ne'}, function(obj) {id_Stunde = getState(idTimerStunde).val, id_Minute = getState(idTimerMinute).val; AufZeit = id_Minute + ' ' + id_Stunde + ' * * *'; TimerSet();
});
! // ##################### Werktag/ Urlaub prüfen um 01:02 Uhr jeden Tag #####################
schedule("02 01 * * *", function (){
! if(isWeekend() || getState("feiertage.0.heute.boolean"/Feiertag_heute/).val === true) {
id_Stunde = getState(idTimerStundeWE).val,
id_Minute = getState(idTimerMinuteWE).val;
log("Wochenende oder Feiertag Timer gesetzt!");
AufZeit = id_Minute + ' ' + id_Stunde + ' * * *';
TimerSet();
}
});
! // ###################### setzen des Zeitpunkts zum Öffnen ###########
function TimerSet(){
clearSchedule(TimerOn);
log("Jalousie unten auf geändert auf: " + AufZeit);
TimerOn = schedule(AufZeit, function(){
Jalousie_unten_hoch();
});
}
! createState(idTimerStunde, "6", {role: 'Jalousie Auf Stunde'});
createState(idTimerMinute,"0", {role: 'Jalousie Auf Minute'});
createState(idTimerAktiv, true, {role: 'Jalousie Auf Aktiv'});
createState(idTimerStundeWE, "8", {role: 'Jalousie Auf WE/ Feiertag Stunde'});
createState(idTimerMinuteWE,"0", {role: 'Jalousie Auf WE/ Feiertag Minute'});
createState(idTimerAktivWE, true, {role: 'Jalousie Auf WE/ Feiertag Aktiv'});
! // Timer bei Neustart setzen
! id_Stunde = getState(idTimerStunde).val,
id_Minute = getState(idTimerMinute).val;
AufZeit = id_Minute + ' ' + id_Stunde + ' * * *';
TimerSet();Grüße Brati
-
Super probiere ich nachher gleich aus wenn ich nach Hause komme.
Danke dir.
Gesendet von iPhone mit Tapatalk
-
Hilft euch vielleicht dieses skript weiter? viewtopic.php?f=21&t=8549
Es ist zwar ursprünglich da, um einen Saugroboter täglich zu einer bestimmten Uhrzeit mit einem definierten Sauglevel (also, mit welcher Leistung er saugen soll) loszuschicken, aber das kann man ja so anpassen, daß ihr zu jeder Uhrzeit die Behanghöhe der Rolläden definiert.
In vis habe ich das dann auch dargestellt, um Uhrzeit und Sauglevel (Behanghöhe) per Hand einzugeben.
Grüße Andreas
-
Guten morgen Brati,
Script funktioniert soweit gut hab nur ein Problem wenn er prüft ob Wochenende ist fährt er die Rollladen hoch.
Heißt er fährt um 1:02 meine Rollos hoch, und wenn ich sie dann wieder runter fahre dann um 8:00 Uhr.
Grüße
-
UPS, schaue ich mir morgen an, was steht denn im log?
Grüße Brati