Template oder Automation: Bestimmte Entität nach Attribut filtern

Schlumperdix

New member
Hallo zusammen,

ich habe eine, so wie ich glaube einfache Herausforderung, für die ich einfach keine Lösung finde.

Zunächst mein Status. Bin Anfänger und habe ca 8 Wochen HA Erfahrung.

Ich habe einen Gruppen Helfer erstellt "Alle Jalousien". Darin finden sich alle meine Rollos. Die Rollos steuere ich mit Shellys.

Nun habe ich unterschiedliche Automationen zum öffnen und schließen dieser Jalousien, was insgesamt auch gut funktioniert, wofür ich den Helfer aber bislang nicht benötigt habe.

Nun bleibt man aber nicht auf der Stelle stehen, sondern möchte sich ja weiterentwickeln ;-). Und da in den Automationen ja am Ende immer dasselebe passiert, nämlich entweder Rollos Schließen oder öffnen, dachte ich das man das auch vereinfachen könnte.
Eine dieser Automationen öffnet mir "auf Knopfdruck" alle Jalousien der Helfer Gruppe (Alle Jalousien), die im Status "closed" sind. Das mache ich so in der Automation:

Code:
action: cover.open_cover
data:
  entity_id: >-
    {{ expand('cover.alle_jalousien') | selectattr("state", "eq", "closed") |
    map(attribute="entity_id") | list }}

Das klappt soweit gut, ist aber nur die halbe Miete, denn alle Jalousien, die nicht im Status "closed" stehen werden nicht geöffnet. Alle Rollos, die das Attribut current_position < 100 haben, stehen im Status "open" und werden nicht geöffnet. Das soll aber passieren.

Also würde ich gerne aus der Helfergruppe "Alle Jalousien" lieber nicht diejenigen herausfiltern, die im Status "Closed" stehen, sondern die die im Status "open" stehen aber wo das Attribut current_position kleiner ist als 100 ist (damit wären das die Rollos die nicht vollständig geschlossen, und auch nicht vollständig geöffnet sind).

Das bekommt ich nicht hin. :) und ich finde auch kein vernünftiges Anwendungsbeispiel. Alles Beispeile beziehen sich immer nur auf den Zustand.

mittels:
Code:
{{ state_attr('cover.alle_jalousien', 'current_position') }}
bekomme ich current_position der Helfergruppe. Diese rechnet aber anscheinend alle current_positions aller Rollos zusammen und gibt den Wert aus.


Code:
{{ expand('cover.alle_jalousien') | selectattr("current_position", "lt", "100") | map(attribute="entity_id") | list }}
wirft einen Error: homeassistant.helpers.template.TemplateState object' has no attribute 'current_position'

Und damit bitte ich euch um Hilfe ...
 
Keine Ahning von Jalousien, aber mal ne doofe Frage: was passiert, wenn man eine offene Jalousie öffnet? Also wozu muss man da was selekieren?
 
wenn ich alle selektiere wird logischerweise auch jeder Aktor angesteuert.

Keiner eine Ahnung wie man sowas machen könnte... Fahre alle hoch die nicht vollständig offen sind? Bzw alle die unterhalb eines bestimmten Wertes des Atribut current_position sind?
 
Aber "fahre alle hoch die nicht ganz offen sind" ist doch das gleiche wie "fahre alle hoch"?!
Was willst du erreichen?
 
Wo ist das Problem, das jeder Aktor angesteuert wird ?
Ein Rollo, das offen ist, wird nicht weiter auf gehen, weil die einen Endanschlag haben und dort abschalten, egal, was der Aktor sagt.
Ich habe bei mir Sensor Tastschalter, die ich auch per WLAN ansteuern kann. HA fährt mir auch alle Rollo zum Sonnenuntergang zu.
Außer die, wo ein Türkontaktschalter sagt, das die Tür offen ist.
Einzigstes Problem war das Rollo mit der Katzenklappe. Das darf nur zu 70% zu fahren. Das war mit einer reinen Zeitschaltung nicht mehr zu machen. Klar, wenn es ganz offen ist, kann ich sagen "7 Sekunden lang zu fahren, dann Stop" Nur, wenn das Rollo schon 20% runter gefahren war, waren 7 Sekunden zu lang.
Dafür habe ich dann Schalter verbaut, die mir die Position melden bzw. ich sagen kann, das es auf 70% geschlossen fahren soll.

Aber vollkommen egal, wo meine Rollo stehen, zum Sonnenuntergang bekommen die alle den Befehl "zu fahren, bis auf das Katzenklappenteil, das bekommt 70% schließen"
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.611
Beiträge
63.467
Mitglieder
6.856
Neuestes Mitglied
test12345
Zurück
Oben