dim screen in a smooth way
parent
2d002979ea
commit
0fe090ae12
|
@ -13,13 +13,13 @@ import ha_mqtt_discoverable
|
|||
import sensors
|
||||
|
||||
class BrightnessMode(enum.Enum):
|
||||
MODE_OFF = 0
|
||||
MODE_DIM = 1
|
||||
MODE_BRIGHT = 2
|
||||
MODE_AUTO_OFF = 0
|
||||
MODE_AUTO_DIM = 1
|
||||
MODE_AUTO_BRIGHT = 2
|
||||
|
||||
class InputListener():
|
||||
last_input = 0
|
||||
brightness_mode = BrightnessMode.MODE_OFF
|
||||
brightness_mode = BrightnessMode.MODE_AUTO_OFF
|
||||
|
||||
def get_last_input(self):
|
||||
return self.last_input
|
||||
|
@ -37,21 +37,33 @@ class InputListener():
|
|||
|
||||
self.last_input = now
|
||||
|
||||
async def dim_screen(self, to_value):
|
||||
from_value = 0
|
||||
if self.brightness_mode == BrightnessMode.MODE_AUTO_DIM:
|
||||
from_value = 5
|
||||
elif self.brightness_mode == BrightnessMode.MODE_AUTO_BRIGHT:
|
||||
from_value = 50
|
||||
|
||||
step_val=(to_value-from_value)/25
|
||||
for i in range(1, 25):
|
||||
new_val = "{:.0f}".format(from_value + i*step_val)
|
||||
await asyncio.create_subprocess_exec('brightnessctl', 'set', f'{new_val}%', stdout=asyncio.subprocess.DEVNULL, stderr=asyncio.subprocess.DEVNULL)
|
||||
await asyncio.sleep(0.005)
|
||||
|
||||
async def brightness_loop(self, logger):
|
||||
logger.info('starting brightess loop')
|
||||
while True:
|
||||
if self.last_input + 30 < time.time():
|
||||
if self.brightness_mode != BrightnessMode.MODE_OFF:
|
||||
await asyncio.create_subprocess_exec('brightnessctl', 'set', '0', stdout=asyncio.subprocess.DEVNULL, stderr=asyncio.subprocess.DEVNULL)
|
||||
self.brightness_mode = BrightnessMode.MODE_OFF
|
||||
if self.brightness_mode != BrightnessMode.MODE_AUTO_OFF:
|
||||
await self.dim_screen(0)
|
||||
self.brightness_mode = BrightnessMode.MODE_AUTO_OFF
|
||||
elif self.last_input + 15 < time.time():
|
||||
if self.brightness_mode != BrightnessMode.MODE_DIM:
|
||||
await asyncio.create_subprocess_exec('brightnessctl', 'set', '5%', stdout=asyncio.subprocess.DEVNULL, stderr=asyncio.subprocess.DEVNULL)
|
||||
self.brightness_mode = BrightnessMode.MODE_DIM
|
||||
elif self.brightness_mode != BrightnessMode.MODE_BRIGHT:
|
||||
await asyncio.create_subprocess_exec('brightnessctl', 'set', '50%', stdout=asyncio.subprocess.DEVNULL, stderr=asyncio.subprocess.DEVNULL)
|
||||
self.brightness_mode = BrightnessMode.MODE_BRIGHT
|
||||
await asyncio.sleep(29)
|
||||
if self.brightness_mode != BrightnessMode.MODE_AUTO_DIM:
|
||||
await self.dim_screen(5)
|
||||
self.brightness_mode = BrightnessMode.MODE_AUTO_DIM
|
||||
elif self.brightness_mode != BrightnessMode.MODE_AUTO_BRIGHT:
|
||||
await self.dim_screen(50)
|
||||
self.brightness_mode = BrightnessMode.MODE_AUTO_BRIGHT
|
||||
|
||||
await asyncio.sleep(0.1)
|
||||
|
||||
|
|
Loading…
Reference in New Issue