NEWS
[Gelöst]Zeit stellen für Rolladen im Vis
-
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