diff options
| author | Luke Hoersten <[email protected]> | 2026-04-14 08:55:44 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-04-14 08:55:44 -0500 |
| commit | c543eb2092c74d33156def8ae0dcdf693f7d7f9a (patch) | |
| tree | ebc9595820429bbe15be5062cb7f6f0f673938b6 /doorbell-viewport/files/doorbell-viewport.py | |
| parent | c1bd1d0f3abe8d4de65f2c95731711a6efa3008d (diff) | |
Further simplify doorbell-viewport daemon
- Flatten DisplayController: remove _set() middle layer
- Inline on_ring() into _handle_protect_event (was a 2-line wrapper)
- Collapse triggered flag in touch monitor to single boolean expression
Diffstat (limited to 'doorbell-viewport/files/doorbell-viewport.py')
| -rw-r--r-- | doorbell-viewport/files/doorbell-viewport.py | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/doorbell-viewport/files/doorbell-viewport.py b/doorbell-viewport/files/doorbell-viewport.py index 6fa67c0..446d591 100644 --- a/doorbell-viewport/files/doorbell-viewport.py +++ b/doorbell-viewport/files/doorbell-viewport.py @@ -91,15 +91,12 @@ class DisplayController: """Controls display backlight via /sys/class/backlight sysfs (DRM/KMS).""" def on(self): - self._set(True) + log.info("Display: ON") + self._sysfs_set(True) def off(self): - self._set(False) - - def _set(self, enabled: bool): - state = "ON" if enabled else "OFF" - log.info("Display power: %s", state) - self._sysfs_set(enabled) + log.info("Display: OFF") + self._sysfs_set(False) def _sysfs_set(self, enabled: bool): paths = sorted(Path("/sys/class/backlight").glob("*")) @@ -290,10 +287,6 @@ class DoorbellViewport: self.display.off() await self.stop_mpv() - async def on_ring(self): - log.info("Event: doorbell ring") - await self.activate() - async def on_touch(self): log.info("Event: touch input (state=%s)", self.state.value) if self.state == State.IDLE: @@ -435,7 +428,7 @@ class DoorbellViewport: camera = data.get("camera") or data.get("cameraId") or "" if event_type == "ring" and camera == self.config.camera_id: log.info("Protect: ring event from camera %s", camera) - await self.on_ring() + await self.activate() async def touch_listener(self): """Monitor evdev touch input with automatic device re-discovery.""" @@ -482,14 +475,14 @@ class DoorbellViewport: async for event in dev.async_read_loop(): if not self._running: break - triggered = False - if event.type == evdev.ecodes.EV_ABS: - if (event.code == evdev.ecodes.ABS_MT_TRACKING_ID - and event.value >= 0): - triggered = True - elif event.type == evdev.ecodes.EV_KEY: - if event.code == evdev.ecodes.BTN_TOUCH and event.value == 1: - triggered = True + triggered = ( + (event.type == evdev.ecodes.EV_ABS + and event.code == evdev.ecodes.ABS_MT_TRACKING_ID + and event.value >= 0) + or (event.type == evdev.ecodes.EV_KEY + and event.code == evdev.ecodes.BTN_TOUCH + and event.value == 1) + ) if triggered: now = time.monotonic() if now - last_touch_time > 0.5: # 500ms debounce |
