Autor Thema: vorschlag: eindeutige id für jedes fhem device  (Gelesen 3157 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #60 am: 18 Januar 2019, 12:14:30 »
Das war nach meinem Geschmack etwas zu schnell, ich wollte dich noch ueberreden die GetDefAndAttr() Funktion zu verwenden.
Aber vielleicht ist es nicht zu spaet...

Es ist nie zu spät. Aber bevor ich GetDefAndAttr() in configDB verwenden kann, müsste die Behandlung von Attributen, die NICHT gespeichert werden dürfen, noch angepasst werden. Patch folgt.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #61 am: 18 Januar 2019, 12:31:04 »
Index: fhem.pl
===================================================================
--- fhem.pl     (revision 18313)
+++ fhem.pl     (working copy)
@@ -1619,13 +1619,15 @@
   push @ret, "setuuid $d $defs{$d}{FUUID}"
         if($dumpFUUID && defined($defs{$d}{FUUID}) && $defs{$d}{FUUID});
 
+# exclude attributes, format <deviceName>:<attrName>, space separated list
+  my @dontSave = qw(configdb:rescue configdb:nostate configdb:loadversion
+                    global:configfile global:version);
   foreach my $a (sort {
                    return -1 if($a eq "userattr"); # userattr must be first
                    return  1 if($b eq "userattr");
                    return $a cmp $b;
                  } keys %{$attr{$d}}) {
-    next if($d eq "global" &&
-            ($a eq "configfile" || $a eq "version"));
+    next if (grep { $_ eq "$d:$a" } @dontSave);
     my $val = $attr{$d}{$a};
     $val =~ s/;/;;/g;
     $val =~ s/\n/\\\n/g;

Auf meinem Testsystem habe ich gerade eine so gepatchte fhem.pl und eine configDB, die GetDefAndAttr() verwendet, erfolgreich getestet. Die FUUID werden alle angelegt und nach einem Neustart wiederhergestellt.

-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #62 am: 18 Januar 2019, 12:41:58 »
Mir ist gerade aufgefallen, dass GetDefAndAttr() in den Forward-Deklarationen der fhem.pl noch fehlt.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #63 am: 18 Januar 2019, 17:39:42 »
dann sollte man auch überlegen eine routinen für name -> uuid und uuid -> name einzubauen.

das geht grundsätzlich auch jetzt schon...

{(defInfo('FUUID=5c41b807-f33f-01d2-8853-63bca4a2bcd43a69','NAME'))[0]}
liefert bei mir korrekt den deviceName oc_test

und umgekehrt liefert

{(defInfo('NAME=oc_test','FUUID'))[0]}
5c41b807-f33f-01d2-8853-63bca4a2bcd43a69
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19985
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #64 am: 18 Januar 2019, 18:09:41 »
@betateilchen: hab dein Patch + Forward-Deklaration eingecheckt.

Ich frage mich, wieso wir beide fuer nicht zu speichernde Internal Values Attribute verwenden.
Leider wird global version und global configfile auch von anderen Modulen geprueft, sonst haette ich es jetzt ausgebaut.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #65 am: 18 Januar 2019, 19:04:34 »
Zumindest für das globale Attribut "configfile" kann ich Dir Deine Frage beantworten.

Es ist die einzige Chance für einen configDB Nutzer, aus seiner Konfiguration wieder eine lauffähige fhem.cfg zu erzeugen.

  • FHEM wird mit configDB gestartet
  • User setzt das globale Attribut configfile auf fhem.cfg (oder einen anderen Dateinamen)
  • ein nachfolgendes "save config" erzeugt eine Konfigurationsdatei

Auch wenn es m.E. keinen Grund gibt  8) 8) 8) von der configDB wieder zurück zu den altertümlichen Textdateien zu wechseln, sollte man den Usern diesen Weg nicht versperren, indem man dieses Attribut ausbaut. Man könnte den Rückweg natürlich auch anders bauen, aber diese Möglichkeit ist zumindest die logischste und sie ist bereits vorhanden, dokumentiert und bewährt.

Den Sinn des "version" Attributes habe ich allerdings noch nie verstanden.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #66 am: 18 Januar 2019, 19:08:36 »
@betateilchen: hab dein Patch + Forward-Deklaration eingecheckt.

Danke, ich habe eben die dazu passende configDB.pm eingecheckt.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Online herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4901
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #67 am: 19 Januar 2019, 23:11:40 »
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #68 am: 20 Januar 2019, 11:15:03 »
noch ein Grund mehr, rereadcfg zu entsorgen :)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15519
  • s/fhem\.cfg/configDB/g
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #69 am: 20 Januar 2019, 20:13:28 »
Macht es eigentlich in jedem Fall Sinn, dass ein device seine FUUID behält, wenn man die DEF (ggf. komplett) ändert?

Meiner Meinung nach: eher nicht.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 22.03.2019 - 18:30 Uhr im Baseler Hof

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18657
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #70 am: 20 Januar 2019, 20:17:42 »
ich denke in den meisten fällen schon.

das lässt sich nicht wirklich automatisch entscheiden.

wenn es tatsächlich mal probleme gibt: löschen und neu anlegen.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18385
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #71 am: 20 Januar 2019, 20:18:10 »
Warum nicht? Das Device an sich bleibt ja existent. Es ändern sich nur Eigenschaften.
Ähnlich wie bei einem Objekt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

 

decade-submarginal