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)
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()
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