def createEmptyLayer(self):
        try:
            telemetryLayer.instance().checkBrokerConfig()
        except BrokerNotSynced:
            Log.progress("Please save any broker configurations first")
        except BrokersNotDefined:
            Log.progress("Please configure your MQTT Brokers first - see Plugin -> Telemetry Layer -> Configure")
            return

        dlg = layerConfig(self)
        result = dlg.exec_()
        if result == 0:  # object will be garbage collected
            return False

        geomType = 'Point' + '?crs=proj4:' + QgsProject.instance().readEntry("SpatialRefSys", "/ProjectCRSProj4String")[
            0]  # dodana linia - from Menory Layer Module
        broker = dlg.getBroker()
        topicType = dlg.getTopicType()
        layer = QgsVectorLayer(geomType, topicType, 'memory')  # zmieniona linia

        tLayer = self.initLayer(layer, broker, topicType)
        # self._iface.legendInterface().setCurrentLayer(layer)
        Log.debug("telemetrylayermanager - set Current Layer")

        self.rebuildLegend()
        layer.triggerRepaint()
Esempio n. 2
0
    def createEmptyLayer(self):
        try:
            telemetryLayer.instance().checkBrokerConfig()
        except BrokerNotSynced:
            Log.progress("Please save any broker configurations first")
        except BrokersNotDefined:
            Log.progress(
                "Please configure your MQTT Brokers first - see Plugin -> Telemetry Layer -> Configure"
            )
            return

        dlg = layerConfig(self)
        result = dlg.exec_()
        if result == 0:  # object will be garbage collected
            return False

        geomType = 'Point' + '?crs=proj4:' + QgsProject.instance().readEntry(
            "SpatialRefSys", "/ProjectCRSProj4String")[
                0]  # dodana linia - from Menory Layer Module
        broker = dlg.getBroker()
        topicManager = dlg.getTopicManager()
        layer = QgsVectorLayer(geomType, topicManager.name(),
                               'memory')  # zmieniona linia

        tLayer = self.initLayer(layer, broker, topicManager)
        # self._iface.legendInterface().setCurrentLayer(layer)
        # Log.debug("telemetrylayermanager - set Current Layer")

        self.rebuildLegend()
        layer.triggerRepaint()
Esempio n. 3
0
    def _connect(self):
        try:
            if not self._connected:
                if not self._attempts < self.kMaxAttempts:
                    if not self._resetTimer.isActive():
                        Log.progress(Settings.getMeta("name") + ": Max connection attempts reached - waiting " + str(self.kResetTimer) + " seconds before retrying" )
                        self._resetTimer.start(self.kResetTimer*1000)  # 1 minute parameterise
                    return
                if self._attempts > 0 and (time.time() - pow(2,self._attempts +1)) < self._attemped:
                        return
                Log.debug("Trying to connect")
                self._attemped = time.time()
                result = self.mqttc.connect(str(self._host), int(self._port),int( self._keepAlive), 1)
                self._connected = result == mqtt.MQTT_ERR_SUCCESS # paho
#                self._connected = result == mqtt.MOSQ_ERR_SUCCESS # mosquitto
                if not self._connected:
                    self._attempts += 1
                    Log.progress(mqtt.connack_string(connResult))
                    self.mqttConnectionError.emit(self, mqtt.connack_string(connResult))
 
        except Exception as e:
            msg = 'MQTT: ' + str(e)

            self.mqttConnectionError.emit(self, msg)
            #Log.progress(msg)
            Log.debug(msg)
            #exc_type, exc_value, exc_traceback = sys.exc_info()
            #Log.debug(repr(traceback.format_exception(exc_type, exc_value,
             #                                         exc_traceback)))
            self._attempts += 1
            self._connected = False
Esempio n. 4
0
 def _updateBrokerApply(self):
     if not self._brokerDlg.validate():
         return
     Log.debug("_updateBrokerApply")
     broker = self._brokerDlg.getBroker()
     #for key, val in broker.properties().iteritems():
     #    Log.debug(key + " " + str(val))
     self._brokers.update(broker)
     self._brokers.sync(True)
     broker.setDirty(False)
     self._brokerDlg.connectApply.setEnabled(False)
     Log.progress("Broker updated")
Esempio n. 5
0
 def _updateBrokerApply(self):
     if not self._brokerDlg.validate():
         return
     Log.debug("_updateBrokerApply")
     broker = self._brokerDlg.getBroker()
     #for key, val in broker.properties().iteritems():
     #    Log.debug(key + " " + str(val))
     self._brokers.update(broker)
     self._brokers.sync(True)
     broker.setDirty(False)
     self._brokerDlg.connectApply.setEnabled(False)
     Log.progress("Broker updated")
     for tLayer in self._layerManager.getTLayers().itervalues():
         if tLayer.isRunning():
             tLayer.restart();
    def getTopicManager(broker, create=False):
        try:
            if not create and broker.id() in tlTopicManagerFactory.classObjects:
                return tlTopicManagerFactory.classObjects[broker.id()]

            _class = tlTopicManagerFactory.getTopicManagerById(broker.topicManager())
            if not _class:
                Log.alert("Error loading topic manager " + str(broker.id()))
                return None

            tlTopicManagerFactory.classObjects[broker.id()] = _class(broker, create)
            return tlTopicManagerFactory.classObjects[broker.id()]
        except Exception as e:
            Log.progress("Unable to load topic manager from " + str(broker.topicManager()) + " " + str(e))
            exc_type, exc_value, exc_traceback = sys.exc_info()
            Log.debug(repr(traceback.format_exception(exc_type, exc_value,
                                                      exc_traceback)))

            return None
Esempio n. 7
0
    def _connect(self):
        try:
            if not self._connected:
                if not self._attempts < self.kMaxAttempts:
                    if not self._resetTimer.isActive():
                        Log.progress(
                            Settings.getMeta("name") +
                            ": Max connection attempts reached - waiting " +
                            str(self.kResetTimer) + " seconds before retrying")
                        self._resetTimer.start(self.kResetTimer *
                                               1000)  # 1 minute parameterise
                    return
                if self._attempts > 0 and (time.time() - pow(
                        2, self._attempts + 1)) < self._attemped:
                    return
                Log.debug("Trying to connect")
                self._attemped = time.time()
                result = self.mqttc.connect(str(self._host), int(self._port),
                                            int(self._keepAlive), 1)
                self._connected = result == mqtt.MQTT_ERR_SUCCESS  # paho
                #                self._connected = result == mqtt.MOSQ_ERR_SUCCESS # mosquitto
                if not self._connected:
                    self._attempts += 1
                    Log.progress(mqtt.connack_string(connResult))
                    self.mqttConnectionError.emit(
                        self, mqtt.connack_string(connResult))

        except Exception as e:
            msg = 'MQTT: ' + str(e)

            self.mqttConnectionError.emit(self, msg)
            #Log.progress(msg)
            Log.debug(msg)
            #exc_type, exc_value, exc_traceback = sys.exc_info()
            #Log.debug(repr(traceback.format_exception(exc_type, exc_value,
            #                                         exc_traceback)))
            self._attempts += 1
            self._connected = False
Esempio n. 8
0
 def resume(self):
     if self._canRun() and not self.isRunning():
         Log.progress("Starting MQTT client for " + self._broker.name() + " -> " + self.layer().name())
         self.run()
Esempio n. 9
0
    def addFeature(self, fid):
        Log.debug("Add Feature")
        if fid < 0 and not self._fid:
            self._fid = fid
        elif fid >= 0 or fid == self._fid:
            # handle roll back
            #self._fid = None
            return None

        # Look Up broker and topicType

        feat = QgsFeature(fid)
        try:
            telemetryLayer.instance().checkBrokerConfig()
            tlAddFeature = AddFeature(self.topicManager())
            result = tlAddFeature.exec_()
            if result == 0:
                self._layer.deleteFeature(fid)
                self._layer.commitChanges()
                return None

            topic   = tlAddFeature.getTopic()
            visible = tlAddFeature.getVisible()
            qos     = tlAddFeature.getQoS()
            
            self._deferredEdit =  tlAddFeature.getEdit()
            
            attrs = [topic['name'],
                    topic['topic'],
                    qos,
                    topic['topic'],  # gets updated with topic
                    "No updates",
                    int(time.time()),
                    int(time.time()),
                    self.isRunning(),
                    visible,
                    'map']
            
            # merge with custom attributes
            feat.setAttributes(self.topicManager().setAttributes(self._layer,attrs))

            self._layer.updateFeature(feat)
            self._layer.commitChanges()
            self._feat = feat
            
        except BrokerNotSynced:
            Log.progress("Please save any unsaved Broker configurations first")
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
        except BrokersNotDefined:
            Log.progress("You have no Brokers defined")
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
        except Exception as e:
            Log.debug(e)
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
            return None
        finally:
            pass

        return feat
Esempio n. 10
0
 def _topicManagerLoaded(self, state, obj):
     if state:
         self.Tabs.setTabEnabled(self.kTopicManagerTabId, True)
         self.connectApply.setEnabled(self.getTested() and self.dirty())
     else:
         Log.progress(obj)
Esempio n. 11
0
 def resume(self):
     if self._canRun() and not self.isRunning():
         Log.progress("Starting MQTT client for " + self._broker.name() +
                      " -> " + self.layer().name())
         self.run()
Esempio n. 12
0
    def addFeature(self, fid):
        Log.debug("Add Feature")
        if fid < 0 and not self._fid:
            self._fid = fid
        elif fid >= 0 or fid == self._fid:
            # handle roll back
            #self._fid = None
            return None

        # Look Up broker and topicType

        feat = QgsFeature(fid)
        try:
            telemetryLayer.instance().checkBrokerConfig()
            tlAddFeature = AddFeature(self.topicManager())
            result = tlAddFeature.exec_()
            if result == 0:
                self._layer.deleteFeature(fid)
                self._layer.commitChanges()
                return None

            topic = tlAddFeature.getTopic()
            visible = tlAddFeature.getVisible()
            qos = tlAddFeature.getQoS()

            self._deferredEdit = tlAddFeature.getEdit()

            attrs = [
                topic['name'],
                topic['topic'],
                qos,
                topic['topic'],  # gets updated with topic
                "No updates",
                int(time.time()),
                int(time.time()),
                self.isRunning(),
                visible,
                'map'
            ]

            # merge with custom attributes
            feat.setAttributes(self.topicManager().setAttributes(
                self._layer, attrs))

            self._layer.updateFeature(feat)
            self._layer.commitChanges()
            self._feat = feat

        except BrokerNotSynced:
            Log.progress("Please save any unsaved Broker configurations first")
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
        except BrokersNotDefined:
            Log.progress("You have no Brokers defined")
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
        except Exception as e:
            Log.debug(e)
            self._layer.deleteFeature(fid)
            self._layer.commitChanges()
            return None
        finally:
            pass

        return feat