Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik Lüftersteuerung

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

    Logik Lüftersteuerung

    Hallo wir haben im Bad einen Lüfter ( Meico mit 2 Stufen ) nun würde ich gerne im SHNG eine Logik erstellen - eine Art Schwellwertschalter die bei erreichen einer definierten Luftfeuchte den Lüfter jeweils in Stufe 1 oder 2 Startet.

    Anbei die Logik


    Code:
    #!/usr/bin/env python3
    # badezimmer.py
    if sh.EG.Bad.Luftfeuchte() >60 :
    (sh.EG.Bad.Stufe1(1))
    or sh.EG.Bad.Luftfeuchte() >75 :
    (sh.EG.Bad.Stufe2(1))
    else:
    sh.EG.Bad.Stufe1(0)
    sh.EG.Bad.Stufe2(0)
    Einrückungen sind Korrekt

    Jedoch kann die Logik nicht geladen werden
    Gruss Oliver

    Projektleiter Technische Gebäudeausrüstung

    #2
    Zitat von jonny7792 Beitrag anzeigen
    Einrückungen sind Korrekt
    Dann Poste doch bitte mit Einrückungen. Der Button "Quellmode" (links mit <>) im Editor wirkt Wunder, wenn Du ihn vor dem Pasten benutzt.

    Das die Logik nicht geladen werden kann, ist verständlich. Schließlich hat sie keinen gültigen Syntax: Was soll das or da?

    Btw.:
    - Die Klammen um das setzen der Itemwerte sind überflüssig
    - Ein Blick in das Log hätte Dir auch die Ursache schon verraten, warum sich die Logik nicht laden lässt:

    Code:
    2020-02-23  10:11:15 ERROR    lib.logic            Exception: invalid syntax (a_testlogic3.py, line 3)
    Traceback (most recent call last):
      File "/usr/local/shng_dev/lib/logic.py", line 1033, in _generate_bytecode
        self.bytecode = compile(code, self.pathname, 'exec')
      File "/usr/local/shng_dev/logics/a_testlogic3.py", line 3
        or sh.EG.Bad.Luftfeuchte() >75 :
         ^
    SyntaxError: invalid syntax
    Zuletzt geändert von Msinn; 23.02.2020, 10:13.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Guten Morgen Msinn


      anbei die Logik im Quellmode

      Code:
      #!/usr/bin/env python3
      # feuchte.py
      if sh.EG.Bad.Luftfeuchte() >60:
          (sh.EG.Bad.Stufe1(1))
      or sh.EG.Bad.Luftfeuchte() >75:
          (sh.EG.Bad.Stufe2(1))
      else:
          (sh.EG.Bad.Stufe1(0))
          (sh.EG.Bad.Stufe2(0))
      Gruss Oliver

      Projektleiter Technische Gebäudeausrüstung

      Kommentar


        #4
        Das "or" ist für die zweite Stufe

        Sobald der Wert Luftfeuchte 60 % erreicht dann Stufe 1
        Sobald 75 % erreicht sind Stufe 2

        wenn nicht dann Stufe 0 --> AUS
        Gruss Oliver

        Projektleiter Technische Gebäudeausrüstung

        Kommentar


          #5
          So klappt das nicht.
          Wenn dann so:

          if A OR B:
          machWasTolles
          else:
          machWasAnderesTolles

          Check das mal: https://realpython.com/python-or-operator/

          Kommentar


            #6
            Zitat von thengsty Beitrag anzeigen
            So klappt das nicht.
            Wenn dann so:

            if A OR B:
            machWasTolles
            else:
            machWasAnderesTolles

            Check das mal: https://realpython.com/python-or-operator/
            Das ist mir bewusst

            Jedoch sollte in Abhängigkeit der Luftfeuchte Stufe 1 oder 2 Aktiv werden

            Code:
            #!/usr/bin/env python3
            # feuchte.py
            if sh.EG.Bad.Luftfeuchte() >70:
                sh.EG.Bad.Stufe2(1)
                sh.EG.Bad.Stufe1(0)
            else:
                (sh.EG.Bad.Stufe2(0))
                (sh.EG.Bad.Stufe1(1))
            Jetzt sollte einfach noch der Venti ausgehen wenn das Licht im Badezimmer aus ist.
            Zuletzt geändert von jonny7792; 23.02.2020, 12:06.
            Gruss Oliver

            Projektleiter Technische Gebäudeausrüstung

            Kommentar


              #7
              Code:
              #!/usr/bin/env python3
              #feuchte.py
              if sh.EG.Bad.Luftfeuchte() >= 60:
                  sh.EG.Bad.Stufe1(1)
                  if sh.EG.Bad.Luftfeuchte() >=75:
                      sh.EG.Bad.Stufe2(1)
              else:
                  sh.EG.Bad.Stufe1(0)
                  sh.EG.Bad.Stufe2(0)

              Kommentar


                #8
                Danke dir
                Gruss Oliver

                Projektleiter Technische Gebäudeausrüstung

                Kommentar


                  #9
                  Zitat von jonny7792 Beitrag anzeigen
                  Das "or" ist für die zweite Stufe
                  Das ist kein gültiger Python Syntax!

                  entweder als geschachteltes if Statement oder elseif benutzen
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar

                  Lädt...
                  X