Ankündigung

Einklappen
Keine Ankündigung bisher.

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