Einbetten eines Device in einem Modul

Begonnen von Mario67, 01 Oktober 2014, 09:50:43

Vorheriges Thema - Nächstes Thema

Mario67

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
FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich

Elektrolurch

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
configDB und Windows befreite Zone!

Mario67

#2
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
FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich

Elektrolurch

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.
configDB und Windows befreite Zone!

Mario67

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
FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich