Ankündigung

Einklappen
Keine Ankündigung bisher.

KWL mit "Treppenlichtschaltung" für 30min anschalten

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

    KWL mit "Treppenlichtschaltung" für 30min anschalten

    Hallo,

    ich möchte mittels KNX Taster meine KWL für 30min auf höchste Stufe stellen (nach dem Duschen, Kochen).
    Ich habe hierfür folgende Logik erstellt:

    logic.conf
    Code:
    [Ventilation]
        filename = ventilation_boost.py
        watch_item = kwl.level.boost
    Item in lueftung.conf
    Code:
    [kwl]
        [[level]]
            type = num
            comfoair_send = WriteVentilationLevel
            comfoair_read = ReadCurrentVentilationLevel
            comfoair_read_afterwrite = 1 # seconds
            comfoair_trigger = ReadSupplyAirRPM
            comfoair_trigger_afterwrite = 6 # seconds
            comfoair_init = true
            sqlite = yes
            knx_dpt = 5
            visu_acl = rw
            [[[uzsu]]]
                type = dict
                uzsu_item = kwl.level
                cache = true
                visu_acl = rw
            [[[boost]]]
                type = bool
                cache = on
                autotimer = 1m = 0
                knx_dpt = 1
                knx_send = 2/0/0
                knx_listen = 2/0/0
                knx_cache = 2/0/0
                visu_acl = rw
    logic in ventilation_boost.py
    Code:
    #!/usr/bin/env python
    if sh.kwl.level.boost():
        print('AN.')
        sh.kwl.level(4)
        sh.EG.gaestezimmer.steckdose.tv(1)
        logger.debug("Boost ventilation: Set to boost level 4")
    else:
        print('AUS.')
        sh.kwl.level(3)
        sh.EG.gaestezimmer.steckdose.tv(0)
        logger.debug("Boost ventilation: Set back to 3")
    Das Item sh.EG.gaestezimmer.steckdose.tv habe ist als Testobjekt genommen, da das meine erste Python Logik ist.

    Ich kann nun von meinem Taster aus die Logik starten. Somit geht das Licht an und nach 1m automatisch wieder aus. Dementsprechend funktioniert die Logik vom Setup. Allerdings wird die Lüftung nicht geändert.
    Wenn ich sh.kwl.level(4) im interactive-Modus ausführe, wird sie geschaltet. Wo also liegt bitte das Problem?

    Wie gesagt, ist mein 1. Python script und ich komm eher aus der PHP Ecke.

    Vielen Dank für Hilfe-
    hhhc
    ++ Der ultimative ETS Schnellkurs ++
    KNX und die ETS vom Profi lernen
    www.ets-schnellkurs.de

    #2
    Ich antworte hier mal selber.
    Scheint doch alles richtig zu sein. Ein erneuter Start und ein bisschen IT-Voodoo haben mal wieder geholfen.

    Btw, wann muss man denn Smarthome.py neu starten?
    Wenn ich neue Items/Logic anlege, aber doch nicht, wenn ich die Logic ändere?

    Nunja, alles gut.
    Schönen Abend.
    ++ Der ultimative ETS Schnellkurs ++
    KNX und die ETS vom Profi lernen
    www.ets-schnellkurs.de

    Kommentar


      #3
      Von den Scripten müsste es wohl eigentlich funktionieren - daher würde ich mal auf ein Problem auf der KNX-Seite tippen.

      Hab zwar mit KNX (noch) nicht viel am Hut - aber vielleicht mal zum Testen ein Item/Schalter einbauen, das ohne Zwischenlogik direkt auf eines der KWL-Register schreibt (z.B. Ein/Aus). Um zu testen, ob die Adressierung so ok ist ...

      Btw: Funktioniert das Logging? Dachte immer, dazu sollte man "import logging" oben drin zu stehen haben ...

      /tom

      Kommentar


        #4
        Ja, der gibt was aus.
        ++ Der ultimative ETS Schnellkurs ++
        KNX und die ETS vom Profi lernen
        www.ets-schnellkurs.de

        Kommentar


          #5
          Zitat von hhhc Beitrag anzeigen
          Hallo,
          Code:
          #!/usr/bin/env python
          if sh.kwl.level.boost():
              print('AN.')
              sh.kwl.level(4)
              sh.EG.gaestezimmer.steckdose.tv(1)
              logger.debug("Boost ventilation: Set to boost level 4")
          else:
              print('AUS.')
              sh.kwl.level(3)
              sh.EG.gaestezimmer.steckdose.tv(0)
              logger.debug("Boost ventilation: Set back to 3")
          Ich habe ähnliches gebaut weil es mir die Regelung meiner Comfoair zerlegt hat. Allerdings wollte ich den Comfort, das es nachher immer in die letzte Stufe vor der Stoßlüftung zurückschaltet und das ich bei einem weiteren Druck auf den Stoßlüftungstaster ebenfalls wieder zurückschalten kann. Das sieht dann so aus.

          Code:
          #!/usr/bin/env python
          #
          
          if sh.KWL.Parameter.Stosslueftung():
              logger.warning("Stosslueftung gestartet")
              logger.warning("Drehzahl" +str(int(sh.KWL.Parameter.Stosslueftung_Drehzahl())))
              logger.warning("Dauer" +str(int(sh.KWL.Parameter.Stosslueftung_Dauer())))
              
              #ABLUFTDREHZAHL SETZEN
              sh.KWL.Parameter.Abluftdrehzahl_Alt(sh.KWL.Parameter.Abluftdrehzahl())
              sh.KWL.Parameter.Abluftdrehzahl(sh.KWL.Parameter.Stosslueftung_Drehzahl())
              sh.KWL.Parameter.Abluftdrehzahl.autotimer("'"+str(int(sh.KWL.Parameter.Stosslueftung_Dauer()))+"m'", sh.KWL.Parameter.Abluftdrehzahl_Alt())
              #ZULUFTDREHZAHL SETZEN
              sh.KWL.Parameter.Zuluftdrehzahl_Alt(sh.KWL.Parameter.Zuluftdrehzahl())
              sh.KWL.Parameter.Zuluftdrehzahl(sh.KWL.Parameter.Stosslueftung_Drehzahl())
              sh.KWL.Parameter.Zuluftdrehzahl.autotimer("'"+str(int(sh.KWL.Parameter.Stosslueftung_Dauer()))+"m'", sh.KWL.Parameter.Zuluftdrehzahl_Alt())
              #STOßLUEFTUNGS-ITEM AM ENDE AUF 0 SETZEN
              sh.KWL.Parameter.Stosslueftung.autotimer("'"+str(int(sh.KWL.Parameter.Stosslueftung_Dauer()))+"m'",0)
          else:
              sh.KWL.Parameter.Abluftdrehzahl(sh.KWL.Parameter.Abluftdrehzahl_Alt())
              sh.KWL.Parameter.Abluftdrehzahl.autotimer()    
              sh.KWL.Parameter.Zuluftdrehzahl(sh.KWL.Parameter.Zuluftdrehzahl_Alt())
              sh.KWL.Parameter.Zuluftdrehzahl.autotimer()    
              logger.warning("Stosslueftung beendet")
          Die Dauer der Stoßlüftung und die Drehzahl setze ich über die SmartVisu. Dafür ist das Objekt "sh.KWL.Parameter.Stosslueftung_Dauer()"

          [[[Stosslueftung]]]
          type = num
          knx_dpt = 1
          knx_listen = 12/4/0
          cache=True
          [[[Stosslueftung_Dauer]]]
          type = num
          cache=True
          value=20
          [[[Stosslueftung_Drehzahl]]]
          type = num
          cache = True
          value = 85
          [[[Zuluftdrehzahl_Alt]]]
          type = num
          cache=True
          [[[Abluftdrehzahl_Alt]]]
          type = num
          cache=True
          Ich habe irgendwann mal das Wiregate-Plugin für die ComfoAir um die Drehzahl erweitert. Deswegen regle ich meine KWL nur noch Drehzahlbasiert. Das macht gerade bei Feuchteanfall im HWR spass wenn die Drehzahl der KWL sich nach dem Anstieg der Feuchte richtet. :-)

          Vielleicht nutzt mein Code als Pfad um deinen Code für diesen Memory-Effekt der letzten Drehzahlstufe zu erweitern.

          Kommentar


            #6
            Mal so aus Interesse gefragt (hab's mir jetzt nicht im Detail angeschaut) - dimmst Du die Drehzahl hoch/runter, oder gibst Du bei Stoßlüftung einfach "volle Spannung" auf die Motoren? Das Thema beschäftigt mich gerade, da ich nicht weiß, ob große Sprünge auf Dauer wirklich gesund für die Gleichspannungsmotoren sind ...

            Kommentar


              #7
              Zitat von Tom Bombadil Beitrag anzeigen
              Mal so aus Interesse gefragt (hab's mir jetzt nicht im Detail angeschaut) - dimmst Du die Drehzahl hoch/runter, oder gibst Du bei Stoßlüftung einfach "volle Spannung" auf die Motoren? Das Thema beschäftigt mich gerade, da ich nicht weiß, ob große Sprünge auf Dauer wirklich gesund für die Gleichspannungsmotoren sind ...
              Ich steuere die Drehzahl. Das ist ähnlich wie über die Regelung die Drehzahl der einzelnen Stufen einzustellen. Die Stoßlüftungsdrehzahl ist bei mir mit 85% eingestellt und kann per Visu geändert werden. 85% sind aber ausreichend bei mir.

              Die Regelung der Spannung an den Ventilatoren macht die ComfoAir noch selbst in abhängigkeit meiner Abgesetzten Drehzahl.

              Kommentar


                #8
                Ok, hab ich verstanden.

                Eine Änderung der Drehzahl zieht (technisch gesehen) eine Änderung der Eingangsspannung nach sich. Der Motor "tourt" aufgrund der Spannungsänderung auf die neue Drehzahl hoch oder runter.

                Meine eigentliche Frage bezog sich nicht mal auf diese Spannungsänderung, sondern darauf, ob das Schalten von teilweise erheblichen Änderungen auf Dauer für die Mechanik der Motoren gesund ist.

                Extremfall: Stufe 1 bei Dir eingestellt, Du drückst aus Versehen auf Stoßlüftung und nach 15s auf Normalstufe --> 2 derbe Änderungen innerhalb kurzer Zeit, wo die Motoren mit den daran fest verbauten Ventilatoren erst hoch- und dann wieder runtertouren müssen (incl. Anlauf-/Nachlaufzeit etc).

                Ist halt eines der Themen, das mich bei meiner KWL-Programmierung z.Z. auch beschäftigt, siehe hier ...

                /tom

                Kommentar


                  #9
                  Zitat von Tom Bombadil Beitrag anzeigen
                  Ist halt eines der Themen, das mich bei meiner KWL-Programmierung z.Z. auch beschäftigt, siehe hier ...
                  /tom
                  Hab ich grad was in Deinen anderen Post was dazu geschrieben da mir nicht ganz klar ist welcher der Posts jetzt der richtige ist? Vlt. solltest das in einen zusammen führen?

                  Gruss Sepp

                  Kommentar


                    #10
                    Hallo,

                    Zitat von hhhc Beitrag anzeigen
                    Wenn ich neue Items/Logic anlege, aber doch nicht, wenn ich die Logic ändere?
                    doch. Oder Du triggerst das erneute einlesen der Logik über das CLI Interface.

                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Hi Marcus,
                      da hätte ich noch einen Verbesserungsvorschlag:
                      Wenn eine neue Logik einen Syntaxfehler hat, ist sie gar nicht in der Liste der Logiken und somit nicht per CLI nachladbar.
                      Bis man das gefixt hat (potentiell mehrere Fehler, die nacheinander auftauchen), muss man immer wieder sh.py neu starten.
                      Schöner wäre es, wenn eine solche Logik genau so wie eine mit einem Laufzeitfehler behandelt wird:
                      - bei jedem Aufruf steht der Fehler im log und ich kann die Korrektur per CLI nachladen, ohne sh.py neu zu starten.
                      Gruß Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Zitat von mumpf Beitrag anzeigen
                        Hi Marcus,
                        da hätte ich noch einen Verbesserungsvorschlag:
                        Wenn eine neue Logik einen Syntaxfehler hat, ist sie gar nicht in der Liste der Logiken und somit nicht per CLI nachladbar.
                        Bis man das gefixt hat (potentiell mehrere Fehler, die nacheinander auftauchen), muss man immer wieder sh.py neu starten.
                        Schöner wäre es, wenn eine solche Logik genau so wie eine mit einem Laufzeitfehler behandelt wird:
                        - bei jedem Aufruf steht der Fehler im log und ich kann die Korrektur per CLI nachladen, ohne sh.py neu zu starten.
                        Gruß Waldemar
                        Gibt's da nicht schon einen Parameter, der die Logiken neu startet? -l bzw. --logics oder so ähnlich? Komme gerade nicht an meinen Pi heran, um das zu prüfen ...

                        /tom

                        Kommentar


                          #13
                          Danke für den Tipp, ich kann ja selber nachschauen...
                          Gruß Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Habe es jetzt ausprobiert.

                            smarthome.py -l lädt nur die Logiken, die man im cli mit dem Kommando ll ausgegeben bekommt. Das sind nicht die, die beim Start von smarthome syntaktisch falsch waren.

                            Schade...

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              #15
                              Muss ich nochmal hochholen. Hier mal mein Versuch:

                              Code:
                              #!/usr/bin/env python
                              #
                              if sh.ug.heizungsraum.kwl.stosslueftung():
                                  logger.warning("Stosslueftung gestartet")
                                  logger.warning("Drehzahl"+str(int(sh.ug.heizungsraum.kwl.stosslueftung_drehzahl())))
                                  logger.warning("Dauer"+str(int(sh.ug.heizungsraum.kwl.stosslueftung_dauer())))
                                  
                                 
                                  sh.ug.heizungsraum.kwl.drehzahl_alt(sh.ug.heizungsraum.kwl.stufe())
                                  sh.ug.heizungsraum.kwl.stufe(sh.ug.heizungsraum.kwl.stosslueftung_drehzahl())
                                  sh.ug.heizungsraum.kwl.stufe.autotimer(int(sh.ug.heizungsraum.kwl.stosslueftung_dauer())*60, int(sh.ug.heizungsraum.kwl.drehzahl_alt()))
                                  sh.ug.heizungsraum.kwl.stosslueftung.autotimer(int(sh.ug.heizungsraum.kwl.stosslueftung_dauer())*60,0)
                                  logger.warning("Stufe_alt"+str(int(sh.ug.heizungsraum.kwl.drehzahl_alt())))
                              else:
                                  sh.ug.heizungsraum.kwl.stufe(sh.ug.heizungsraum.kwl.drehzahl_alt())
                                  sh.ug.heizungsraum.kwl.stufe.autotimer()      
                                  sh.ug.heizungsraum.kwl.stosslueftung.autotimer()
                                  logger.warning("Stosslueftung beendet")
                              Code:
                              [ug]
                                  [[heizungsraum]]    
                                      [[[kwl]]]    
                                          [[[[stufe]]]]
                                              type = num
                                              visu_acl = rw
                                              knx_dpt = 5001
                                              knx_listen = 0/0/2
                                              knx_send = 0/0/2
                                              knx_init = 0/0/2
                                          [[[[filter_alarm]]]]
                                              type = bool
                                              visu_acl = rw
                                              knx_dpt = 1
                                              knx_listen = 0/0/3
                                              knx_send = 0/0/3
                                              knx_init = 0/0/3        
                                          [[[[luftstrom]]]]    
                                              type = num
                                              visu_acl = rw
                                              knx_dpt = 5001
                                              eval = sh.ug.heizungsraum.kwl.stufe()*300.0/100.0
                                              eval_trigger = ug.heizungsraum.kwl.stufe
                                          [[[[stosslueftung]]]]
                                              enforce_updates = yes
                                              type = bool
                                              visu_acl = rw
                                              knx_dpt = 1
                                              knx_listen = 0/0/4
                                              knx_send = 0/0/4
                                              knx_init = 0/0/4
                                              cache=True
                                          [[[[stosslueftung_dauer]]]]
                                              type = num
                                              visu_acl = rw
                                              cache=True
                                              value=20
                                          [[[[stosslueftung_drehzahl]]]]
                                              type = num
                                              visu_acl = rw
                                              cache = True
                                              value = 85
                                          [[[[drehzahl_alt]]]]
                                              type = num
                                              visu_acl = rw
                                              cache = True
                                              cache=True
                              Ich würde gerne über die Visu und einen externen KNX taster die Stoßlüftung starten und nach der Dauer X wieder den alten Wert setzen.

                              Log:
                              2015-02-17 23:16:14 WARNING stosslueftung Stosslueftung gestartet
                              2015-02-17 23:16:14 WARNING stosslueftung Drehzahl35
                              2015-02-17 23:16:14 WARNING stosslueftung Dauer5
                              2015-02-17 23:16:14 WARNING stosslueftung Stosslueftung gestartet
                              2015-02-17 23:16:14 WARNING stosslueftung Drehzahl35
                              2015-02-17 23:16:14 WARNING stosslueftung Dauer5
                              2015-02-17 23:16:14 WARNING stosslueftung Stufe_alt35
                              2015-02-17 23:16:14 WARNING stosslueftung Stufe_alt35
                              Blöd ist, dass in meiner Logik
                              ug.heizungsraum.kwl.stufe
                              Doppelt aufgerufen wird. Vermutlich ist es einfach, aber ich sehe es gerade nicht.

                              Ich dank euch schon mal.

                              Ciao Hochpass
                              Zapft ihr Narren der König hat Durst

                              Kommentar

                              Lädt...
                              X