Ankündigung

Einklappen
Keine Ankündigung bisher.

Kontaktsimulation mit Switch-Item

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

    Kontaktsimulation mit Switch-Item

    Hallo,

    Ich habe an allen Fenstern bis auf den Fenstern im Kellergeschoss Kontaktschalter. Über eine Regel lass ich mir die offenen Fenster zählen.

    Code:
    rule "geöffnete Fenster zählen"
    when
        Item gKontakte received update
    then
        kontakteoffen.postUpdate(gKontakte.members.filter(s|s.state==OPEN).size)
    end
    Das funktioniert soweit auch.

    Jetzt möchte ich über ein Switch-Item den Status der Kellerfenster definieren und mir diese auch mitzählen.
    Aber bei dem Switch bekomme ich ja immer nur ein ON/OFF.

    Kann ich aus dem ON/OFF auch ein OPEN/CLOSED machen damit meine Regel dies mitzählt?
    Oder muss ich die Regel anpassen?

    Das mit der Regelanpassung bekomme ich denke ich noch hin, aber ich lass mir das ganze auch im HABPanel in einem Widget anzeigen, wie müsste ich dann dies anpassen?

    Code:
    <h4>
    <strong>
    {{(itemsInGroup('gKontakte') | filter:{state:'open'}).length}}
    /
    {{(itemsInGroup('gKontakte')).length}}
    </strong>
    Offen:
    </h4>
    <table class="table table-condensed">
    <tr ng-repeat="item in itemsInGroup('gKontakte')">
    <td class="text-right">{{item.label}}</td>
    <td class="text-left" ng-style="{color: (itemState(item.name)=='geöffnet')?'red':'green'}" >
    {{itemState(item.name)}}
    </td>
    </tr>
    Das einfachste wäre es wenn ich aus on/OFF OPEN/CLOSED machen könnte.

    Gruß TomW

    #2
    Du kannst das Problem umschiffen, indem Du in der Rule die beiden Itemsorten unterschiedlich behandelst. Entweder Du nutzt zwei Gruppen:
    Code:
    rule "geöffnete Fenster zählen"
    when
        Item gKontakte received update or
        Item gSwitche received update
    then
        kontakteoffen.postUpdate(gKontakte.members.filter[ s|s.state==OPEN].size + gSwitche.members.filter[s|s.state == ON].size)
    end
    oder Du nutzt eine gemischte Gruppe:
    Code:
    rule "geöffnete Fenster zählen"
    when
        Item gKontakte received update
    then
        var nAnz = gKontakte.members.filter[i|i instanceof ContactItem ].filter[ s|s.state==OPEN].size
        nAnz = nAnz + gKontakte.members.filter[i|i instanceof SwitchItem ].filter[ s|s.state==ON].size
        kontakteoffen.postUpdate( nAnz )
    end
    wobei in der ersten Variante die jeweilige Anzahl auch ohne Rule zur Verfügung steht (allerdings nicht in HABpanel), wenn man die Group Items entsprechend definiert.
    Der Umweg über die Variable dient nur der Übersichtlichkeit...

    Kommentar


      #3
      Danke!

      Kommentar


        #4
        Ich habe jetzt noch das Problem dass in diesem Abschnitt die Items mit dem Status "ON" nicht gezählt werden.

        Code:
        <strong> {{(itemsInGroup('gKontakte') | filter:{state:'open'}).length}} / {{(itemsInGroup('gKontakte')).length}} </strong>
        Habe es so versucht, aber das funktioniert nicht.

        Code:
        <strong> {{(itemsInGroup('gKontakte') | filter:{state:'open'}).length} [COLOR=#e74c3c]+ {(itemsInGroup('gKontakte') | filter:{state:'on'}).length}[/COLOR]} / {{(itemsInGroup('gKontakte')).length}} </strong>
        Wie kann ich die jeweilige Anzahl addieren?
        Jemand eine Idee?

        Tom

        Kommentar


          #5
          Habs den Fehler nun selbst gesehen,so muss es lauten:

          Code:
           <strong>
          {{(itemsInGroup('gKontakte') | filter:{state:'open'}).length + (itemsInGroup('gKontakte') | filter:{state:'on'}).length}}
          /
          {{(itemsInGroup('gKontakte')).length}}
          </strong>
          Tom

          Kommentar

          Lädt...
          X