FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rhoffm34 am 02 September 2018, 01:06:11

Titel: 99_MyUtils
Beitrag von: rhoffm34 am 02 September 2018, 01:06:11
Hallo zusammen.

Ich beschäftige mich gerade mit 99_MyUtils und prüfe ob ich meine immer länger werdende DoIf´s dorthin auslagern kann. Als großen Vorteil sehe ich, das wenn ich an dem Code etwas verändern möchte, ich nur den entsprechende 99_MyUtils Code ändern muss (Es sollen viele Devices auf den Code zugreifen)  und nicht jedes DoIf.

Nun zu meiner Frage.

Ich habe gelesen unter Wiki.Fhem im Eintrag 99 myUtils anlegen das ich das 99_MyUtils Programm zB in einem Notify aufrufen kann.

Wenn jetzt ein Event "LichtImFlurAn" ausgelöst wird, erkennt mein geschriebenes 99_MyUtils das doch erst wenn ich es in einem Notify aufrufe??? Oder? Das wäre schlecht, da ich jede Menge Events "überwache" um verschiedene Aktionen zu starten. Ich müsste dann permanent ein Notify starten.

Oder habe ich ein Brett vorm Kopf??

Gruß,

Ralf
Titel: Antw:99_MyUtils
Beitrag von: Prof. Dr. Peter Henning am 02 September 2018, 05:54:15
Natürlich muss irgendetwas in die Hauptschleife von FHEM eingebunden werden, um Events zu überwachen. Das kann man entweder auf FHEM-Ebene tun, eben mit DOIF und notify. Oder auf Perl-Ebene, davon sollte man als relativer Neuling aber die Finger lassen.

Am notify führt also nichts vorbei.

Allerdings ist das Auslagern der ganzen Bedingungen und verschachtelten WENN-DANN in eine eigene Perl-Datei (die übrigens nicht 99_myUtils.pm heißen muss, alle Module mit einer 99 am Anfang werden beim Start automatisch hinzugeladen - bei mir sind das ca. 5 verschiedene) deshalb sinnvoll, weil der Code
a.) klarer verständlich,
b.) besser wartbar und
c.) kompakter ist sowie 
d.) mit mehr Möglichkeiten als die einfache FHEM-Skriptsprache einhergeht.

LG

pah
Titel: Antw:99_MyUtils
Beitrag von: CoolTux am 02 September 2018, 06:49:18
Ich glaube Du verkennst da was. Eine myUtils soll nicht Deine Anzahl DOIFs oder Notifys ablösen/auslagern sondern die komplexe Logik.
Licht ist ein gutes Beispiel, meine myUtils ist dafür schon ziemlich lang.

Ein Notify/DOIF muss also sein welches auf ein bestimmtes oder auch mehrere Event/s Triggertechnik und dann ein Funktionsaufruf wo sich die Funktion in eine myUtils befindet durchführt.
Titel: Antw:99_MyUtils
Beitrag von: betateilchen am 02 September 2018, 09:45:39
Zitat von: rhoffm34 am 02 September 2018, 01:06:11
das ich das 99_MyUtils Programm zB in einem Notify aufrufen kann.