在 RPi GPIO 事件时重置 Xorg 空闲时间,可能通过 NodeRed

问题描述

我有一个运行 NodeRed 服务器的 RaspBerry Pi 4。 这个 Pi 没有鼠标或键盘,但它有一个普通的 HDMI 显示器。 它运行最小的 Xorg 设置,并且 Midori 浏览器作为客户端连接到 NodeRed 服务器本身。 用户可以通过一些连接到 GPIO 的按钮与 NodeRed 交互。 到目前为止一切顺利。

我设置了一个小 python 脚本,当用户空闲一段时间 (xprintidle) 时,它会启动屏幕保护程序 (feh)。

现在我想在用户按下按钮时停止屏幕保护程序。 我尝试将这些 GPIO 引脚与 RPi.GPIO 库绑定,但它说它们已经绑定到其他东西(NodeRed)并且按下按钮时甚至不会触发。

我试图查看 /sys/class/gpio/,但是当我单击按钮时我没有看到这些导出发生变化,此外,我将不得不使用一个不断轮询这些 sys 文件的 bash 脚本。我宁愿使用事件/中断。

您将如何实现这一目标? 是否有一些较低的系统方式可以从 GPIO 获取中断? 也许有可能让 NodeRed 以某种方式杀死 Feh(或将假用户输入提供给 xorg)?

解决方法

也许我放弃得太早了。后来我意识到使用 NodeRed 管理主机系统进程并不难。 通过这种方式,我还能够拦截所有按钮按下并确保屏幕保护程序没有运行,然后再执行所需的操作。