Aufteilung fhem.cfg & 99_myUtils.pm / was ist sinnvoll und was muss am Code geändert werden?

Begonnen von aqua_chris, 16 Dezember 2013, 21:39:24

Vorheriges Thema - Nächstes Thema

aqua_chris

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

bugster_de

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) 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.




RoqueNublo


ph1959de

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
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Rohan

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
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

aqua_chris

Hallo Thomas,

das war auch mein Gedankenansatz. Was muss ich dann am Code ändern und wie includiere ich am Besten?

Gruss
Chris



Gruss
Chris

Puschel74

Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rohan

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
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

UliM

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
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.