コード例 #1
0
    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))
コード例 #2
0
ファイル: tlayer.py プロジェクト: nzfarmer1/telemetrylayer
    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()
コード例 #3
0
    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)))
コード例 #4
0
 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)))
コード例 #5
0
    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)))
コード例 #6
0
    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)))
コード例 #7
0
ファイル: tlayer.py プロジェクト: nzfarmer1/telemetrylayer
    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()
コード例 #8
0
 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
コード例 #9
0
 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
コード例 #10
0
    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
コード例 #11
0
ファイル: tlayer.py プロジェクト: nzfarmer1/telemetrylayer
    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()
コード例 #12
0
ファイル: tlayer.py プロジェクト: nzfarmer1/telemetrylayer
    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()
コード例 #13
0
    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
コード例 #14
0
 def _reset(self):
     Log.warn("Timer reset ")
     self._attempts = 0
     self._resetTimer.stop()  # not required
コード例 #15
0
 def _disconnect(self):
     try:
         self.mqttc.disconnect()
     except Exception as e:
         Log.warn('MQTT Disconnection Error' + str(e))
コード例 #16
0
 def _reset(self):
     Log.warn("Timer reset ")
     self._attempts = 0
     self._resetTimer.stop() # not required
コード例 #17
0
 def _disconnect(self):
     try:
         self.mqttc.disconnect()
     except Exception as e:
         Log.warn('MQTT Disconnection Error' + str(e))