DBus 用于传感器数据连接

DBus for sensor data connection

几周前,我决定为我的家建造一些 raspberry pi 项目。因为我认识到我需要为多个应用程序使用相同的传感器数据,所以我将我的传感器放在一个进程中。通过将此进程连接到 DBus,我可以使用我的其他应用程序读取传感器数据。当我使用 ssh -X 选项连接到我的 raspberrypi 时,这非常有效,我在其中共享 xserver。如果我不共享 xserver,我会得到一个错误:

无法连接到 D-Bus 会话总线。 要启动它,运行:

eval `dbus-launch --auto-syntax`

当然,我尝试 运行 命令 eval dbus-launch --auto-syntax 使错误消失,但我仍然无法通过 DBus 访问数据。

怎么了?如果没有 xserver,我不能启动 DBus 应用程序吗?如果我可以在没有 xserver 的情况下启动我的传感器进程,那就太好了,因为我想在 init.d.

中将其作为服务启动

有人遇到过类似的问题吗?

Can't I start a DBus application without the xserver?

当然,应用程序只需要知道总线地址。对于会话总线,这意味着需要设置 DBUS_SESSION_BUS_ADDRESS 环境变量(X11 确实可以用作自动启动会话的后备方法,但环境变量是连接到现有会话的正确方法)。

在您的情况下,我会考虑使用系统总线:这听起来像是放置传感器的正确位置 API,而且嵌入式设备确实不需要多条总线。使用系统总线,即使通过 SSH 连接也无需设置地址(但您可能需要确保服务策略允许应用程序用户向服务发送消息)。