FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Wzut am 13 Oktober 2020, 13:28:47

Titel: define via autocreate erkennen ?
Beitrag von: Wzut am 13 Oktober 2020, 13:28:47
Gibt es eine Möglichkeit im Define Abschnitt eines Modul zu erkennen ob das Anlegen des Gerätes garade via autocreate augelöst wurde ?
Hintergrund :
Ich habe bei den MAX Modulen heute schon in der Define sub einen Abschnitt der auf $init_done == 1 prüft um zu unterscheiden ob der aktuelle Durchlauf durch den FHEM Start erfolgt oder der User es via Def/Modify gerade geändert hat.
Bei Änderung zur Laufzeit werden zusätzliche Überprüfugen ausgeführt und genau diese möchte ich nun wieder überspringen wenn autocreate das Device gerade erzeugt hat.
Titel: Antw:define via autocreate erkennen ?
Beitrag von: rudolfkoenig am 13 Oktober 2020, 13:54:26
Da du das autocreate per "UNDEFINED..." Event ausloest, kannst du dem Event beliebige zusaetzliche Argumente uebergeben, auf man im DefFn pruefen kann.
Weiterhin duerfte im autocreate Fall auch $hash->{CL} nicht gesetzt sein.
Titel: Antw:define via autocreate erkennen ?
Beitrag von: Wzut am 14 Oktober 2020, 08:59:36
Ja das ich da X Werte mit übergeben ist schon klar genau das wird ja heute gemacht. Ich habe nun einen weiteren angehängt und prüfe den auch in der Def Funktion, aber er landet dann auch iautomatisch in $hash->{DEF} und genau da möchte ich ihn später nicht mehr haben. Die einzige Lösung die mir bisher eingefallen ist :
Da am Ende der Define Funktion ein internalTimer gestartet wird könnte ich da dann feststellen ob $hash->{DEF] mehr als zwei Parameter hat und wenn ja mittels CommandModify (oder brutal direkt ? ) den/die überflüssigen wieder entfernen.

Das mit dem $hash->{CL} habe ich in der CommandDefine gesehen, ich verstehe aber nicht für was steht das CL und wann hat es überhaupt einen Wert ?
Ich habe das mal in der CommandDefine zusätzlich noch an eine andere Stelle kopiert da er ja dort später wieder gelöscht wird, sehe aber nie einen Wert egal auf welche Weise die CommandDefine durchlaufen wird.


Titel: Antw:define via autocreate erkennen ?
Beitrag von: rudolfkoenig am 14 Oktober 2020, 09:58:00
DEF kann man im DefFn direkt aendern, dafuer braucht man weder InternalTimer noch modify.

CL wird auf die Client-Verbindung gesetzt, ueber die die Aktion ausgeloest wurde. Kann verwendet werden, um diesem Client (wenn noch da ist) spaeter Nachrichten zu schicken (asyncOutput). Oder per allowed zu pruefen, ob er was darf.
Titel: Antw:define via autocreate erkennen ?
Beitrag von: Wzut am 14 Oktober 2020, 16:16:38
Zitat von: rudolfkoenig am 14 Oktober 2020, 09:58:00
DEF kann man im DefFn direkt aendern
ja das hatte ich direkt nach dem schreiben auch mal probiert, war mir aber bis jetzt sehr unsicher ob das ein sauberer Weg ist, THX