Ankündigung

Einklappen
Keine Ankündigung bisher.

OH2 => Group:Rollershutter:OR Problem

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

    OH2 => Group:Rollershutter:OR Problem

    Hallo zusammen

    ich habe Probleme mit einer Gruppe für Rollladen unter OpenHab 2

    Das folgende Item habe ich angelegt
    Code:
    Group:Rollershutter:OR(UP, DOWN, STOP) gShutterEG "Rollladen Erdgeschoss [(%d)]" <rollershutter>
    Beim Start von OpenHab kommt der folgende Hinweis/Fehler im Log
    Code:
    22:24:02.685 [WARN ] [arthome.core.items.dto.ItemDTOMapper] - State 'STOP' is not valid for a group item with base type 'Rollershutter'
    22:24:02.686 [ERROR] [arthome.core.items.dto.ItemDTOMapper] - Group function 'OR' requires two arguments. Using Equality instead.
    Wenn ich dann wie folgt ändere, meldet der Designer bereits einen Fehler
    Code:
    Group:Rollershutter:EQUAL(UP, DOWN, STOP) gShutterEG "Rollladen Erdgeschoss [(%d)]" <rollershutter>
    Die Doku hilft mir da leider auch nicht weiter

    Hat jemand einen Tipp?? Und kann ich eigentlich solche Gruppen verschachteln?

    Rolladen_All
    Rolladen_EG
    Rolladen_OG
    Rollladen_OG_Sued
    Rolladen_OG_Nord

    Sprich:
    1. Wenn ich Rolladen_All fahre, fahren alle Rollladen
    2. Wenn ich Rolladen_OG fahre, fahren auch Rolladen_OG_Sued und Nord
    3. etc


    #2
    Die Aussage
    Group function 'OR' requires two arguments.
    hast Du aber schon verstanden, oder?
    OR(UP, DOWN, STOP)
    sind drei Argumente.
    Du kannst es mit OR(UP, DOWN) probieren, allerdings sind UP/DOWN/STOP ja Befehle, die an die Rollershutter geschickt werden.
    Die Status werden aber immer ein Integer 0-100 (genauer gesagt ein Prozentwert) sein, so dass ein OR an dieser Stelle eh nicht funktioniert.
    AVG, MIN oder MAX als Aggregation der Einzelwerte wäre vermutlich passender, je nachdem, was Du anzeigen willst. Falls Du die Anzahl der geschlossenen Rollläden anzeigen willst, wird das so nicht funktionieren.

    Zu deiner 2. Frage: Ja, das sollte eigentlich funktionieren.
    Merken

    Kommentar


      #3
      Also, ich würde es ungefähr so machen (Achtung, nicht die vollständige/geprüfte Lösung):
      sitemap:
      Code:
      Switch        item=Rolladen_All_switch mappings=[0="UP", 1="STOP", 2="DOWN"]
      Item:
      Code:
      Switch    Rolladen_All_switch        "Rollladen Erdgeschoss"    <rollershutter>
      rule:
      Code:
      rule "Rollo EG"
      when
          Item Rolladen_All_switch received command
      then
               postUpdate(Rolladen_All,Rolladen_All_switch.state)
      end
      und evtl. statt UP/STOP/DOWN coole Unicode Symbole: ᐃ ⬜ ᐁ
      https://community.openhab.org/t/spic...-symbols/13866
      Zuletzt geändert von Eugenius; 14.09.2017, 14:26.

      Kommentar


        #4
        Tja, das geht schon im ersten Anlauf schief, weil Switch nur ON oder OFF sein kann, aber nicht 0, 1 oder 2. Mit einem Number Item geht es dann natürlich, aber es ging ja um das OR, und das erwartet immer noch 2 Argumente...

        Die Gruppe fahren zu lassen ist hingegen ganz ohne mappings möglich, solange die Gruppe als Group:Rollershutter definiert ist, dann gibt es die drei Knöpfe und ein Druck sollte den Steuerbefehl an jeden Member versenden.

        Kommentar


          #5
          Zitat von udo1toni Beitrag anzeigen
          Die Aussage hast Du aber schon verstanden, oder?
          Ja, habe ich schon Daher habe ich ja Equal versucht, da dies automatisch so genutzt wird und ja sogar funktioniert.
          Aber wenn ich Equal nehme, gibt es eben einen Fehler

          Schön wäre eine Anzeige, wie viele Rollladen nicht oben also > 0 sind?!

          Kommentar


            #6
            Zitat von JoergA Beitrag anzeigen
            Schön wäre eine Anzeige, wie viele Rollladen nicht oben also > 0 sind?!
            Vermutlich wirst Du das als separates Item realisieren müssen:
            Code:
            Number Rollladen_zu "Nicht offen [%d]"
            Code:
            rule "Rollläden zählen"
            when
                Item gShutter received update
            then
                Rollladen_zu.postUpdate(gShutter.allMembers.filter(s|(s.state as DecimalType).intValue > 0).size)
            end
            .allMembers repräsentiert dabei alle Items, die unmittelbar oder mittelbar Mitglieder sind (also nicht nur Kinder sondern auch Kindeskinder)
            .size ist die Anzahl der Items (nach der Filterung)

            Kommentar


              #7
              wie hast du es eigentlich gelöst das beim fahren aller rollos auch das group item einen wert zurückbekommt um in der visu ein korrektes update anzuzeigen (angenommen ich hab einen slider für ein group:rollershutter) item, wie bekomm ich dann auf diesen slider eine rückmeldung ? setz ich den slider zb auf 40%, fahren alle rollos auf 40, aber der slider springt dann wieder auf 100%

              Kommentar


                #8
                Du kannst versuchen, das Group Item mit einer passenden Funktion zu definieren, musst Dich da aber zwangsläufig für ein bestimmtes Verhalten entscheiden.
                Code:
                Group:Rollershutter:AVG gAvg "Durchschnittlich geschlossen [%d%%]"
                Group:Rollershutter:MIN gMin "Minimal geschlossen [%d%%]"
                Group:Rollershutter:MAX gMax "Maximal geschlossen [%d%%]"
                Summe ist nicht sinnvoll, ansonsten zeigt die Gruppe halt verschiedene Stände an, je nachdem, welche Akkumulation der Werte Du verwendest.

                Kommentar

                Lädt...
                X