diff --git a/src/ha-kiosk-agent b/src/ha-kiosk-agent index 11f54cc..d66a8d7 100755 --- a/src/ha-kiosk-agent +++ b/src/ha-kiosk-agent @@ -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)