Seite 1 von 1

Template zeigt nicht das an was ich möchte

Verfasst: Fr 22. Mär 2024, 08:22
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') }}

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

Verfasst: Fr 22. Mär 2024, 14:51
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


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

Verfasst: Fr 22. Mär 2024, 16:21
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


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

Verfasst: Fr 22. Mär 2024, 17:46
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


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

Verfasst: Fr 22. Mär 2024, 19:19
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.