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 controlHeizung(self):
        """Steuert den Heizungspuffer"""
        # Hinweis: beim Versorgungspuffer Pufferreserve kommen durch die lange Leitung noch Pumpverluste hinzu
        heizungMinTemperatur = self.PufferHeizung.getMinTemperatur()
        hygieneMinTemperatur = self.PufferHygiene.getMinTemperatur()
        if heizungMinTemperatur is None or hygieneMinTemperatur is None:
            return
        temperaturEingangMin = heizungMinTemperatur + ERSATZPARAMETER_TEMPERATUR_PUMPVERLUSTE + ERSATZPARAMETER_TEMPERATURDIFFERENZ_MIN_PUMPEN
        volumenEingang = self.PufferReserve.VolumenUeberTemperatur(temperaturEingangMin)

        try:
            HeizkreisMischer = Communicator.loadObjectFromServer(name=BEZEICHNUNG_MISCHER + BEZEICHNUNG_KELLER)
            if HeizkreisMischer is not None:
                temperaturAusgangMin = HeizkreisMischer.TemperaturAusgangSoll # Der Heizungspuffer muss mindestens so warm sein wie die Solltemperatur vom Mischer
            else:
                temperaturAusgangMin = hygieneMinTemperatur + ERSATZPARAMETER_TEMPERATURDIFFERENZ_MIN_PUMPEN
        except Exception as e:
            Communicator.SchreibeFehler(e, 'controlHeizung@PufferSteuerung')
            temperaturAusgangMin = hygieneMinTemperatur + ERSATZPARAMETER_TEMPERATURDIFFERENZ_MIN_PUMPEN

        # Fall 1: HeizungsPuffer Voll
        if self.PufferHeizung.Voll:
            if self.PufferReserve.Voll: # weiterlaufen lassen, falls auch reserve voll
                #Beladepumpe:
                self.PufferHeizung.BeladepumpeEin()
                #Entladepumpe:
                self.PufferHeizung.EntladepumpeEin()
            else: # Anhalten falls selber voll und reserve nicht voll
                self.PufferHeizung.BeladepumpeAus()

        # Fall 2: HeizungsPuffer Leer
        elif self.PufferHeizung.Leer:
            #Beladepumpe
            try:
                mindestvolumen =  Communicator.GetParameter(parameter=PARAMETER_MINDESTVOLUMEN_PUMPEN)
                if volumenEingang > mindestvolumen:
                    self.PufferHeizung.BeladepumpeEin()
                else:
                    Communicator.SchreibeFehler('PufferHeizung laedt nicht', '\nVorhandenes Volumen: ' + volumenEingang +
                    '\nErforderlichesVolumen: ' + mindestvolumen)
            except KeyError:
                if volumenEingang > ERSATZPARAMETER_MINDESTVOLUMEN_PUMPEN:
                    self.PufferHeizung.BeladepumpeEin()
            #Entladepumpe
            self.PufferHeizung.EntladepumpeAus()

        # Fall 3: Ausgangstemperatur zu niedrig zum Laden
        if self.PufferHeizung.getMaxTemperatur() <= temperaturAusgangMin: # Pumpe ausschalten, falls Temperaturniveau zu niedrig
            #Entladepumpe,
            self.PufferHeizung.EntladepumpeAus()
Example #3
0
    def SetHeizbetrieb(self, value=None):
        """Setzt den Heizbetrieb-Flag im Hinblick auf Eingabeparameter und Umgebungsvariablen des Mischers"""
        if value is not None:
            if self.Heizbetrieb is True and value is False: # Falls bisher Heizbetrieb war -> Mischer komplett schließen
                self.KomplettKalt()
            self.Heizbetrieb = bool(value)
        else:
            self.Heizbetrieb = True
            # Heizbetrieb abschalten, wenn die benötigte Temperatur nicht geliefert werden kann
            if self.versorgungsPuffer:  # Teste ob einer zugwiesen wurde
                # Ermittel die maximale lieferbare Temperatur
                if self.TemperaturAusgangSoll > Communicator.loadObjectFromServer(name=self.versorgungsPuffer).getMaxTemperatur():
                    self.SetHeizbetrieb(False)
                    return

            if self.TemperaturRaumSoll is not None and self.TemperaturAussen is not None:
                # Heizbetrieb abschalten, wenns draussen zu warm ist
                self.DeltaTStart = self.Parameter[PARAMETER_DELTA_TEMPERATUR_INNEN_AUSSEN_MIN]
                DeltaT = self.TemperaturRaumSoll - self.TemperaturAussen
                if DeltaT <= self.DeltaTStart:
                    self.SetHeizbetrieb(False)
                    return