@Override public synchronized void run() { Collection<Device> devices = Kernel.getInstance().getDevices(); if (devices == null) { return; } for (Device device : devices) { try { Logger.getLogger(Manager.class.getName()) .log( Level.INFO, "Reading sensors from " + device.getName() + ", sending " + requestString); device.send("sensors"); Kernel.delay(940); String s = device.receive(); if (s != null && !s.equals("")) { // Logger.getLogger(SensorPublisher.class.getName()).log(Level.INFO, // "Sending MQT Message " + s + " to QUEUE " + MQTTBaseService.MQTT_QUEUE + "/" + // device.getName()); try { newSensorData(device.getName(), s); } catch (Exception e) { } sendMessage(s, MQTT_QUEUE_PUBLISH); Persistence.save(s, "sensors"); } } catch (IOException ex) { try { device.close(); } catch (IOException ex1) { Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex1); } Kernel.getInstance().devices.remove(device); Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex); } catch (MqttException ex) { Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex); } } }