diff --git a/src/hasskiosk/runner.py b/src/hasskiosk/runner.py index 8e6b5a1..1bc2629 100644 --- a/src/hasskiosk/runner.py +++ b/src/hasskiosk/runner.py @@ -2,6 +2,7 @@ import asyncio import logging +import subprocess from contextlib import AsyncExitStack from typing import Any, Dict, Set @@ -49,11 +50,19 @@ async def screen_state_mqtt_handler(messages): """Screen state handler, reacts on presence messages.""" log = logging.getLogger(__name__) async for message in messages: - log.info( - "screen sate message on topic %s: %s", - message.topic, - message.payload.decode(), - ) + payload = message.payload.decode() + log.info("screen sate message on topic %s: %s", message.topic, payload) + if payload == "on": + cmd = ["xset", "dpms", "force", "on"] + log.info("motion detected, forcing screen state to on. CMD: %s", cmd) + result = subprocess.run(cmd, capture_output=True) + if result.returncode != 0: + log.error( + "nonzero return code: %s. stderr: %r, stdout: %r", + result.returncode, + result.stderr, + result.stdout, + ) async def cancel_tasks(tasks): diff --git a/tox.ini b/tox.ini index d3eef28..3768f51 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,security,lint,bundle +envlist = py37,security,lint isolated_build = True [testenv] @@ -14,6 +14,7 @@ deps = setuptools deps = importlib_metadata pytest + pytest-asyncio pytest-cov pdbpp commands = @@ -29,7 +30,7 @@ commands = deps = bandit commands = - bandit {envsitepackagesdir}/hasskiosk -r + bandit {toxinidir}/src/hasskiosk -r [testenv:lint] deps =