DBus для подключения данных датчика

Несколько недель назад я решил создать несколько проектов Raspberry Pi для своего дома. Поскольку я понял, что мне понадобятся одни и те же данные датчиков для нескольких приложений, я поместил свои датчики в один процесс. Подключив этот процесс к DBus, я могу считывать данные датчиков с другими моими приложениями. Это работает очень хорошо, когда я подключен к моему raspberrypi с опцией ssh ​​-X, где я делюсь xserver. Если я не делюсь xserver, я получаю сообщение об ошибке:

Не удается подключиться к сеансовой шине D-Bus. Чтобы запустить его, запустите:

eval `dbus-launch --auto-syntax`

Конечно, я попытался запустить команду eval dbus-launch --auto-syntax, после чего ошибка исчезла, но я по-прежнему не мог получить доступ к данным через DBus.

Что не так? Могу ли я запустить приложение DBus без xserver? Было бы здорово, если бы я мог запустить свой сенсорный процесс без xserver, потому что я хочу запустить его как службу в init.d.

Есть кто-нибудь, у кого была похожая проблема?


person andrew28349    schedule 21.06.2017    source источник


Ответы (1)


Могу ли я запустить приложение DBus без xserver?

Конечно, приложению просто нужно знать адрес шины. Для сеансовой шины это означает, что необходимо установить переменную среды DBUS_SESSION_BUS_ADDRESS (X11 действительно можно использовать в качестве запасного метода для автоматического запуска сеанса, но переменная среды является правильным методом для подключения к существующему сеансу).

В вашей ситуации я бы подумал об использовании системной шины: это звучит как правильное место для сенсорного API, а встроенному устройству действительно не нужно более одной шины. С системной шиной вам не нужно будет устанавливать адрес даже при подключении через SSH (но вам может потребоваться убедиться, что политика службы разрешает пользователю приложения отправлять сообщения в службу).

person Jussi Kukkonen    schedule 21.06.2017
comment
Спасибо за этот ответ. Установка переменной среды DBUS_SESSION_BUS_ADDRESS действительно решает мою проблему. Позже я посмотрю и на системную шину. - person andrew28349; 21.06.2017