Massenbearbeitung von Entities?

Hallo zusammen,

ich bin noch recht neu bei Home Assistant und komme aus der Homematic Welt.
Der Wechsel ist jetzt erfolgt, da ich für das klassische HM keine Zukunft mehr sehe… leider.

Auf jeden Fall kann ich nicht einen vollständigen Umzug durchführen, da ich aktuell rund 150 HM-Geräte im Einsatz habe.

Daher setze ich auf die “Homematic(IP) local” Integration, um meine vorhandene RaspberryMatic (läuft auf 'nem Pi4 ohne eigene Antenne dafür mit 3 LAN Gateways) in HA einzubinden, was auch ziemlich gut funktioniert. :slight_smile:

Jetzt zu meiner Frage: Von meiner RM hat die Integration nun knapp 1600 Entitäten erstellt. Leider ist die Benennung der Geräte und Kanäle in RM “sehr technisch”, was zu “unschönen” Entitäts-ID’s führt.

Mal als kleines Beispiel:
Ein Dimmer im Wohnzimmer:

  • Das Gerät heisst “DMM01-EWZ-A-Tuer EFL”
  • Der Kanal heisst “DMM01-EWZ-A-01-LEVEL”

Im Ergebnis macht die Integration dann daraus folgende Entitäts-ID:
“dmm01_ewz_a_tuer_efl_dmm01_ewz_a_01_level”

Diese Trümmer zusammen mit den nicht vorhandenen Namen in den Entitäten muss ich aber alle anpassen - versteht wohl jeder das dass so nicht bleiben kann…

Gibt es irgend eine Möglichkeit, die Entitäten in Form einer “Massenbearbeitung” zu modifizieren? In tabellarische Form in der man einfach von Zelle zu Zelle mit Cursortasten navigiert und direkt ändern kann, oder mit 'nem Editor irgendwo in einer Datei oder von mir aus auch mit einem DB-Editor in einer Datenbank?

Danke schon mal für ein paar Info’s dazu.

Ich gehe davon aus, das eine solche Möglichkeit nicht besteht, aber die Hoffnung stirbt bekanntlich als letztes.

Und noch eine zweite Frage:
Aktuell gehe ich über “Einstellungen” → “Geräte und Dienste” → im Tab “Integrationen” dann auf die “Homematic(IP) local” integration und dann auf “Entitäten”. In der dann gefilterten Liste klicke ich dann auf eine Entität, dann oben auf das Zahnrad und dann kann ich Name, Entitäts-ID usw anpassen. Gibt es da evtl. einen “einfacheren” Weg oder ist das nur so möglich?

VG Thorsten

Hi Thorsten,

Wenn du über “Geräte” auf eins deiner Geräte zugreifst, drück oben mal auf den Stift zum Namen bearbeiten.
Dann änderst du den Namen. Wenn du jetzt auf “Aktualisieren” drückst, fragt er ob du alle Entitäten des Gerätes umbenennen möchtest.

Ich hoffe das klappt so bei dir!

Liebe Grüße
Jan

1 „Gefällt mir“

Hallo Jan,

danke für die Info, aber bei mir sind Namen und Entity-ID “entkoppelt”. Bei den Namen verwende ich einen eher allgemeinen Ansatz, während die Entitäts-ID’s genau wie in der RM technisch bleiben. Am Beispiel des im ersten Posts erwähnten Dimmers sieht dass wie folgt aus:

Das Kanalname soll lauten “Wohnzimmer Dimmer Schrankbeleuchtung”,
während die Entität als “dmm01_ewz_a_01_level” existiert. Grund dafür ist, dass ich so meine mehr als 100 Automatiken aus der RM quasi 1-zu-1 nach HA übertragen kann. Außerdem folgt die Entitätsbezeichnung einem sehr genauen Schema, in das alle Entitäten jeglicher Quelle eingeordnet werden. Somit kann ich jede Entität sehr leich identifizieren, da ich dass genau so schon seit mehr als 20 Jahren in der Homematic praktiziere.

Du siehst, die automatische “Mitnahme” der Entitäts-ID’s hilft mir leider nicht wirklich…

VG Thorsten

Was du machen könntest ist folgendes:
In Entwicklerwerkzeuge>Template folgendes eintippen

{{ states | map(attribute='entity_id') | sort | join('\n') }}

damit bekommst du eine sortierte Liste aller Entitäten

Die kopierst du dir einen gescheiten Editor deiner Wahl
an jedes Zeilenende einen “:” Doppelpunkt.
und hinter jeder Zeile dann in einer neuen Zeile ein

  friendly_name: xxxxx"

wobei du dann das xxxxx leider doch händisch ersetzen musst.

das speicherst du als customize.yaml neben deine configurartion.yaml
und fügst ist der configuration.yaml

homeassistant:
  customize: !include customize.yaml

ein. Falls ‘homeassistant:’ schon vorhanden ist dann nur die Zeile mit customize.

Hat dann mehrere Vorteil die mühselige Arbeit.
Solltest du mal HA neu aufsetzen und hast so Dinge wie icon oder friendly_name über die customize.yaml zugewiesen dann hast du diese Definitionen noch. Hast du dageben ein icon in der GUI gesetzt, dann hast du es noch in einem backup, aber der Definitionsschritt selbst ist verloren oder nicht exportierbar.

Arbeitest du mit Integrationen die unvollständig umgesetzt wurden (z.B. die offizielle modbus Integration die warum auch immer bei sensor keine icon Definition erlaubt. Was ja sogar ESPhome kann … wie heisst es so schön es geht die und das “und alle Eigenschaften von sensor” … tja, klappt halt meistens aber nicht immer.
Und dazu ist das mit dem customize halt ne prima Sache. Sprich es stört dann gar nicht wenn eine Integration etwas nicht mitbringt weil es den alternativen Weg gibt.

Für jemand der seine Bennungen 20 Jahre nutzt ist das vermutlich ein möglicher Weg, wenngleich er halt nicht wirklich automatisch ist.

Wenn du allerdings wirklich stringent bei deiner Benennung bist sollte es dir auch möglich sein mittels regex aus den kryptischen entity_ids direkt wieder klartext zu machen, sprich dann könntest du dir die customize.yaml sogar aus der sortierten Liste erstellen lassen, würde ich zumindest mal glauben.

Servus Justone,

danke erst mal für diesen praktischen Tip. Wenn ich das richtig verstehe setze ich damit ja den friendly_name der Entities auf Basis des aktuellen Entity-Namen.

Kann ich damit auch z.B. die Icons anpassen?
Habe ich dadurch irgendwelche Performance-Einbußen?

Ich verstehe nicht so ganz, wie das abläuft… wird diese Anpassung einmalig z.B. beim Start oder beim Laden der YAML durchgeführt, oder ist das permanent im Hintergrund aktiv und ergänzt den friendly_name bei jedem Zugriff???

Außerdem, so wie ich das verstanden habe, kann ich ja so die Entity-ID selbst nicht anpassen - so das z.B. aus einem
binary_sensor.fbh04_bar_c_tuer_hoftor_fbh04_bar_c_00_service_batterie
dann ein
binary_sensor.binary_sensor.fbh04_bar_c_00_lowbat
wird.
Oder habe ich da was falsch verstanden bzw. etwas übersehen?

VG Thorsten

Einfacher:

entity_id ist das HA braucht und mit dem es intern arbeitet und unter welcher Bezeichnung es Daten hortet.

friendly_name ist wie du es gerne nennen würdest für eine Anzeige, um es schneller wieder zu finden weil es sinnfälliger ist.

Daraus beantworten sich auch die meisten Fragen.

Nein mit einer customize.yaml kannst du keine entity_id umbenennen denn dann wäre (falsch gemacht) die Datenhistorie weg.

Du kannst eine vorhandene entity_id customizen.

Wenn es ein template sensor ist den du über eine YAML Datei konfiguriert hast natürlich Blödsinn denn dann kannst du es auch gleich in der Konfigurationsdatei korrigieren.

Wenn es aber eine entity_id einer Integration ist die z.B. kein icon hat weil die Integration das nicht implementiert hat dann kannst du es halt zufügen.
Oder auch jede andere Info die du warum auch immer der entity_id mitgeben willst.
Ein attribut: “Achtung: dieser Sensor hat einen Wackelkontakt”
oder
Erstinbetriebnahme: 2022
damit du dich nach Jahren nicht fragt warum da etwas jetzt schon ausgefallen ist um dann festzustellen es hat 10 Jahre funktioniert.