Hallo zusammen,
Da meine fhem.cfg mittlerweilen sehr umfangreich wird stelle ich mit imm öfter die obige Frage...
- Was gehört Eurer Meinung nach alles in eine fhem.cfg?
- Macht es Sinn z.B. alle Definitionen einer Gruppe, z. B. FHT's in einer 99_myFHT.pm zusammen zu fassen um es übersichtlicher zu gestalten?
- und, was muss am Code geändert werden, damit Code aus der fhem.cfg auch in der 99_myDatei.pm funktioniert? Denn ein
define ELRO_12A IT 00FFF0FFFF FF F0
attr ELRO_12A IODev AHS9_433
attr ELRO_12A alias Licht_Deko_1
attr ELRO_12A group Schalter
attr ELRO_12A model itswitch
attr ELRO_12A room Wohnzimmer
funktioniert wunderbar in der fhem.cfg, aber eine 99_myDateiUtils.pm mit dem Inhalt
package main;
use strict;
use warnings;
use POSIX;
sub
myDateiUtils_Initialize($$)
{
my ($hash) = @_;
}
define ELRO_12A IT 00FFF0FFFF FF F0
attr ELRO_12A IODev AHS9_433
attr ELRO_12A alias Licht_Deko_1
attr ELRO_12A group Schalter
attr ELRO_12A model itswitch
attr ELRO_12A room Wohnzimmer
1;
funktioniert nicht....
Was macht Sinn und was ist zu beachten?
Gruß Chris
ui, ui, ui, ich glaue da musst du erst nochmal kräftig Doku lesen :-)
grob erklärt:
in der fhem.cfg Datei werden alle fhem Befehle eingetragen. Sprich alles, was Du auch oben in der Eingabeleiste direkt eingeben kannst. Siehe hierzu auch die fhem commandref (http://fhem.de/commandref_DE.html (http://fhem.de/commandref_DE.html)) im Bereich FHEM Befehle
in den 99_xxUtils.pm dateien wird Perl Code geschrieben. Wenn man also sehr komplexe Ablaufsteuerungen hat, dann kann man diese als Perl Funktion programmieren und in der 99_xxUtils.pm speichern und diese dort aufrufen.
Sprich deine fhem.cfg ist richtig und kann so bleiben. In die 99_myDateiUtils.pm hast Du nach der geschweiften Klammer } einfach alles aus der fhem.cfg nochmal rein kopiert. Das geht so nicht, da hier Perl Code hingehört.
Hi Chis,
schau doch mal auf den Beitrag "https://groups.google.com/forum/#!msg/fhem-users/G5uIHZARMF4/x9jYTF51n8YJ" den ich beim google'n zu Deinem Thema gefunden habe.
Gruß Roque
Zitat von: RoqueNublo am 17 Dezember 2013, 14:39:28
schau doch mal auf den Beitrag "https://groups.google.com/forum/#!msg/fhem-users/G5uIHZARMF4/x9jYTF51n8YJ" den ich beim google'n zu Deinem Thema gefunden habe.
Das ist auch mit hier ins Forum übernommen worden: http://forum.fhem.de/index.php/topic,6720.0.html ... kein Grund also, in die alte Google Group zu wechseln.
Gruß, Peter
Hi,
Zitat von: aqua_chris am 16 Dezember 2013, 21:39:24... Da meine fhem.cfg mittlerweilen sehr umfangreich ...
Das Stichwort ist: "include"
Meine fhem.cfg habe ich beschränkt auf das Laden/Initialisieren des CUL/HMLAN, also der Basiswerte. Die Devices sind alle in UG-/EG-/OG-/DG-Etagen.cfg ausgelagert und werden am Schluss der fhem.cfg "includet". Zusätzlich habe ich begonnen meine "notifys" und "ats" in eine "sonstiges.cfg" auszulagern, die ich als letztes include. Macht die Sache sehr übersichtlich und "finde-freundlicher" ;)
Gruß
Thomas
Hallo Thomas,
das war auch mein Gedankenansatz. Was muss ich dann am Code ändern und wie includiere ich am Besten?
Gruss
Chris
Gruss
Chris
Hallo,
http://fhem.de/commandref.html#include (http://fhem.de/commandref.html#include)
die Suchfunktion liefert aber auch einige Treffer dazu.
Grüße
Hallo Chris,
wie man includiert, wird durch den Link von Puschel erklärt. Und am Code musst du gar nichts verändern. Du musst nur ein wenig auf die Reihenfolge achten. Nicht dass du Notifys und At-Befehle includierst bevor die dadurch angesprochenen Devices/Defines eingebunden werden (aber das sagt dir Fhem dann schon ;) : "Please define ... " oder "Not defined ...").
Gruß
Thomas
Hi,
include dient dazu, die fhem.cfg in mehrere Teile aufzuteilen. fhem wird dann durch den include-Befehl veranlasst, die weiteren Dateien ebenfalls zu laden.
Include nutzt man also nur, wenn man direkt die fhem.cfg bearbeiten möchte. Man kann alle Funtkionen auch in fhemweb bearbeiten und braucht eigentlich nie in die fhem.cfg zu schauen (so ähnlich wie die Windows registry). Welchen Weg man wählt ist Geschmackssache.
In die 99_myUtils lagert man üblicherweise Routinen aus, die man ebensogut als Perl-Routine an ein notify hängen kann. Da die Übersichtlichkeit bei längerem code dort ncht besonders gut ist, verlagert man den code in eine Routine in 99_myUtils und ruft ihn aus dem notify heraus auf. Dadurch bleibt der Aufruf im notify kurz, und man kann den perl-Code hübsch aufgeräumt und formatiert in 99_myUtils ablegen.
Viel Erfolg - auf welchem Weg auch immer :)
Uli