FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mario67 am 01 Oktober 2014, 09:50:43

Titel: Einbetten eines Device in einem Modul
Beitrag von: Mario67 am 01 Oktober 2014, 09:50:43
Hallo,

ich bin gerade dabei, ein zugeschnittenes Modul zum Auslesen meiner Lüftungsanlage zu schreiben (und bei Erfolg natürlich bereitzustellen).
Der Rahmen steht bereits. Allerdings komme ich an der Stelle nicht weiter, an der ich zur Kommunikation mit der Anlage ein ECMDDevice einbetten will. Das neue Modul soll natürlich nicht nur das ECMDDevice verstecken, sondern bringt auch zugeschnittene Readings usw. mit.
Die Nutzung von ECMD / ECMDDevice mit der Anlage läuft außerhalb des Moduls bereits stabil.
Meine Frage lautet: Wie kann ich in einem Modul elegant (z.B. ohne Nutzung von sehr vielen fhem(..)-Kommandos) in einem Modul ein Device (hier ECMDDevice ) integrieren bzw. wrappen? Die Suche in den bestehenden Modulen nach Beispielen/Anregungen hat mich da bisher nicht weiter gebracht.

Gruß,
Mario
Titel: Antw:Einbetten eines Device in einem Modul
Beitrag von: Elektrolurch am 01 Oktober 2014, 12:43:12
Hallo,

so ganz verstehe ich Deine Frage nicht.
Wenn Du ein bestehendes Modul nutzen willst, musst 'Du ein Objekt dieses Moduls immer instanzieren.
Du kannst natürlich dieses Objekt per define an Dein neues Modul übergeben oder dort gleich per
fhem-Befehl erzeugen.

fhem-Befehl:
Für die meisten Kommandos gibt es natürlich in der fhem.pl Subroutinen, so dass Du nicht
fhem("...."),
in Deinem perl-Code aufrufen musst.

Außerdem empfiehlt es sich, jene Routinen zu verwenden, die als Parameter für das Objekt einen Hash erwarten und nicht eine regex für den device-Namen.
Das spart dann auch Rechenzeit.

Gruß


Elektrolurch
Titel: Antw:Einbetten eines Device in einem Modul
Beitrag von: Mario67 am 01 Oktober 2014, 12:57:55
Danke für die Antwort.
Um die Fragestellung klarer zu machen: Die Instanziierung eines Objektes außerhalb und dessen Übergabe an mein Modul wollte ich gerade vermeiden. Das wäre aus Anwendersicht die Notlösung. Das Objekt sollte in meinem Modul z.B. in der x_Define-Routine angelegt und dann zur Anbindung an die Anlage dienen.

Grüße,
Mario
Titel: Antw:Einbetten eines Device in einem Modul
Beitrag von: Elektrolurch am 01 Oktober 2014, 15:50:30
Na ja, dann erzeuge Deine "Kommunikationsschnittstelle" (device) halt im define.
Es ist ja für den Anwender nicht sichtbar, dürfte also nicht stören.
Titel: Antw:Einbetten eines Device in einem Modul
Beitrag von: Mario67 am 01 Oktober 2014, 16:43:02
Ich habe durch Deinen Hinweis gerade erst fhem.pl als "Dokumentation" der internen Kommandos zu nutzen gelernt.
Damit (und den vielen existierenden Modulen) komme ich weiter.

Danke,
Mario