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
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
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.
Zitat von: rhoffm34 am 02 September 2018, 01:06:11
das ich das 99_MyUtils Programm zB in einem Notify aufrufen kann.
- 99_myUtils.pm ist kein Programm! Sondern als Datei eine Sammlung von selbst geschriebenen perl Funktionen, die Du innerhalb von FHEM verwenden kannst.
- deshalb wird auch nicht die 99_myUtils.pm von irgendwas (notify, DOIF, at, ...) aufgerufen, sondern immer eine Funktion, die sich in der Datei befindet.