Example #1
0
    def logSensorZuweisung(self):
        dateiname = DATEINAME_SENSOR_ZUWEISUNG
        dateiordner = ORDNER_SENSOR_ZUWEISUNG

        zuweisungsListe = Communicator.fileReader(dateiName=dateiname, ordner=dateiordner)
        sensorListe = Communicator.loadObjectFromServer(
            name=SERVER_OBJEKT_SENSORLISTE, expectedDatatype=SensorListe.SensorListe, create=True
        )

        # Jeden vorhandenen Sensor ggf. in die Liste aufnehmen, die Sensoren, die bereits in der Liste sind, koennen da bleiben
        flagSensorVorhanden = (
            None
        )  # Flag wird benoetigt, damit nicht gespeichert wird, falls sich garnichts veraendert hat
        for sensor in sensorListe:
            if sensor.getName() is not None and sensor.getName() is not str(None):
                flagSensorVorhanden = False  # initialisierung

                # Parsen der vorhandenen Datei nach der SensorId und ggf. ueberschreiben
                for lineNumber in range(len(zuweisungsListe)):
                    if (
                        sensor.getID() in zuweisungsListe[lineNumber]
                    ):  # Falls die SensorID bereits vorhanden ist, soll sie umgeschrieben werden
                        zuweisungsListe[lineNumber] = sensor.getName() + TRENNZEICHEN_SENSOR_ZUWEISUNG + sensor.getID()
                        flagSensorVorhanden = True
                        break  # herausspringen, damit der rest nicht ueberprueft werden muss

                # Falls der Sensor noch nicht in der Liste ist: Sensor hinzufuegen
                if not flagSensorVorhanden:  # Falls der sensor in der obrigen Schleife noc nicht gefunden wurde
                    zuweisungsListe.append(sensor.getName() + TRENNZEICHEN_SENSOR_ZUWEISUNG + sensor.getID())
                    flagSensorVorhanden = True

        # Abspeichern der neuen zuweisungsliste
        if flagSensorVorhanden is True:  # True wird nur dann gesetzt, falls sich etwas geaendert hat
            Communicator.fileSaver(zuweisungsListe, dateiname=dateiname, ordner=dateiordner)
Example #2
0
    def getNewSensorName(self, sensor):
        """Die Methode fuer einen neuen Sensor muss auf dem server sein, da man hier den Ueberblick ueber alle aktuellen
        informationen haben sollte"""
        # Erstmal schauen ob der Sensor in der idZuweisungsdatei gelistet ist:
        try:
            zuweisungsListe = Communicator.fileReader(
                dateiName=DATEINAME_SENSOR_ZUWEISUNG, ordner=ORDNER_SENSOR_ZUWEISUNG, createIfNotExisting=True
            )
            for line in zuweisungsListe:
                if sensor.getID() in line:
                    line = line.replace(sensor.getID(), "")
                    line = line.replace(" ", "")
                    line = line.replace(TRENNZEICHEN_SENSOR_ZUWEISUNG, "")
                    line = line.replace("\t", "")
                    line = line.replace("\n", "")
                    line = line.replace("\r", "")
                    return line
        except IOError:
            print("Keine Zuweisungsdatei vorhanden")

        # Manuell den Sensor mithilfe der gegebenen Namensliste uaswaehlen
        ID = {}
        for sensorname in SENSORLISTE:
            ID[str(SENSORLISTE.index(sensorname))] = sensorname

        for key in sorted(ID):
            print("{key:5s}: {name}".format(key=str(key), name=ID[key]))
        eingbabe = None

        while eingbabe not in ID:
            eingbabe = raw_input("Auswahl:")
        return ID[eingbabe]
Example #3
0
	def run(self):
		self.Parameter = Communicator.GetParameter()
		try:
			self.Intervall = self.Parameter["ProtokollierungsIntervall"]
			if self.Intervall < 0.01:
				self.Intervall = 0.01
		except KeyError:
			print ("KeyError in Warnung --- ProtokollierungsIntervall in Parameterdatei nicht vorhanden")
			self.Intervall = KONTROLL_INTERVALL
		WarnText=""
		try:
			WarnDatei = Communicator.fileReader(dateiName=DATEINAME_ERROR_LOG, createIfNotExisting=False, errorMsg = False)  #vorhandene fehler einlesen
			for line in WarnDatei:
				WarnText+=line #Email mit exception lines erstellen
				self.Stoerung = True
			if WarnText == "":
				os.remove(DATEINAME_ERROR_LOG)
				self.Stoerung = False
			#
		except IOError:
			self.Stoerung = False

		# todo: test ob alle programmteile Laufen
		#KOmmunikationsprozess der von jedem programmteil aufgerufen wird und in datei geschrieben wird
		#test ob die Dateien aktualisiert werden
		if self.Stoerung:
			print ("Es sind Fehler vorhanden!!!")
			try:
				self.Intervall = self.Parameter["ProtokollierungsIntervallBeiFehler"]*3600
			except KeyError:
				self.Intervall = KONTROLL_INTERVALL_FEHLER #3 Stunden
			self.Lampe.Ein() #Alarmlampe an
			#print WarnText
			try:
				if self.Parameter["MailsAktiviert"] == "True":
					os.system ("sudo python Mailsoftware.py " + "\"\"\"" + WarnText + "\"\"\"") #eMail versenden
					os.remove(DATEINAME_ERROR_LOG)
			except KeyError:
				print ("KeyError in Watchdog: Parameter[\"MailsAktiviert\"] nicht vorhanden")
				os.system ("sudo python Mailsoftware.py " + "\"\"\"" + WarnText + "\"\"\"") #eMail versenden
				os.remove(DATEINAME_ERROR_LOG)
		else:
			print ("Keine Fehler vorhanden")
		self.ProtokolliereDaten()
		time.sleep(self.Intervall)