on({id: 'shelly.0.shellyplus2pm#labor#1.Input0.Status'/*Eingangsstatus*/, change: 'gt'}, async function(obj) {
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
//entprellen
await Sleep(30);
//nur weitermachen wenn das Event "btn_down" ist
if(getState('shelly.0.shellyplus2pm#labor#1.Input0.Status'/*Input Status*/).val != 1){
log("Event war ungleich btn_down");
return;
}
log("reagiere auf btn_down");
var shortdelay = 500; // max Dauer kurzer Tastendruck
var i = 0;
var state = "";
var stateBrightness = "";
for(i=0;i<(shortdelay/10);i++){
//log("For: " + i);
state = getState('shelly.0.shellyplus2pm#labor#1.Input0.Status'/*Input Status*/).val;
//log(state);
if(getState('shelly.0.shellyplus2pm#labor#1.Input0.Status'/*Input Status*/).val == 0){
// Ein oder ausschalten
log("schalte");
if(getState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/).val == 0){
log("einschalten");
setState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/, getState('0_userdata.0.labor_lastbrightness').val);
}else{
log("ausschalten");
setState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/,0);
}
return;
}
await Sleep(10);
}
// etwas warten
await Sleep(200);
var direction = getState('0_userdata.0.labor_dimmrichtung'/*labor dimmrichtung*/).val;
var brightness = getState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/).val;
while(getState('shelly.0.shellyplus2pm#labor#1.Input0.Status'/*Input Status*/).val == 1){
if(brightness + 4 <= 100 && direction == "up"){
brightness = brightness + 4;
setState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/, brightness);
if(brightness >= 100){ direction = "down"; }
}
if(brightness - 4 >= 1 && direction == "down"){
brightness = brightness - 4;
setState('zigbee.0.38398ffffe958faa.brightness'/*Brightness*/, brightness);
}
if(brightness <= 4){ direction = "up"; }
await Sleep(100);
}
setState('0_userdata.0.labor_dimmrichtung', direction);
setState('0_userdata.0.labor_lastbrightness', brightness);
});
on({id: 'shelly.0.shellyplus2pm#labor#1.Input1.Status'/*Eingangsstatus*/, change: 'gt'}, async function(obj) {
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
//entprellen
await Sleep(30);
//nur weitermachen wenn das Event "btn_down" ist
if(getState('shelly.0.shellyplus2pm#labor#1.Input1.Status'/*Input Status*/).val != 1){
log("Event war ungleich btn_down");
return;
}
log("reagiere auf Farb btn_down");
var shortdelay = 500; // max Dauer kurzer Tastendruck
var i = 0;
var state = "";
var stateBrightness = "";
// etwas warten
await Sleep(200);
var cdirection = getState('0_userdata.0.labor_farbrichtung'/*labor dimmrichtung*/).val;
var color = getState('zigbee.0.38398ffffe958faa.colortemp'/*Brightness*/).val;
while(getState('shelly.0.shellyplus2pm#labor#1.Input1.Status'/*Input Status*/).val == 1){
log('CLoop');
if(color + 5 <= 495 && cdirection == "up"){
color = color +5;
log(color);
setState('zigbee.0.38398ffffe958faa.colortemp'/*Brightness*/, color);
if(color >= 500){ cdirection = "down"; }
}
if(color - 5 >= 0 && cdirection == "down"){
color = color - 5;
log(color);
setState('zigbee.0.38398ffffe958faa.colortemp'/*Brightness*/, color);
if(color <= 6){ cdirection = "up"; }
}
await Sleep(100);
}
setState('0_userdata.0.labor_farbrichtung', cdirection);
setState('0_userdata.0.labor_lastcolor', color);
});