so hier nun das fertige Script mit allen Schnick Schnack und den verschiedensten Fahrprogrammen und Bedingungen..
Etwas aufgeräumt und optimiert..
//Rolladen Script
//States für Manuell und Automatik Vorwahl in Vis
createState('javascript.0.Rolladen.Gesamt.EGAutomatik', {def: 'false', type: 'boolean', name: 'Rolladen Gesamt EG Automatik aktivieren'});
createState('javascript.0.Rolladen.Couch.Automatik', {def: 'false', type: 'boolean', name: 'Rolladen Couch Automatik aktivieren'});
const id1 = 'wiffi-wz.0.root.192_168_xx_XX.w_windstaerke'; //Sturm
const id2 = 'hm-rpc.0.PEQ03xxxxxx.1.BRIGHTNESS'; //Helligkeit
const id3 = 'wiffi-wz.0.root.192_168_xx_xx.w_sonne_scheint'; //Sonne
const id4 = 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand'; //Brand
const id5 = 'javascript.0.alarm.out.alarm_intern'; //Alarmanlage
const id6 = 'wiffi-wz.0.root.192_168_xx_xx.w_rain_status'; //Regen
const id7 = 'javascript.0.Anwesenheitssteuerung.BewohnerAnwesend'; //Anwesend
const idRolloCouch = 'hm-rpc.0.OEQ12xxxxxx.1.LEVEL'; //Rolladen Couch
function Rolladen() {
console.log('Rolladen Couch trigger aktiv ');
var Sturm = getState ('wiffi-wz.0.root.192_168_xx_xxx.w_windstaerke').val;
var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
var ZeitfensterMorgen = getState ('javascript.0.Rolladen.ZeitfensterMorgen').val;
var ZeitfensterAbend = getState ('javascript.0.Rolladen.ZeitfensterAbend').val;
var Helligkeit = getState ('hm-rpc.0.PEQ039xxxxx.1.BRIGHTNESS').val;
var AussenTemp = getState ('wiffi-wz.0.root.192_168_xx_xx.w_temperature').val;
var Regen = getState ('wiffi-wz.0.root.192_168_xx_xx.w_rain_status').val;
var BehanghoeheCouch = getState('hm-rpc.0.OEQ129xxxxx.1.LEVEL').val;
var AutomatikEG = getState('javascript.0.Rolladen.Gesamt.EGAutomatik').val;
var AutomatikCouch = getState('javascript.0.Rolladen.Couch.Automatik').val;
var Sonne = getState('wiffi-wz.0.root.192_168_xxx_xx.w_sonne_scheint').val;
var FensterCouchRechts = getState('hm-rpc.0.OEQ1434xxxx.1.STATE').val;
var FensterCouchMitte = getState('hm-rpc.0.OEQ143xxxx.1.STATE').val;
var FensterCouchLinks = getState('hm-rpc.0.OEQ1197xxxx.1.STATE').val;
var Anwesend = getState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend').val;
// Rollos hoch
if (( Brand >= 1 || Alarm === true) || (ZeitfensterMorgen === true && Helligkeit >= 40 && BehanghoeheCouch <= 95 && AutomatikEG === true && AutomatikCouch === true)) {
setStateDelayed(idRolloCouch, 100, 1800);//zeitverzögerung Addition pro Rolladen um 600ms
if(idRolloCouch, 100);
console.log('Rolladen Couch offen');
}else{
//Rollo runter
if ((ZeitfensterAbend === true && FensterCouchRechts === false && FensterCouchMitte === false && FensterCouchLinks === false && Helligkeit <= 10 && BehanghoeheCouch >= 20 && AutomatikEG === true && AutomatikCouch === true && Brand === 0 && Alarm === false) || ( Sturm >= 6 && BehanghoeheCouch >=0 && Brand === 0 && Alarm === false) || ((Regen === true || Anwesend ===false ) && (FensterCouchRechts === true || FensterCouchLinks === true || FensterCouchMitte === true ) && BehanghoeheCouch >= 0 && Brand === 0 && Alarm === false )) {
setStateDelayed(idRolloCouch, 0, 1800);
if(idRolloCouch, 0);
console.log('Rolladen Couch geschlossen');
}else{
// Rollor runter auf 50 % Sicht wegen Sonne und Temp
if (isTimeInRange('13:00:00', '19:30:00') && Sonne === true && BehanghoeheCouch >= 55 && AutomatikEG === true && AutomatikCouch === true && Brand === 0 && Alarm === false && Aussentemp >= 26) {
setStateDelayed(idRolloCouch, 50, 1800);
if(idRolloCouch, 50);
console.log('Rolladen Couch wegen Sonne und hoher Temp. auf 50% Sicht gefahren ');
}
}
}
}
Rolladen(); // Skriptstart
on(id1, function(dp) {
Sturm = dp.state.val;
Rolladen();
});
on(id2, function(dp) {
Helligkeit = dp.state.val;
Rolladen();
});
on(id3, function(dp) {
Sonne = dp.state.val;
Rolladen();
});
on(id4, function(dp) {
Brand = dp.state.val;
Rolladen();
});
on(id5, function(dp) {
Alarm = dp.state.val;
Rolladen();
});
on(id6, function(dp) {
Regen = dp.state.val;
Rolladen();
});
on(id7, function(dp) {
Anwesend = dp.state.val;
Rolladen();
});