Ankündigung

Einklappen

Aufruf

Bitte helft bei unserer Spendenaktion: Spendenaktion Helmut Lintschinger
Mehr anzeigen
Weniger anzeigen

Temperaturdifferenzmessung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Temperaturdifferenzmessung

    Hallo,

    ist es grundsätzlich möglich 2 Temperaturwerte in Smarthome.py miteinander zu vergleichen und bei einer bestimmten Temperaturdifferenz eine Aktion auszulösen?

    Hintergrund ist folgender: Ich habe 2 Pufferspeicher, bei beiden habe ich 1-Wire Sensoren angebracht. Nun soll bei einer bestimmten Temperaturdifferenz eine Pumpe über einen KNX-Schaltaktor betätigt werden.

    Ich verwende das aktuelle Image auf einen Raspberry mit ROT-Extension.

    Vielen Dank im Voraus.

    Tom

    #2
    Ja, das ist möglich.

    Kommentar


      #3
      vielen Dank. Dann werde ich mich einmal daran versuchen....

      Viele Grüße
      Tom

      Kommentar


        #4
        So ich hab`s nun mal probiert. Leider bekomme ich immer eine Fehlermeldung:
        Code:
        File "/usr/smarthome/logics/Ladepumpe.py", line 9, in <module>
            DeltaPuffer = AVG_HR - AVG_AR                        #momentaner Temperaturunterschied beider Pufferspeicher
        TypeError: unsupported operand type(s) for -: 'Item' and 'Item'
        mein Code lautet:

        HTML-Code:
        ### config ###
        
        Soll = sh.PufferAnschlussraum.Soll                    #Solltemperatur Pufferspeicher Anschlussraum
        AVG_HR = sh.PufferHeizraum.AVG                        #Durchschnittstemperatur Pufferspeicher Heizraum
        AVG_AR = sh.PufferAnschlussraum.AVG                    #Durchschnittstemperatur Pufferspeicher Anschlussraum
        Pumpen_Status = sh.LadePumpe.Status                    #Status Ladepumpe Anschlussraum
        Pumpe_ON_OFF = sh.LadePumpe.ONOFF                    #Pumpen an bzw. ausschalten                
        TempDelta = 5.0                                        #Temperaturunterschied beider Pufferspeicher, bei dem die Pumpe einschalten soll
        DeltaPuffer = AVG_HR - AVG_AR                        #momentaner Temperaturunterschied beider Pufferspeicher
        
        ### end config ###
        
        
        if Soll() > AVG_AR() and Pumpen_Status() == False and DeltaPuffer() >= TempDelta: 
            Pumpe_ON_OFF(True)
            
        if Soll() < AVG_AR() and Pumpen_Status() == True and DeltaPuffer() < TempDelta: 
            Pumpe_ON_OFF(False)
        Könnte mir vielleicht jemand weiterhelfen, ich weiß leider nicht mehr weiter...

        Vielen Dank im Voraus

        Tom

        Kommentar


          #5
          item(), sowie du es auch weiter unten korrekt machst.

          Grüße
          Robert

          Kommentar


            #6
            Hallo Robert,

            wenn ich oben die Klammern setzte bekomme ich wieder eine Fehlermeldung:
            HTML-Code:
            File "/usr/smarthome/logics/Ladepumpe.py", line 14, in <module>
                if Soll() > AVG_AR() and Pumpen_Status() == False and DeltaPuffer() >= TempDelta:
            TypeError: 'float' object is not callable
            Code:
            HTML-Code:
            ### config ###
            
            Soll = sh.PufferAnschlussraum.Soll                    #Solltemperatur Pufferspeicher Anschlussraum
            AVG_HR = sh.PufferHeizraum.AVG                        #Durchschnittstemperatur Pufferspeicher Heizraum
            AVG_AR = sh.PufferAnschlussraum.AVG                    #Durchschnittstemperatur Pufferspeicher Anschlussraum
            Pumpen_Status = sh.LadePumpe.Status                    #Status Ladepumpe Anschlussraum
            Pumpe_ON_OFF = sh.LadePumpe.ONOFF                    #Pumpen an bzw. ausschalten                
            TempDelta = 5.0                                        #Temperaturunterschied beider Pufferspeicher, bei dem die Pumpe einschalten soll
            DeltaPuffer = AVG_HR() - AVG_AR()                    #momentaner Temperaturunterschied beider Pufferspeicher
            
            ### end config ###
            
            
            if Soll() > AVG_AR() and Pumpen_Status() == False and DeltaPuffer() >= TempDelta: 
                Pumpe_ON_OFF(True)
                
            if Soll() < AVG_AR() and Pumpen_Status() == True and DeltaPuffer() < TempDelta: 
                Pumpe_ON_OFF(False)
            Viele Grüße
            Tom

            Kommentar


              #7
              HTML-Code:
              ### config ###
              
              Soll = sh.PufferAnschlussraum.Soll()                    #Solltemperatur Pufferspeicher Anschlussraum()
              AVG_HR = sh.PufferHeizraum.AVG()                       #Durchschnittstemperatur Pufferspeicher Heizraum
              AVG_AR = sh.PufferAnschlussraum.AVG()                    #Durchschnittstemperatur Pufferspeicher Anschlussraum
              Pumpen_Status = sh.LadePumpe.Status()                    #Status Ladepumpe Anschlussraum
              Pumpe_ON_OFF = sh.LadePumpe.ONOFF()                    #Pumpen an bzw. ausschalten                
              TempDelta = 5.0                                        #Temperaturunterschied beider Pufferspeicher, bei dem die Pumpe einschalten soll
              DeltaPuffer = AVG_HR() - AVG_AR()                    #momentaner Temperaturunterschied beider Pufferspeicher
              
              ### end config ###
              
              
              if Soll() > AVG_AR() and Pumpen_Status() == 0 and DeltaPuffer() >= TempDelta: 
                  Pumpe_ON_OFF(1)
                  
              if Soll() < AVG_AR() and Pumpen_Status() == 1 and DeltaPuffer() < TempDelta: 
                  Pumpe_ON_OFF(0)

              Kommentar


                #8
                Hallo,

                kommt leider immer noch der Fehler:

                HTML-Code:
                2013-12-31 15:27:05 ERROR    Pumpe        Logic: Pumpe, File: /usr/smarthome/logics/Ladepumpe.py, Line: 14, Method: <module>, Exception: 'float' object is not callable
                Traceback (most recent call last):
                  File "/usr/smarthome/lib/scheduler.py", line 327, in _task
                    exec(obj.bytecode)
                  File "/usr/smarthome/logics/Ladepumpe.py", line 14, in <module>
                    if Soll() > AVG_AR() and Pumpen_Status() == 0 and DeltaPuffer() >= TempDelta:
                TypeError: 'float' object is not callable

                Kommentar


                  #9
                  Du darfst die Klammern entweder oben in deiner "config" oder in deinen If Bedingungen setzen. So wie du es machst ist es doppelt gemoppelt. Ausserdem würde ich einfacherweise direkt auf die Items zugreifen und keine Zwischenvariablen nutzen.

                  Kommentar


                    #10
                    Hi

                    Noch mal einfach die Systematik: ohne Klammern ist das Item-Objekt, mit Klammern ist der Wert. Ohne Klammern geht es nicht, mit mehrmals Klammern aber auch nicht.

                    Grüße
                    Robert

                    Kommentar


                      #11
                      Temperaturdifferenzmessung

                      Ok, ich werd's nochmal probieren...aber erst nächstes Jahr😃 Einen guten Rutsch wünsche ich euch.

                      MfG
                      Tom

                      Kommentar


                        #12
                        Hi,

                        hab`s jetzt so gelöst:

                        HTML-Code:
                        if sh.PufferAnschlussraum.Soll() > sh.PufferAnschlussraum.AVG() and (sh.PufferHeizraum.AVG() - sh.PufferAnschlussraum.AVG()) >= 5.0 and sh.LadePumpe.Status() == False: 
                            sh.LadePumpe.ONOFF(True)
                            
                        else:
                            sh.LadePumpe.ONOFF(False)
                        ..funktioniert vorerst mal.

                        MFG
                        Tom

                        Kommentar

                        Lädt...
                        X