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); });
Schreibe einen Kommentar