Rename auf komplette FHEM.cfg anwenden

Begonnen von balli1187, 01 August 2019, 01:05:41

Vorheriges Thema - Nächstes Thema

balli1187

Hallo,

Ich habe immer mal wieder die Notwendigkeit meine Geräte umzubenennen, um set-Befehle mit Hilfe von Wildcards auf mehrere Geräte anzuwenden.

Nach dem rename geht dann aber die Sisyphos-Arbeit los, um alle at, notify, DOIF, etc. anzupassen, da dort immer noch der alte Name enthalten ist.
Mein Wunsch wäre daher den rename Befehl auf die ganze cfg anzuwenden - ähnlich einem "suchen-und-ersetzen" in einer Textdatei (wie ich es teilweise dann auch durch manuelles editieren der cfg mache).


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

rr725

 Doch die Datei auf den pc und dann mit dem Editor suchen > ersetzen und dann wieder zurück kopieren, oder ist das zu einfach....

MadMax-FHEM

So einen Wunsch/Diskussion gab es bereits etliche Male im Forum...

Beschluss (bislang jedes Mal): zumindest rename bleibt (so "unvollständig") wie er ist und das bewusst...

Weil wie willst du (bei einem RegEx) denn feststellen, dass etwas umbenannt werden soll und (bei RegEx) in was!?

Beispiel:

Du hast Devices die heißen:

Lampe1, Lampe2, Lamma3 und du hast ein Notify auf Lam.*

Du benennst Lampe1 um in Leuchte1...
...soll oder soll nun der RegEx-Teil des Notify nicht "angepasst" werden!?
Und wenn an was!?

Wenn dann müsste es ein extra "suchen-Ersetzen"-Befehl sein...

Weiß nicht, ob in die Richtung auch schon diskutiert wurde (vermute aber: ja)...
Evtl. gibt es auch schon cmdalias-Vorschläge für sowas im Forum...

P.S.: ich hätte ja Bedenken bei einer so "gravierenden Änderung" einfach "blind" einen Automatismus drüber laufen zu lassen... (und wie oft kommen solche Änderungen vor!? Einmal gut über Namen nachgedacht und gut)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

balli1187

Das geht natürlich, und wie geschrieben mache ich das bei geräte, die in mehreren Logiken vorkommen auch so, aber es ist ein bisschen "von hinten durch die Brust ins Auge".

Außerdem macht es den rename-Befehl ziemlich obsolet, wenn man doch dazu genötigt wird, die Geräte in der cfg manuell umzubenennen.

Das manuelle bearbeiten wird auch an jeder erdenklichen Stelle als nicht empfehlenswert dargestellt und der Support dafür verweigert (was ich durchaus verstehe).
Beim herunterkopieren auf den Rechner kommen noch Rechteprobleme dazu.

Kurzum: es gibt einige Argumente gegen dieses Vorgehen.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

balli1187

Hallo Joachim,

Dein Beispiel hört sich (nicht böse gemeint) nach einem etwas konstruierten Problem an.
Wenn ich Lampe1 in Leuchte1 umbenennen, gebe ich beim rename den vollständigen Namen an und es wäre schon mal eine Verbesserung wenn beim rename auch nur 100%-Matches erfasst werden - so wie es beim suchen&ersetzen auch ist.

Das mit dem "einmal ordentlich drüber nachdenken und gut" ist auch so eine Sache. Die meisten, die hier anfangen, sind keine Programmierer und denken (zumindest anfangs) nicht an sowas und wenn doch, gibt es hunderte von Konzepten.
So eine FHEM-Installation entwickelt sich auch und wächst ja in der Regel immer weiter. Da ist die Chance sehr groß, dass man am anfang nicht alles bedacht hat.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

MadMax-FHEM

#5
Zitat von: balli1187 am 01 August 2019, 08:28:25
Das geht natürlich, und wie geschrieben mache ich das bei geräte, die in mehreren Logiken vorkommen auch so...

Und was würdest du in meinem "simplen" Fall tun?

Wie würde dann dein rename-Befehl lauten (sollen)?

Und wenn die "Logiken" (bzw. eben die verwendeten RegEx) "komplizierter" werden oder in irgendeinem Attribut eben auch ein "passender" Teil steht (futsch und anders!) oder oder oder...
...bzw. noch DevSpec dazu kommen oder Filter...

Ich denke (dabei bleibe ich), dass (in so einem Fall: "krasse Namensanpassungen" / ja hatte ich auch schon ein oder zwei mal zu Beginn / jetzt habe ich [größtenteils] eine "saubere" [für mich passende] Namensgebung und gut) ich dann lieber mal ein "manuells suchen-ersetzen" anwerfen würde (und habe) als einen Automatismus drüber laufen zu lassen, wo ich dann nicht mehr weiß (vielleicht weil knapp was "übersehen") was raus kommt bzw. warum manches so rausgekommen ist...

Aber wie schon geschrieben: vielleicht mal im Forum suchen, wurde schon oft diskutiert...

EDIT:
Wenn du den Namen vollständig angibst, dann wird doch das Gerät inkl. Attributen etc. umbenannt!?
Wo ist das Problem dann?

Ein evtl. damit verbundenes Notify (da es eben KEIN Name zum Umbenennen ist SONDERN ein RegEx) wird dann nat. nicht angepasst...
...weil es könnte ja (wie in meinem klar "konstruierten" Fall aber er soll ja die Problematik zeigen) auch noch auf andere Dinge matchen und dann ist die Frage: soll das RegEx dann auf den neuen Namen des einen umbenannten Gerätes matchen oder bleiben und auf die (evtl.) verbleibenden Geräte matchen...

EDIT2: müssen wir hier (und ich höre hiermit auch auf) nicht weiter zum wiederholten Male durchkauen... Einfach mal suchen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Moin,

ich habe grep als cmdalias definiert. Nach einem rename (oder einem Geräteersatz mit neuem Namen) such ich damit einfach nochmal in der config und in allen beteiligten Dateien (z.B. auch 99_myUtils) , die Geräte werden aufgelistet, klick, nachbessern/drüber nachgedacht und fertig.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

balli1187

#7
@MadMax-FHEM
Auch wenn du die Diskussion bereits für beendet erklärt hast, nehme ich mir mal die Freiheit auf deinen letzten post noch zu antworten:

Du hast eine ganze Menge Punkte genannt, die bei einer (tiefergehenden) Änderung des Befehls Problem bereiten können. Zugegebenermaßen hatte ich das nicht alles im Blick und es leuchtet mir auch ein, weshalb es bei RegEx im notify oder auch deren Verwendung beim umgebauten rename (hier bin ich nicht ganz sicher worauf sich dein "RegEx" bezieht) nicht funktioniert oder gefährlich werden könnte bei der Ausführung.

Aber:
- das sind alles ziemlich umfangreiche Fälle, welche mit dem bisherigen Befehl auch in keinster Weise erfasst sind.
- ein "einfaches" Suchen&Ersetzen mit dem Texteditor findet bei mir auch nur die 100%-igen Matches. Damit wären zumindest schon mal einfache Logiken ala
define notify_blabla notify Lampe1:* set <irgendwas>
oder
define notify_blabla notify <irgendwas>:* set Lampe1 on
abgedeckt, was jetzt eben nicht der Fall ist. Damit rettet man vielleicht nicht die Welt und es ist nicht die von dir skizzierte bierbrauende Pommes-Nudel-Kuh aber es wäre eine Verbesserung.
- alles was darüber hinaus geht, muss ggf. auch nicht zwingend angepasst werden, da eine zusätzliche Ebene in einer durchdachten Namensgebung (Bsp. EG_WZ_Licht_Decke statt nur WZ_Licht_Decke) nicht zwangsläufig dazu führt, dass eine Regex nicht mehr greift (Bsp. .*_Licht_.*).


Vielleicht wäre es ja auch eine Variante, den Vorschlag von Otto an das rename anzuhängen, um dem User zu zeigen, wo er ggf. noch weiternacharbeiten muss, wenn schon ein Automatismus nicht gewünscht ist???
Das würde ich auch schon als Erleichterung ansehen.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Beta-User

#8
"Früher", als ich noch die cfg direkt bearbeitet habe, dachte ich auch mal, dass das doch einfacher sein sollte...

Heute bin ich argumentativ ziemlich auf der Linie von MadMax-FHEM, und zwar insbesondere auch für die verbliebene Wunsch-Konstellation hier:
Zitat von: balli1187 am 01 August 2019, 15:30:54Vielleicht wäre es ja auch eine Variante, den Vorschlag von Otto an das rename anzuhängen, um dem User zu zeigen, wo er ggf. noch weiternacharbeiten muss, wenn schon ein Automatismus nicht gewünscht ist???
Das würde ich auch schon als Erleichterung ansehen.
Zumindest auf den ersten Blick sehe ich das gerade dort nicht als erforderlich an. Ist nämlich die Sache eindeutig, kommt auch "probably associated with" auf die korrekten Zusammenhänge. Das kann man z.B. nutzen, indem man sich mit "list -R <xyz>" einen entsprechenden Dump aus der Konfiguration zieht, den dann entsprechend in einem "neutralen" Editor nachbearbeitet (search&replace eingeschlossen), und dann wieder über das "+" (mehrzeiliges Kommandofeld) in die aktuelle Konfiguration überträgt. (EDIT: oder gleich direkt die entsprechende Option "Dump probably ..." im "RAW-Editor" nutzt).

Vorteile:
Man sieht, was man tut (=Wunsch erfüllt), es funktioniert "on the fly" und auch unter configDB, es erfolgt direkt eine Syntax-Prüfung, die verhindert, dass man unzulässige Zeichen etc. "versehentlich" mit reinbastelt und man kann vor dem Speichern direkt im System testen.

Aber jeder, wie er kann und mag.

Ich habe hier jedenfalls bisher nichts gehört, das für mich ein Grund wäre, "dafür" Entwicklerkapazität reklamieren zu wollen.

Aber evtl. übersehe ich auch was...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

balli1187

Hallo Beta-User,

Danke für die Hinweise. Das "probably associate with... steht halt nur so lange im device bis es eben umbenannt ist und zumindest für mich fühlt es sich "natürlicher" an, erst umzubenennen und dann alles darauf aufbauende anzufassen. Meist bastelt man ja irgendwas neues zusammen, wenn man an den Punkt gelangt, dass man was umbenennen will/muss.
Aber gut vielleicht muss ich mich da einfach etwas anpassen oder beschäftige mich mal etwas mehr mit cmdAlias....

Was ich jetzt nicht ganz verstanden habe war das "Dump probably ..."
Wo genau finde ich das? Ich hab in ein/zwei Devices geschaut und konnte unten nur den RAW-Editor finden.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Otto123

Zitat von: balli1187 am 01 August 2019, 15:30:54
Vielleicht wäre es ja auch eine Variante, den Vorschlag von Otto an das rename anzuhängen, um dem User zu zeigen, wo er ggf. noch weiternacharbeiten muss, wenn schon ein Automatismus nicht gewünscht ist???
Das würde ich auch schon als Erleichterung ansehen.
Lass mich da mal ne Weile drüber nachdenken, vielleicht baue ich da was  ;)

ZitatWas ich jetzt nicht ganz verstanden habe war das "Dump probably ..."
Wo genau finde ich das? Ich hab in ein/zwei Devices geschaut und konnte unten nur den RAW-Editor finden.
Wenn der Raw Editor "Am Define" offen ist, wieder unten.  :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: Otto123 am 01 August 2019, 16:31:01
Wenn der Raw Editor "Am Define" offen ist, wieder unten.  :)
Genau. Dann brauchst du nur das "eigentliche Zieldevice" zu nehmen, das defmod in ein rename zu verwandeln, den Rest zu löschen, und schon hast du alles "auf einen Rutsch".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

#12
Zitat von: balli1187 am 01 August 2019, 15:30:54
@MadMax-FHEM
Auch wenn du die Diskussion bereits für beendet erklärt hast, nehme ich mir mal die Freiheit auf deinen letzten post noch zu antworten:

Du hast eine ganze Menge Punkte genannt, die bei einer (tiefergehenden) Änderung des Befehls Problem bereiten können. Zugegebenermaßen hatte ich das nicht alles im Blick und es leuchtet mir auch ein, weshalb es bei RegEx im notify oder auch deren Verwendung beim umgebauten rename (hier bin ich nicht ganz sicher worauf sich dein "RegEx" bezieht) nicht funktioniert oder gefährlich werden könnte bei der Ausführung.

Dann mach ich halt doch noch mal wieder (kurz) mit ;)

Auch ganz einfache Dinge sind oft schwer zu entscheiden (und selbst mit einem externen Editor würde ich mir jedes suchen&ersetzen vor dem Ersetzen [genau] anschauen ;)  ):

define nTest notify Lampe11:on set ...

Du willst Lampe1 in Licht1 umbenennen...
...hmmm Notify anpacken oder nicht?

Mit (nicht zu genau spezifiziertem) suchen&ersetzen also Lampe1 -> Licht1 würde da dann Licht11 rauskommen ;)
(jaja ich weiß schon: konstruiert ;)  )


Zitat von: balli1187 am 01 August 2019, 15:30:54
Aber:
- das sind alles ziemlich umfangreiche Fälle, welche mit dem bisherigen Befehl auch in keinster Weise erfasst sind.

Wie bereits (mehrfach) geschrieben: wurde schon öfter im Forum diskutiert (bist also leider nicht der Erste ;) ) und BEWUSST genau NICHT "erweitert" auf solche Fälle sondern genau NUR "Device-spezifisch" gelassen.
Für andere Module (z.B. HomeMatic) gibt es extra Rename-Funktionen (am Device) die (deutlich) weiter gehen...

EDIT: und dann (noch mal) wie oft braucht "man" das? Zugegeben zu Beginn etwas öfter aber nach einiger Zeit (wenn das Namens-Schema mal passt) eigentlich nicht mehr... Also zumindest bei mir...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#13
Moin,

ich habe sowieso schon grep als alias definiert:
define c_grep cmdalias grep .* AS {qx(grep -i \'$EVENT\' *.cfg FHEM/99*.pm)}

Dazu lege ich einfach noch diesen alias an:
define c_rengrep cmdalias rengrep .* AS rename $EVENT;;grep $EVTPART0

Mit rengrep alt neu wird nach dem rename noch nach "alt" gesucht und Treffer in der Weboberfläche angezeigt :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

balli1187

Herzlichen Dank, Otto.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

loescher

Nachdem das Thema "rename" ja schon öfters aufgetaucht ist, hätte ich noch einen Wunsch bzw. eine Bitte, die das Thema entschärfen würde:
Könnten bitte ein paar erfahrene FHEM Anwender ihr Namenskonzept kurz vorstellen?
Das würde es den Einsteigern erleichtern, gleich "richtig" anzufangen.
Dann muss auch nichts umbenannt werden.  :)

LG,
Stephan.