Template zeigt nicht das an was ich möchte

Bereich rings rum zum Thema Yaml und seine Tücken.


Antworten
TheBermud
Beiträge: 20
Registriert: Mo 18. Mär 2024, 20:22
Been thanked: 1 time

Template zeigt nicht das an was ich möchte

Beitrag von TheBermud »

Hallo zusammen,

ich habe ein vorhandenes Template für Lichter versucht umzuschreiben, dass es auf Steckdosen passt. Es soll mir die eingeschalteten Steckdosen ausgeben.
2 Steckdosen, wo ich den Gerätetyp auf Licht geändert habe, werden weiterhin als Steckdose im Template erkannt. Andere Steckdosen wo ich das ebenfalls gemacht habe, werden richtigerweise nicht erkannt.
Zur Erklärung was ich versucht habe hinzuzufügen:
Es sollen nur entitäten erkannt werden, die skd im Namen haben. Alle meine Steckdosen haben ein SKD im Namen, daher konnte ich damit alle anderen switches ausschließen.

Code: Alles auswählen

| selectattr('entity_id', 'match', '.*skd*')

Dann sorgt

Code: Alles auswählen

| selectattr('attributes.device_class','defined')

dafür, dass die entitäten ausgewählt werden, die noch Steckdosen sind und wo ich den Gerätetyp nicht auf Licht geändert habe. Das funktioniert leider nur nicht bei allen.
ich könnte zwar einfach die falsch angezeigte entität ausschließen wie ich es schon bei 2 anderen getan habe, aber dadurch würde ich nicht verstehen was ich falsch gemacht habe.
Vielleicht hat ja jemand eine Idee woran es liegen könnte:

Code: Alles auswählen

{{ states.switch 
| selectattr('state','eq','on')
| selectattr('entity_id', 'match', '.*skd*')
| selectattr('attributes.device_class','defined')
| rejectattr("attributes.entity_id","defined")
| rejectattr('entity_id', 'in', ('switch.kg_keller_skd_waschmaschine','switch.eg_kuche_skd_leiste_links'))
| sort(attribute='name')
| map(attribute='name') 
| list
| join('\n') }}
Benutzeravatar
Osorkon
Administrator
Beiträge: 1953
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 530 times
Kontaktdaten:

Re: Template zeigt nicht das an was ich möchte

Beitrag von Osorkon »

Code: Alles auswählen

| selectattr('attributes.device_class','defined')

wählt diese Entitäten aus, welche eine device_class zugewiesen haben.
Manuell kannst Du Device Class unter Anzeigen als ändern/ definieren.
Weist Du einer switch Entität die Device Class outlet (Steckdose) oder switch (Schalter) ist die Device Class definiert und wird mit angezeigt.
Unabhängig davon ob es einen versteckte Entität ist, oder nicht.

Um die versteckten Entitäten auszufiltern, brauchst Du diesen Filter

Code: Alles auswählen

| rejectattr('entity_id', 'is_hidden_entity')

Also:

Code: Alles auswählen

{{ states.switch 
| selectattr('state','eq','on')
| selectattr('entity_id', 'match', '.*skd*')
| selectattr('attributes.device_class','defined')
| rejectattr("attributes.entity_id","defined")
| rejectattr('entity_id', 'is_hidden_entity')
| rejectattr('entity_id', 'in', ('switch.kg_keller_skd_waschmaschine','switch.eg_kuche_skd_leiste_links'))
| sort(attribute='name')
| map(attribute='name') 
| list
| join('\n') }}

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
TheBermud
Beiträge: 20
Registriert: Mo 18. Mär 2024, 20:22
Been thanked: 1 time

Re: Template zeigt nicht das an was ich möchte

Beitrag von TheBermud »

Vielen Dank, das hat funktioniert.

Kannst du mir noch erklären bzw hast du eine Idee warum das nur bei manchen Steckdosen der Fall war? Also bei dem Hue Plug und dem von Tuya musste die versteckte entität ausgeblendet werden, bei den von Osram nicht, die wurden immer richtig erkannt

Benutzeravatar
Osorkon
Administrator
Beiträge: 1953
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 530 times
Kontaktdaten:

Re: Template zeigt nicht das an was ich möchte

Beitrag von Osorkon »

Das hängt davon ab ob die Device Class bereits zugewiesen wurde. Bei manchen Geräten kommt diese automatisch mit, bei anderen nicht. Und Du musst die Device Class Manuel setzen. Auch wenn in den Entitäten Einstellungen Anzeigen als Schalter aufgeführt ist, hat die Entität noch keine Device Class. Erst Du diese manuell ändern tust, ist diese zugewiesen.

Kannst für die betroffenen Entitäten unter Entwicklungswerkzeuge -> Zustand, nachschlagen.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
TheBermud
Beiträge: 20
Registriert: Mo 18. Mär 2024, 20:22
Been thanked: 1 time

Re: Template zeigt nicht das an was ich möchte

Beitrag von TheBermud »

Vielen Dank für die Erklärung. Habe mal nachgeschaut. Die beiden Entitäten die aus der Reihe getanzt sind, hatten automatisch eine Device_Class zugewiesen bekommen, alle anderen hatte bisher keine gehabt.

Antworten