Rename für Device und Channels

Begonnen von vmesser, 17 September 2015, 20:38:33

Vorheriges Thema - Nächstes Thema

vmesser

Hallo,

ich hätte einen Vorschlag zur Verbesserung, weiß aber nicht ganz genau wohin ich ihn tun soll.

Es wäre schön wenn es möglich wäre ein rename per wildcard durchzuführen (bzw. ein Device mit allen Unterchannels umzubennen)

Als Beispiel:
Ein Heizungsthermostat inklusive seiner 6 Unterchannel umbenennen.
rename HM365678.* Wohnzimmer.Heizung.*

Aktuell benötigte Befehle (7):
rename HM365678 Wohnzimmer.Heizung_links
rename HM365678_Weather Wohnzimmer.Heizung_links_Weather
rename HM365678_Climate Wohnzimmer.Heizung_links_Climate
rename HM365678_WindowRec Wohnzimmer.Heizung_links_WindowRec
rename HM365678_Clima Wohnzimmer.Heizung_links_Clima
rename HM365678_ClimaTeam Wohnzimmer.Heizung_links_ClimaTeam
rename HM365678_remote Wohnzimmer.Heizung_links_remote

Ich habe schon im Forum gesehen das hierfür empfohlen wird die fhem.cfg direkt per Editor zu bearbeiten und search&replace zu nutzen. Dies erscheint mir aber kein guter Weg zu sein.

Danke

Viele Grüße
Volker

marvin78

Du könntest dir sicher auch eine kleine Perl-sub dafür schreiben.

Die Empfehlung, die Config direkt zu editieren, ist natürlich nicht ernst gemeint ;)

martinp876

Ist immer die Frage, ob man allemchannel aendern will,.... Meist wohl schon.
Das Remake ist eine fhem Funktion, die kennt keine Struktur. Das geht also nicht.
Wildcards sind nicht mein weg, das müsste man selbst machen.
Es bleibt also nur ein set <device> devicerename <newname>

Zu beachten bleibt, dass notifies oder Register Archivs nicht gewandert werden!
Die culhm Installation sollte komplett bleiben.

vmesser

Hallo martinp876,

danke für die Antwort, vielleicht ist ein Parameter am rename eine Möglichkeit. Zum Beispiel -r für alle Channels mit umbenennen.

Gibt es aktuell den ein Skript was diese Funktion erfüllt? Zurzeit machen ich es per Editor in der fhem.cfg, find ich nicht gut, habe aber keinen anderen Weg gefunden.

Viele Grüße
Volker

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

vmesser

Hallo Zusammen,

ich habe jetzt eine Funktion für Myutils geschrieben, die dies Umsetzt.

Viele Grüße
Volker

sub rename_vme($$$){
  my ($device,$old,$new) = @_ ;
  my @devices = devspec2array($device) ;
   
  foreach $device (@devices){

      my $val = $device;
      $val =~ s/$old/$new/g;
     {Log 1, "Automatic Rename with Subdevices:". $device . " - " . $val};
      fhem("rename $device $val");
  }
}

CQuadrat

#6
Vorschlag:
Alle Renames in einem Texteditor erstellen und mit Semikolon trennen. Das meiste ist dann ja sowieso Copy-And-Paste.
Diese Textdatei dann mit
include <renames.txt>
ausführen.


PS: Wenn man ein sinnvolles Benamsungskonzept für sein Devices hat, sollte man das sowieso nur einmal (z.B. nach einem Autocreate) machen müssen.  ;)
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

martinp876

Ein deviceRename steht seit morgen zu Verfügung :)
Es sollte alle Kanäle umbenennen. Notifies u.ä. liegen in eigener Verantwortung.

vmesser

Vielen Dank.

Dann ist das Problem ja jetzt für HM Komponenten erledigt.

Viele Grüße
Volker