def loop(self, timeout=0.1): if not self.isConnected(): if not self._killing: self._connect() return try: connResult = self.mqttc.loop(timeout) if connResult == mqtt.MQTT_ERR_SUCCESS: # paho # if connResult == mqtt.MOSQ_ERR_SUCCESS: # mosquitto return self._connected = False self._attempts += 1 Log.warn("MQTT: An error occurred while looping") QObject.emit(self, SIGNAL('mqttConnectionError'), self, mqtt.error_string(connResult)) except ValueError as e: if e == 'Invalid timeout.': QObject.emit(self, SIGNAL('mqttOnTimeout'), self, "Connection Timeout") else: Log.debug("Paho Client ValueError" + str(e)) except Exception as e: QObject.emit(self, SIGNAL('mqttConnectionError'), self, str(e)) Log.debug("MQTT Connect: Unknown exception raised " + str(e))
def onConnect(self, mosq, obj, rc): # Log.debug(self._layer.rendererV2().dump()) self._dict = {} self.updateConnected(True) for feat in self._layer.getFeatures(): if feat.id() < 0: continue try: topic = str(feat.attribute("topic")) qos = int(feat.attribute("qos")) if not qos in range(3): Log.warn("Topic QoS must be beween 0 and 2") continue if topic is not None: self.subscribe(topic, qos) else: Log.critical("Invalid topic") except TypeError: Log.debug("Error adding features from layer") pass self.triggerRepaint()
def loop(self, timeout=0.1): if not self.isConnected(): if not self._killing: self._connect() return try: connResult = self.mqttc.loop(timeout) if connResult == mqtt.MQTT_ERR_SUCCESS: # paho # if connResult == mqtt.MOSQ_ERR_SUCCESS: # mosquitto return self._connected = False self._attempts += 1 Log.warn("MQTT: An error occurred while looping") self.mqttConnectionError.emit(self, mqtt.error_string(connResult)) except ValueError as e: if e == 'Invalid timeout.': self.mqttOnTimeout.emit(self, "Connection Timeout") else: Log.debug("Paho Client ValueError" + str(e)) except Exception as e: self.mqttConnectionError.emit(self, str(e)) Log.debug("MQTT Connect: Unknown exception raised " + str(e)) exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug(repr(traceback.format_exception(exc_type, exc_value, exc_traceback)))
def showFeatureDock(self,layer,feature): try: key = (layer.id(),feature.id()) if key in self._featureDocks: dock = self._featureDocks[key] if dock is not None: if dock.isVisible(): return else: Log.debug(str(dock) + ' show') dock.show() return tlayer = self.getTLayer(layer.id(),False); try: self._featureDocks[key] = tlayer.topicManager().getFeatureDock(self._iface, tlayer, feature) except AttributeError: Log.warn("Unable to load feature dock") exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug(repr(traceback.format_exception(exc_type, exc_value, exc_traceback))) except Exception as e: Log.debug('showFeatureDock: ' + str(e)) exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug(repr(traceback.format_exception(exc_type, exc_value, exc_traceback)))
def loop(self, timeout=0.1): if not self.isConnected(): if not self._killing: self._connect() return try: connResult = self.mqttc.loop(timeout) if connResult == mqtt.MQTT_ERR_SUCCESS: # paho # if connResult == mqtt.MOSQ_ERR_SUCCESS: # mosquitto return self._connected = False self._attempts += 1 Log.warn("MQTT: An error occurred while looping") self.mqttConnectionError.emit(self, mqtt.error_string(connResult)) except ValueError as e: if e == 'Invalid timeout.': self.mqttOnTimeout.emit(self, "Connection Timeout") else: Log.debug("Paho Client ValueError" + str(e)) except Exception as e: self.mqttConnectionError.emit(self, str(e)) Log.debug("MQTT Connect: Unknown exception raised " + str(e)) exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug( repr( traceback.format_exception(exc_type, exc_value, exc_traceback)))
def showFeatureDock(self, layer, feature): try: key = (layer.id(), feature.id()) if key in self._featureDocks: dock = self._featureDocks[key] if dock is not None: if dock.isVisible(): return else: Log.debug(str(dock) + ' show') dock.show() return tlayer = self.getTLayer(layer.id(), False) try: self._featureDocks[key] = tlayer.topicManager().getFeatureDock( self._iface, tlayer, feature) except AttributeError: Log.warn("Unable to load feature dock") exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug( repr( traceback.format_exception(exc_type, exc_value, exc_traceback))) except Exception as e: Log.debug('showFeatureDock: ' + str(e)) exc_type, exc_value, exc_traceback = sys.exc_info() Log.debug( repr( traceback.format_exception(exc_type, exc_value, exc_traceback)))
def kill(self): try: if self.isConnected(): self._disconnect() self._killing = True self._killTimer.start(self._keepAlive) except Exception as e: Log.warn("Error cleaning up " + str(e)) pass
def getTLayer(self, lid, add=True): remove = [] if lid in self._tLayers: return self._tLayers[lid] elif add: try: layer = QgsMapLayerRegistry.instance().mapLayer(lid) self._tLayers[lid] = TLayer(self, QgsMapLayerRegistry.instance().mapLayer(lid)) layer.triggerRepaint() return self._tLayers[lid] except BrokerNotFound: return None except Exception as e: Log.warn(e.__str__()) else: return None
def run(self): if not self._canRun(): return Log.debug("Running " + self.layer().name()) try: self._setFormatters(True) except AttributeError: Log.warn("Error running telemetry layer") self.kill() return self._dict = {} self._values = {} self.Q.queue.clear() super(tLayer, self).run()
def getTLayer(self, lid, add=True): remove = [] if lid in self._tLayers: return self._tLayers[lid] elif add: try: layer = QgsMapLayerRegistry.instance().mapLayer(lid) self._tLayers[lid] = TLayer( self, QgsMapLayerRegistry.instance().mapLayer(lid)) layer.triggerRepaint() return self._tLayers[lid] except BrokerNotFound: return None except Exception as e: Log.warn(e.__str__()) else: return None
def _reset(self): Log.warn("Timer reset ") self._attempts = 0 self._resetTimer.stop() # not required
def _disconnect(self): try: self.mqttc.disconnect() except Exception as e: Log.warn('MQTT Disconnection Error' + str(e))