Ankündigung
Einklappen
Keine Ankündigung bisher.
Count oder sowas in der Art in eval
Einklappen
X
-
Zitat von Cannon Beitrag anzeigenMir 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.
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
Eval benutzt den Python Parser. Eval Ausdrücke sind reine Python Expressions.
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
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?
Stichworte: -


Einen Kommentar schreiben: