Ankündigung

Einklappen
Keine Ankündigung bisher.

Erste Erfahrung mit HSL 2.0-Framework

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

    #16
    Danke. Werde über das Eine oder Andere noch ein wenig grübeln müssen ... Schönen Abend.

    Kommentar


      #17
      Code:
      # -*- coding: iso-8859-1 -*-
      LOGIKCATEGORY="#lucien\hsb"
      LOGIKNAME="reg_wohnen"
      LOGIKID="10310"
      LOGIKVERSION="2.0b"
      LOGIKCOMPILEMODE=1
      LOGIKDEBUG=1
      LOGIKDESCRIPTION="""
      Raumregelung (Betriebsmodus und Präsenzobjekt) bei Scharf, Urlaub, Tag und Nacht sowie Zeit, Präsenz
      """
      
      #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
      #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
      #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
      #5003|Speicher|Initwert|Remanent
      #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
      #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
      
      5000|"@LOGIKCATEGORY@\\@LOGIKNAME@"|0|7|"Nacht"|"Urlaub"|"Scharf"|"Pr_Zeit"|"Pr_Bew"|"HVAC_Tag"|"HVAC_Nacht"|2|"Betr_Modus"|"Prsenz"|"@LOGIKID@ - V@LOGIKVERSION@"
      
      5001|7|2|0|0|1
      
      5002|1|0|0 # Nacht
      5002|2|0|0 # Urlaub
      5002|3|0|0 # Scharf
      5002|4|0|0 # Präsenz gemäß Zeit
      5002|5|0|0 # Präsenz gemäß Bewegungsmelder
      5002|6|2|0 # HVAC Code Tag
      5002|7|3|0 # HVAC Code Nacht
      
      5004|1|0|0|2|0 # Betriebsmodus
      5004|2|0|0|2|0 # Präsenz für Heizung
      
      ## nur beim ersten Mal initialisieren
      5012|0|"EI and not hasattr(pItem.LogikItem,'SHARED_REG_WOHNEN')"|"@BYTECODE@"|""|0|0|0|0
      @BYTECODESTART@
      ## Name bisschen angepasst
      class C10310_regwohnen(object):
          def __init__(self,pItem):
              ## reicht ... rest brauchen wir nicht und dann bauen wir es auch nicht ein
              pItem.LogikItem.SHARED_REG_WOHNEN = self  
      
          def check(self,EN,AN):
              ## ist automatisch wahr ... brauchst du nicht mit True vergleichen
              if EN[1] or EN[2]: # Nacht oder Urlaub
                  AN[1]=EN[7]
                  AN[2]=0
              elif not EN[1] and not EN[3]: # weder Nacht noch Scharf
                  AN[1]=EN[6]
                  AN[2]=(ein[4] or ein[5]) # Präsenz gemäß Zeit oder Präsenzmelder
              else:
                  AN[1]=EN[6]
                  AN[2]=0
        
      C10310_regwohnen(pItem)
      @BYTECODEEND@
      
      ## reicht einmal und dann direkt auf AN schreiben, hier muss dann Ausgang auf 0 sonst würde es wieder überschrieben
      5012|0|""|"pItem.LogikItem.SHARED_REG_WOHNEN.check(EN,AN)"|""|0|0|0|0
      Nils

      aktuelle Bausteine:
      BusAufsicht - ServiceCheck - Pushover - HS-Insight

      Kommentar


        #18
        Das ist ja nett! Vielen Dank.

        Kommentar

        Lädt...
        X