Entitäten in einem Bereich zählen

Hallo zusammen,

ich brauche eure Hilfe. Ich möchte in einem Bereich alle eingeschalteten Entitäten von der Domäne „Licht“ zählen. Das habe ich hinbekommen, sieht jetzt so aus:

{{ ((expand(area_entities(area_name(‘schlafzimmer’)) | select(‘match’, ‘light’)) | selectattr(‘state’, ‘eq’, ‘on’) | list | count)) }}

Das funktioniert auch. Wobei ich trotzdem mal die Frage in die Runde werfe, ob das so der beste Weg ist?

Meine Herausforderung ist jetzt, dass ich nur die Lichter angezeigt bekommen möchte, die nicht mit dem Label „labelname“ versehen sind. Ich habe herausgefunden wie es geht die Auswahl noch um eine Filterung auf das Label zu ergänzen, das geht so:

{{ ((expand(area_entities(area_name(‘schlafzimmer’)) | select(‘match’, ‘light’) | select (‘in’, label_entities(“labelname”))) | selectattr(‘state’, ‘eq’, ‘on’) | list | count)) }}

Was ich aber einfach nicht hinkriege ist die Verneinung vom Label. Es sollen ja nicht alle eingeschalteten Lichter mit, sondern ohne das Label gezählt werden.

Ich danke euch für eure Unterstützung.

Liebe Grüße

SirTobi270

Update:

Workaround ist übrigens gerade die beiden Zählungen oben voneinander abzuziehen. Also alle eingeschalteten Lichter im Bereich minus alle eingeschalteten Lichter mit dem Label in dem Bereich. Dann habe ich ja genau den Wert, den ich haben will… Funktioniert auch, aber das kann ja nicht die Lösung sein.

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Das geht mit

rejectattr('entity_id', 'in', label_entities('labelname)) 

Perfekt, danke! Das ist die Lösung. Sieht dann bei mir so aus:

{{ ((expand(area_entities(area_name('schlafzimmer')) | select('match', 'light')) | selectattr('state', 'eq', 'on')| rejectattr('entity_id', 'in', label_entities('labelname')) | list | count)) }}

Super, danke @sirector !

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Ich persönlich würde die rejectattr immer als erstes nach dem expand setzen. Frag mich nicht warum.