vorschlag: eindeutige id für jedes fhem device

Begonnen von justme1968, 15 Januar 2019, 09:22:49

Vorheriges Thema - Nächstes Thema

justme1968

achso: automatische daten aus dem device wenn möglich.

ja. im prinzip schon.

aber: das was ich oben vorgeschlagen habe ist erst mal komplett unabhängig und geht führ jedes device.

im prinzip steht es einem device frei die von fhem vergebene id nachträglich teilweise zu ändern wenn es tatsächlich eine hardware id gibt.

man darf diese aber nicht 1:1 übernehmen. dann hätten zwei devices in zwei fhem installationen die die gleiche hardware steuern die gleiche fhem id. das soll nicht passieren.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ich mache einen neuen patch vorschlag mit uuid format und setfuid.

ps: die if sollte im save file stehen. nicht im config file.  sonst ist das risiko sie aus versehen zu kopieren zu groß.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Zitatich mache einen neuen patch vorschlag mit uuid format und setfuid.
Nicht noetig, so kompliziert ist die Sache nicht. Wird aber bis morgen dauern.
Wir bleiben bei UUID nach dem vorgeschlagenen Muster (t,f,i,d), und setuuid Befehl, was explizit in fhem.cfg gespeichert wird.

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

bitte ins save file. nicht cfc. grund siehe oben
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Loredo

Bei der Anbindung von 3rd Party Bridges (also z.B. Homematic), die ihre Geräte selbst eindeutig identifizieren, wäre es vielleicht doch auch ganz gut diese ID zu übernehmen statt eine neue UUID zu generieren?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

justme1968

nein. weil du damit unter umständen zwei fhem devices mit der gleichen id bekommst. die fhem devices sollen aber eindeutig sein.

außerdem soll der code in fhem generell arbeiten und keine änderung an modulen erfordern.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Loredo

Hm, vielleicht geht dann eine Alias-Funktion o.ä.?
Es wäre ja schon sexy, wenn man auch über mehrere Gateways hinweg zumindest irgendeine einmalige ID hätte.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

betateilchen

#23
Denkt bitte daran, dass es neben fhem.cfg auch noch die configDB gibt.
Und das meiste, was bisher hier im Thread an Ideen geäußert wurde, würde mit der configDB nicht funktionieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: herrmannj am 15 Januar 2019, 12:54:52
Für uuid gibt es doch genügend Standards. Ansonsten schlage ich einen Hash (sha) ,

FHEM selbst ist schon lange in der Lage, uuid zu erzeugen.

sub createUniqueId()
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

der ansatz mit setfuid im state file sollte mit configDB problemlos gehen. du musst nur die eine zeile aus WriteStatefile entsprechend übernehmen cfgDB_SaveState. oder übersehe ich etwas ?

createUniqueId() erzeugt keine uuid im rfc format. das wollten die herren aber :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Eigentlich will ich nur vermeiden, dass Rudi mit einem spontan Schnellschuss einmal mehr Inkompatibilitäten und Probleme verursacht.

Wenn ich sowas lese

Zitat von: rudolfkoenig am 15 Januar 2019, 13:23:10
Nicht noetig, so kompliziert ist die Sache nicht. Wird aber bis morgen dauern.

gehen hier schon die roten Alarmleuchten an. Wir können sowas gerne gemeinsam so implementieren, dass es in beiden "Konfigurationswelten" funktioniert. Aber wir sollten das dann auch in Abstimmung und möglichst zeitgleich tun. Diese Woche komme ich definitiv nicht mehr dazu.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: justme1968 am 15 Januar 2019, 18:29:08
oder übersehe ich etwas ?

Du übersiehst zumindest, dass es durchaus FHEM Installationen gibt, in denen kein statefile verwendet wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: justme1968 am 15 Januar 2019, 10:53:08
ja. ein reading ist nicht vor setreading geschützt.

Wenn ein reading einen festgelegten Namen hat, wäre es überhaupt kein Problem, dieses reading vor einem Überschreiben/Ändern durch setreading zu schützen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

das wäre aber eine sonderlocke. wenn die id in einem reading steckt sind an allen möglichen stellen sonderbehandlungen nötig (setreading, copy, clear readings...), man muss bei kopieren aufpassen und das prinzip das die readings dem device gehören wird verletzt.

in einem internal ist nirgends sonderbehandlung nötig sogar copy geht komplett automatisch inklusive einer neuen id. die internals gehören auch mindestens zum teil zum system.

ein fhem system ohne state speicher (egal ob file oder db) hält auch keine readings über den start hinweg. d.h. da gehen auch einige andere dinge nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968