diff --git a/platypush/plugins/hid/__init__.py b/platypush/plugins/hid/__init__.py index 6e33e8c3..7c9ac5fb 100644 --- a/platypush/plugins/hid/__init__.py +++ b/platypush/plugins/hid/__init__.py @@ -213,7 +213,6 @@ class HidPlugin(RunnablePlugin): for path in new_device_paths: device = scanned_devices[path] get_bus().post(HidDeviceConnectedEvent(**device)) - monitor_rule = self._get_monitor_rule(device) if monitor_rule: self._register_device_monitor(device, monitor_rule) @@ -227,7 +226,10 @@ class HidPlugin(RunnablePlugin): lost_device_paths = available_device_paths.difference(scanned_device_paths) for path in lost_device_paths: - get_bus().post(HidDeviceDisconnectedEvent(**self._available_devices[path])) + device = self._available_devices.get(path) + if device: + get_bus().post(HidDeviceDisconnectedEvent(**device)) + self._unregister_device_monitor(device['path']) def _handle_device_events(self, scanned_devices: dict): """ diff --git a/platypush/schemas/hid.py b/platypush/schemas/hid.py index 6cb372ca..3cfee402 100644 --- a/platypush/schemas/hid.py +++ b/platypush/schemas/hid.py @@ -50,7 +50,7 @@ class HidDeviceSchema(Schema): class HidMonitoredDeviceSchema(HidDeviceSchema): notify_only_if_changed = fields.Boolean( - missing=True, + load_default=True, metadata={ 'description': 'If set to true (default), only changes in the ' 'values of the device will trigger events. So if you are e.g. ' @@ -60,7 +60,7 @@ class HidMonitoredDeviceSchema(HidDeviceSchema): ) data_size = fields.Integer( - missing=64, + load_default=64, metadata={ 'description': 'How many bytes should be read from the device on ' 'each iteration (default: 64)', @@ -68,7 +68,7 @@ class HidMonitoredDeviceSchema(HidDeviceSchema): ) poll_seconds = fields.Float( - missing=0, + load_default=0, metadata={ 'description': 'How often we should wait before data reads ' '(default: no wait)'