Ankündigung

Einklappen
Keine Ankündigung bisher.

Count oder sowas in der Art in eval

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

    Count oder sowas in der Art in eval

    Ich nutze eval und eval_trigger in einem item. Das trigge rbeinhaltet eine Liste mit einigen Einträgen:

    eval_trigger:
    - item1
    - item2
    - item3
    - ...

    Die Items sind entweder False or True und ich möchte ermitteln, ob z.B. 2 von den 10 Items True sind. Also irgendwas in der Art. Es würde mir auch in Prozent reichen, also 10% sind True oder so. Gibt es da was, was ich in eval verwenden kann, ohne jedes Item mit if abzufragen?

    #2
    Je nachdem, wie das ausgewertet wird, kannst du die einfach addieren. In Python sind bool eigentlich int, und True === 1, also ist True + True + True = 3.

    Probiers mal aus... hängt vom Parser des eval ab. In Python geht es.

    Kommentar


      #3
      Eval benutzt den Python Parser. Eval Ausdrücke sind reine Python Expressions.
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        Das verstehe ich. Aber gibt es eine einfachere Möglichkeit, ohne jedes item da reinzutragen, also anstatt:

        eval: True if (sh.item1() + sh.item2() + sh.item3() + sh.item4() + sh.item5()) < 3 else False

        Mir fehlt der Bezug zur Übergabe der Items.

        eval: avg

        würde ja Beispielsweise den Mittelwert geben. Denn irgendwo holt er sich ja die Item-Werte her. Aber das wird ja so nicht gehen, nehme ich mal an:

        eval: True if avg < 0.6 else False

        Kommentar


          #5
          Zitat von Cannon Beitrag anzeigen
          Mir fehlt der Bezug zur Übergabe der Items.

          eval: avg

          Die zusätzlichen Funktionen, die smarthome.py implementiert hat (and, or, sum, avg, min, max) bestimmen die entsprechenden Werte aus den Item Werten aller Trigger des Items mit dem eval Ausdruck. Andere Möglichkeiten sind nicht implementiert. Die Angabe ersetzt allerdings den Python Ausdruck. Du kannst Daher in dem Item nicht weiter mit dem avg, sum, ... rechnen. Dazu müsstest Du ein weiteres Item anlegen, welches mit dem Wert dann weiter rechnen kann.
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            Danke!

            Kommentar

            Lädt...
            X