FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: franky08 am 09 April 2017, 20:39:41

Titel: [gelöst] rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 09 April 2017, 20:39:41
Hallo, ich stehe gerade vor der Aufgabe nach einem rename <device> die Definition in bestehenden notify´s sowie at´s zu übernehmen. RENAMED wirkt nur auf global, leider finde ich dazu nicht allzuviel oder besser gesagt es funktioniert nicht so wie ich angenommen habe. Hätte jemand mal ein Beispiel?

VG
Frank
Titel: Antw:rename und notify RENAMED &lt;old&gt; &lt;new&gt;
Beitrag von: justme1968 am 09 April 2017, 22:33:25
das event kommt von global und entält den alten und neuen device namen des umbenannten device.

was funktioniert dabei nicht?

gruss
  andre
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 09 April 2017, 22:47:50
Hallo Andre, ich bin davon ausgegangen das ein
define ren_nty notify global:RENAMED nameA nameB

dazu führt das in bestehenden notify oder at Definitionen der Name des devices mit nameA in nameB geändert wird, dass hat aber scheinbar nicht funktioniert, als zweite Frage ergibt sich ob gplot Definitionen die nameA enthalten in nameB geändert werden oder dieses händisch erledigt werden muss denn die FileLog Def. werden mit rename ja automatisch auf den neuen device Namen geändert.

VG
Frank
Titel: Antw:rename und notify RENAMED &lt;old&gt; &lt;new&gt;
Beitrag von: justme1968 am 09 April 2017, 23:03:54
das event sagt nur das ein device umbenannt wurde. es wird nichts automatisch angepasst. das wäre oft auch garnicht möglich.

dein notify tut nichts weiter als einen fehler zu produzieren den du im log sehen solltest.

es gibt ein paar devices die automatisch auf das umbenennen reagieren. readingsGroup zum beispiel.

alles andere müsstest du selber und von hand machen.

bei plotfiles reicht es auch nicht die regex in der def zu ändern. du müsstest auch alle alten werte rückwirkend auf den neuen namen ändern.

aus all diesen gründen empfiehlt es sich meist device namen auf irgendwelchen eindeutigen ids zu belassen und den angezeigten namen per alias anzupassen.

gruss
  andre
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 09 April 2017, 23:14:59
Genau das dachte ich mir schon, wollte mir das händische korrigieren ersparen und alias bringt in diesem Fall nichts, da ich in einer sub mit
my @monitored=devspec2array("(Schalter_Tuer.*):FILTER=STATE!=closed");

auf alle devices mit Schalter_Tuer.* reagieren will aber die devices jetzt noch unterschiedliche Namen haben.

VG
Frank
Titel: Antw:rename und notify RENAMED &lt;old&gt; &lt;new&gt;
Beitrag von: justme1968 am 10 April 2017, 08:17:21
namen in deinem code lassen sich erst recht nicht automatisch anpassen.

aber warum bringt dir alias nichts? du kannst denen devspec aufruf so ändern das er auch den alias mit einbezieht. oder du setzt ein user attribut für deine türen und wertest dieses aus. fax wäre dann vom namen komplett unabhängig.
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 08:53:29
Hallo Andre, an:
Zitat...aufruf so ändern das er auch den alias mit einbezieht...

da hänge ich. Denn ein list TYPE=alias Schalter_.* ist von der Syntax her nicht richtig und ich komme nicht drauf wie ich den Alias da mit einbeziehen kann.

VG
Frank
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: CoolTux am 10 April 2017, 09:03:11
list alias=Schalter_.*
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 09:14:51
Ist klar, dann müsste das in der sub so aussehen:
my @monitored=devspec2array("(Schalter_Tuer.*|alias=Schalter_.*):FILTER=STATE!=closed");

?

VG
Frank
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: CoolTux am 10 April 2017, 09:19:22
Zitat von: franky08 am 10 April 2017, 09:14:51
Ist klar, dann müsste das in der sub so aussehen:
my @monitored=devspec2array("(Schalter_Tuer.*|alias=Schalter_.*):FILTER=STATE!=closed");

?

VG
Frank

Ich würde sagen, ja. Aber teste das doch einfach mal.
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 11:02:49
Grrrr, da bekomme ich als return:
Zitat(Schalter_Tuer.*|alias=Schalter_.*):FILTER=STATE!=closed

ändere ich auf:
my @monitored=devspec2array("(Schalter_Tuer.*):FILTER=STATE!=closed");

funktioniert die sub und die offene Tür steht im return.

Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 11:08:32
my @monitored=devspec2array(("(Schalter_Tuer.*):FILTER=STATE!=closed") || ("(alias=Schalter_.*):FILTER=STATE!=closed"));

Das war´s  ;)

VG
Frank
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: CoolTux am 10 April 2017, 11:10:24
Was ich nicht ganz verstehe. Wieso suchst Du dennoch nach NAME wenn Du doch schon alias nimmst. Nimm doch nur alias, macht ja auch Sinn. Dann kannst wegen meiner Deine Fenster Namen vergeben wie Du lustig bist und machst aber im Alias auf jeden Fall Fenster.*
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 11:18:35
Stimmt, sind aber Türen...  ;) ;) :)
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: CoolTux am 10 April 2017, 11:19:23
Ok, dann Türen  ;D
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 12:38:20
Mmh, ein list liefert ordnungsgemäß:
siehe Screenshot

während aus der sub mit: my @monitored=devspec2array("(alias=Tür.*):FILTER=STATE!=closed");
Zitat(alias=Tür.*):FILTER=STATE!=closed

zurück kommt. ???
Titel: Antw:rename und notify RENAMED &lt;old&gt; &lt;new&gt;
Beitrag von: justme1968 am 10 April 2017, 13:44:29
die klammern gehören da ziemlich sicher nicht hin.

ansonsten würde ich beides in den FILTER stecken;

.*:FILTER=alias=Tür.*:FILTER=STATE!=closed

es kann sein das das ü probleme macht. am besten im web frontend eingeben. das ist es utf8. wenn es nicht geht: versuch es mit einem oder zwei punkten.

statt STATE überleg dir ob state oder ein anderes reading besser ist.
Titel: Antw:rename und notify RENAMED <old> <new>
Beitrag von: franky08 am 10 April 2017, 15:40:57
Danke Andre, funktioniert jetzt, wobei T.r auch auf Termine matcht  :)

my @monitored=devspec2array(".*:FILTER=alias=Tür.*:FILTER=STATE!=closed");

liefert wahrheitsgemäß:
ZitatTür Bad, Tür Schlafzimmer, Tür Kinderzimmer, Tür Küche, Tür Wohnzimmer und Tür Wohnung

wobei Tür.* die alias Namen sind.

Danke
VG
Frank