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()
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()
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
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")
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
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
def resume(self): if self._canRun() and not self.isRunning(): Log.progress("Starting MQTT client for " + self._broker.name() + " -> " + self.layer().name()) self.run()
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
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)
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