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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
vorschlag: eindeutige id für jedes fhem device
« am: 15 Januar 2019, 09:22:49 »
für manche anwendungen ist es wichtig fhem device eindeutig zu identifizieren. auch nach einem neustart oder nach einem rename.

da nicht alle devices mit tatsächlich vorhandener hardware verknüpft sind kann man nicht auf eine eventuell vorhandene hardware id ausweichen.

ein typischer anwendungsfall: diverse sprach apis lassen sich über eine suche solche eindeutigen ids melden und verwenden diese dann in den events die erzeugt werden. diese ids müssen stabil bleiben auch wenn devices umbenannt werden und sollten keine konflikte erzeugen wenn man ein neues device mit gleichem namen anlegt.


mit dem angehängten patch wird jedem fhem device beim define eine stabile id zugewiesen.

die genauen eigenschaften sind:
  • konstant auch nach restart und rename
  • eindeutig genug im auch bei mehreren lokalen installationen sehr sehr sehr wahrscheinlich keine konflikte zu haben
  • nur mit dieser einen id lässt sich kein bestimmte fhem installation identifizieren. d.h. nicht basierend auf uniqueid, mac, ip, ...
  • mit der id eines devices lässt sich rückschluss auf das global device einer fhem installation treffen
  • es lässt sich erkennen das mehrere devices vermutlich aus der gleichen fhem installation kommen
ein offener punkt:
das wiederherstellen der FUID nach einem neustart geschieht aktuell mit perl code im save file. das ist unschön. ich wollte aber auch keine globales setfuid kommando da die id nicht vom anwender verändert werden soll. hat jemand eine bessere idee?
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
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20782
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #1 am: 15 Januar 2019, 10:38:48 »
Spricht was gegen:
- einem Reading?
- einen "richtigen" UUID (Format XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX)?

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5552
  • Finger weg von der fhem.cfg
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #2 am: 15 Januar 2019, 10:46:07 »
Hi,
ich finde den Vorschlag prinzipiell gut.
Spricht was gegen:
- einem Reading?
Das müsste meiner Meinung nach dann aber vor "setreading" geschützt sein und vielleicht sogar unsichtbar in FHEMWEB.

Zitat
- einen "richtigen" UUID (Format XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX)?
Das fände ich auch besser als die vorgeschlagene Implementierung. UUIDs bringen ja alle Anforderungen schon mit.
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #3 am: 15 Januar 2019, 10:53:08 »
ja. ein reading ist nicht vor setreading geschützt.

wenn man es mit . versteckt ist es bei jsonlist2 nicht sichtbar.

copy kopiert alle readings. man bräuchte eine ausnahme.

es gibt devices die ein clear readings kommando haben.

außerdem ist es konzeptionell eher etwas internes und nichts das dem device gehört.


das format ist mir im prinzip egal.
wenn man einfach nur eine zufällig uuid erzeugt fehlt der zusammenhang zwischen den devices.

wenn man das berücksichtigt ist es kein problem.
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 rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20782
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #4 am: 15 Januar 2019, 11:05:13 »
Alternative:
define/defmod kriegen eine Option --uuid <uuid>, und save erzeugt diese Option.
define mit --uuid uebernimmt es in einem Internal, ohne generiert eine Neue.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #5 am: 15 Januar 2019, 11:12:46 »
ich glaube eine option ist nicht gut.

der user soll garnichts damit zu tun haben und er soll auch nicht aus versehen ‚mist‘ machen.

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
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5552
  • Finger weg von der fhem.cfg
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #6 am: 15 Januar 2019, 11:20:08 »
Hi,
es sieht so aus, als ob das "reading"-Konzept einiges an Aufwand nach sich ziehen würde.

wenn man einfach nur eine zufällig uuid erzeugt fehlt der zusammenhang zwischen den devices.
Meiner Meinung nach sollte man das trennen. Eine "eindeutige Id" sollte nichts weiter sein als eine eindeutige Id. Wenn man noch andere Eigenschaften oder Beziehungen braucht, dann sollte man die getrennt modellieren.
Oder verstehe ich da was falsch? Was genau meinst Du denn damit?

define/defmod kriegen eine Option --uuid <uuid>, und save erzeugt diese Option.
define mit --uuid uebernimmt es in einem Internal, ohne generiert eine Neue.
Theoretisch ist das gut, aber praktisch sehe ich jetzt schon 10 neue Threads pro "fhem.cfg-Editierer". Außerdem wird es bestimmt einige geben, die meinen, sie könnten das für irgendwas benutzen und dann prinzipell beim define direkt diese Option benutzen.
Anders gesagt: Meiner Meinung nach ist es zu einfach, damit Blödsinn zu machen.

Das Ding als Internal in die fhem.save zu packen finde ich gar nicht so schlecht. Was spricht denn dagegen?
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20782
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #7 am: 15 Januar 2019, 11:25:04 »
Die Loesung mit {} in fhem.cfg passt mir nicht, die Argumente von Thorsten bei der Option gelten damit nur verstaerkt.

Ich biete an:
- define mit Option
- reading (mit Ausnahmeregelungen fuer copy  und deletereading)
- neu: extra Datei, nur mit UUID.
Zustimmung Zustimmung x 1 Liste anzeigen

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #8 am: 15 Januar 2019, 11:30:10 »
@thorsten: eindeutige ids können (und sollen unter umständen) auch teile enthalten die für zusammengehörige devices (z.b. aus der gleichen FHEM installation) identische teile enthalten. z.b uuids die auf einem bestimmen namensraum basieren. d.h. alle uuids aus einer fhem installation haben z.b. den gleichen prefix. oder innen einen gleichen teil.

@ruid: dass {} war nur ein workaround um zu schauen ob alles geht.

wie wäre es einfach mit einem setuid kommando das analog zu setreading im save file verwendet wird.

kann man das bei help ausblenden?

reading ist glaube ich wirklich nicht gut.
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 justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #9 am: 15 Januar 2019, 11:55:12 »
als format könnte man z.b. so etwas verwenden:

tttttttt-ffff-iiii-ddddddddddddddddd

t -> zeitstempel wir rfc
ffff -> egal aber immer und bei alle fhem installationen gleich -> dies ist eine fhem device id
iiii -> egal aber in jeder installation für alle device ids identisch
dddd -> für jedes device zufällig
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 Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5552
  • Finger weg von der fhem.cfg
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #10 am: 15 Januar 2019, 12:38:12 »
ffff -> egal aber immer und bei alle fhem installationen gleich -> dies ist eine fhem device id
Was soll dann passieren, wenn man eine fhem-Installation auf einen anderen Rechner umzieht? Neue fhem-Id oder die alte belassen? Was soll passieren, wenn man zwei Installationen zusammenfasst oder eine in zwei aufteilt?
...solche Sachen meine ich, wenn ich sage, dass eine eindeutige Id nicht noch anderen Kram haben sollte.
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #11 am: 15 Januar 2019, 12:40:56 »
wenn man beim umziehen das save file mit nimmt behalten alle devices ihre id

wenn man es nicht mit nimmt werden neue ids erzeugt.

das ist nicht anders wie das mit ebnen der unique id

ich sehe kein problem.
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 zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2877
    • HMCCU
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #12 am: 15 Januar 2019, 12:46:04 »
Ich könnte mir folgende Attribute in einer UUID vorstellen:

- Zeitstempel UTC der ersten Erstellung eines Device
- Eindeutige ID für das verwendete Modul
- Zusätzliche Attribute aus einem Device, z.B. eine Serial oder Adresse, sofern vorhanden.

Leider sind wir noch sehr weit davon entfernt, dass jedes Gerät eine IPv6 Adresse hat. Sonst wäre die für mich ein heißer Kandidat, zumindest für einen Teil der UUID.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19289
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #13 am: 15 Januar 2019, 12:52:36 »
den aktuellen device zustand sollte man nicht mit rein packen.


wir haben je gerade keine hardware bei dummys und co. deshalb brauchen wir etwas das nicht hardware basiert ist.

aber das format ist mit eigentlich ganz egal. so lange es kein reading wird :)
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 herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5056
Antw:vorschlag: eindeutige id für jedes fhem device
« Antwort #14 am: 15 Januar 2019, 12:54:52 »
viele device sind doch überhaupt keine Netzwerk-device -> sowieso keine ip.

Für uuid gibt es doch genügend Standards. Ansonsten schlage ich einen Hash (sha) , gebildet über fhem unique ID + (ursprünglicher) device Name vor. Das ist immer einzigartig. Wenn das device "umzieht" zieht der Hash halt mit um. Gespeichert werden kann der in der fhem cfg, analog der def.
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal