Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Item Ein/Aus auf dedizierte, getrennte Ein- & Aus-Items aufteilen/weiterleiten

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

    [callidomus] Item Ein/Aus auf dedizierte, getrennte Ein- & Aus-Items aufteilen/weiterleiten

    Hallo,

    habe ein Item haus_aus für eine bestimmte GA, sowie das Item haus_ein für eine bestimmte andere GA.
    Wie kann ich denn ein Item haus_ein_aus bauen, das bei änderung entweder an haus_aus oder haus_ein weiterleitet und dort die entsprechenden GAs triggered?

    Geht das ohne Logiken mit einfachen triggers?

    #2
    Hi,

    also mir ist da nicht klar was wann geschickt werden soll...willst du nur was invertieren?

    VG
    Jürgen

    Kommentar


      #3
      Ein an Ein-Item leiten, Aus an Aus-Item leiten.
      versuche es jetzt mit diesem Codeblock:

      Item Haus_ein_aus:
      Code:
      if value == True:
          cd.kk16.haus_ein(True)
      else
          cd.kk16.haus_aus(False)

      Kommentar


        #4
        sollte gehen. Du must nur force update setzen bei den beiden items haus_ein und haus_aus
        Viele Grüsse
        Jürgen

        Kommentar


          #5
          Hi,

          ich habe mir für einen solchen Fall eine kleine Logik gebastelt, die mir solche Aktionen vereinfacht:

          knx_send_X.py
          Code:
          #!/usr/bin/env python
          #
          # Realisiert ein tor ueber das Attribut knx_send_0 oder knx_send_1.
          # Der Wert vom Attribut ist die GA, an die gesendet werden soll.
          # 
          # logik nur, wenn von Item getriggert
          if trigger.by == 'Item':
              lItem = cd.return_item(trigger.source)
              if 'knx_send_0' in lItem.conf and not trigger.value:
                  lGA = lItem.conf['knx_send_0']
                  cd.KNX.groupwrite(lGA, 0, '1')
              elif 'knx_send_1' in lItem.conf and trigger.value:
                  lGA = lItem.conf['knx_send_1']
                  cd.KNX.groupwrite(lGA, 1, '1')
              elif 'knx_send_NOT' in lItem.conf:
                  lGA = lItem.conf['knx_send_NOT']
                  cd.KNX.groupwrite(lGA, not trigger.value, '1')
          (die Logik geht davon aus, dass das KNX-Plugin mit dem Knotennamen KNX angelegt ist).

          Die Logik ist mit dem Trigger '*:knx_send_0 | *:knx_send_1 | *:knx_send_NOT' angelegt.

          Danach kann man in einem Item einfach die Attribute
          • knx_send_0 - sendet nur eine 0, wenn das Item auf 0 geht,
          • knx_send_1 - sendet nur eine 1, wenn das Item auf 1 geht,
          • knx_send_NOT sendet den negierten Wert des Items
          verwenden. An Deinem Beispiel:

          Code:
          [haus_ein_aus]
              name = Haus ein/aus
              knx_dpt = 1
              knx_listen = <ein-aus-ga>
              knx_send_0 = <aus-ga>
              knx_send_1 = <ein_ga>
          Geht an jedem Item, ohne Hilfsitems.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Sehr Nice, danke

            Kommentar


              #7
              Hi,

              habe gerade festgestellt, dass ich in meiner Logik noch irgendwo einen Fehler habe, muss das untersuchen. Bitte bis dahin nicht verwenden.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #8
                das NOT könnte/sollte man unabhängig von dem true/false abbilden, nutze es non-abapig so.
                ausserdem wird die logik doppelt getriggerd wenn man sowohl knx_send_true als auch knx_send_false registriert hat, das könnte auch eine fehlerquelle sein

                Code:
                #!/usr/bin/env python
                
                DISPATCH_TRUE   = 'knx_send_true'
                DISPATCH_FALSE  = 'knx_send_false'
                DISPATCH_INVERT = 'knx_send_invert'
                
                if trigger.by == 'Item':
                        item = cd.return_item( trigger.source )
                
                        if trigger.value and DISPATCH_TRUE in item.conf:
                                ga = item.conf[DISPATCH_TRUE]
                                logger.info( '{} dispatching True to {}'.format(trigger.source, ga) )
                                cd.knx.groupwrite(ga, 1, '1')
                        elif not trigger.value and DISPATCH_FALSE in item.conf:
                                ga = item.conf[DISPATCH_FALSE]
                                logger.info( '{} dispatching False to {}'.format(trigger.source, ga) )
                                cd.knx.groupwrite(ga, 0, '1')
                
                        if DISPATCH_INVERT in item.conf:
                                ga = item.conf[DISPATCH_INVERT]
                                inv = not trigger.value
                                logger.info( '{} dispatching inverted  {} to {}'.format(trigger.source, inv, ga) )
                                cd.knx.groupwrite(ga, inv, '1')

                Kommentar

                Lädt...
                X