Я не знаком с dbus, но посмотрите на названия устройств, которые вы получаете:
usb_device_413c_2003_noserial
usb_device_413c_2003_noserial_if0
usb_device_413c_2003_noserial_if0_logicaldev_input
Первое устройство, вероятно, представляет устройство USB в целом.Второе устройство наиболее вероятно представляет интерфейс 0 указанного устройства.Третье устройство, вероятно, представляет конечную точку или некоторую другую функцию интерфейса 0, которая может или не может быть указана в дескрипторах устройства.
Вы получаете три разных логических устройства, даже если подключены только к одному физическому устройству.Подобные вещи важны для людей, которые реализуют композитные USB-устройства.
Чтобы ответить на вопрос, однако: если вы хотите получать уведомление только один раз, то в функции обработчика уведомлений вы должны отфильтровывать уведомления, которые вы делаете.не волнуйтесь, посмотрев на строку имени устройства и решив, волнует ли вас событие или нет.Например, вы можете решить, что вам не нужны устройства с if0
в имени, поэтому ваш псевдокод будет:
def notificationHandler(notification)
if notification.name does not contain `if0`
pass notification to higher level code
end
end