Diskussion zu IO Write x_Write und x_Set

Begonnen von Sidey, 12 März 2016, 17:33:11

Vorheriges Thema - Nächstes Thema

Sidey

Moin,

bin gerade mit anderen am diskutieren, daher stelle ich jetzt hier mal einige Thesen in den Raum.
Bitte kommentieren.

X_Write

Diese Funktion ist dazu gedacht, dass man dem Physichen Modul Daten übergibt, welche es an das Gerät sendet.
Das wird eigentlich nur für Daten verwendet, welche von einem logischen Modul kommen.

IO_Write
Diese Funktion ist dazu gedacht an die oben genannte Write Funktion Daten übergeben zu können.
Damit werden so Aufrufe wie Set ... Raw hinfällig

X_Set

Die x_Set Funktion stellt die Schnittstelle zu anderen Modulen oder UIs dar.
Mit der x_Set werden insbesondere Funktionen in einem z.B
Physichen Modul aufgerufen, die es anderen anbietet.


Grund dieser Thesen:
Es ist aktuell unklar, ob man eher IOWrite aus einem logischen Modul aufruft oder mittels callFN die x_Set.
CallSet gibt es ja glaube ich auch noch.

Grüße Sidey

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Ich versuche es mal etwas genauer.

- $module->{WriteFn} wird von IOWrite() verwendet, der in der zweigeteilten Modell (physisch/logisch) der einzig "offizielle" Weg ist, Daten vom logischen Modul an das physische zu uebermitteln. Wenn ein Modul (auch) andere Funktionen (wie z.Bsp. CommandSet) verwendet, dann kann man sie nicht mehr mit Modulen wie FHEM2FHEM, CUL_RFR oder STACKABLE_CC kombinieren.

- $module->{SetFn} wird von CommandSet (aka set) verwendet. Ist zusammen mit GetFn der Weg, um einem Modul Kommandos zu uebergeben. Sollte ueberwiegend von at/notify/DOIF/etc verwendet werden, weil wir hauptsaechlich Automatisieren und nicht Fernbedienen wollen :) Aber man kann es natuerlich auch ueber telnet/FHEMWEB/etc absetzen.

Sidey

Zitat von: rudolfkoenig am 12 März 2016, 18:15:51
Ich versuche es mal etwas genauer.

- $module->{WriteFn} wird von IOWrite() verwendet, der in der zweigeteilten Modell (physisch/logisch) der einzig "offizielle" Weg ist, Daten vom logischen Modul an das physische zu uebermitteln.
Das war mir so nicht klar. Hatte ich eher verstanden, um Daten an das Physichen Gerät zu übergeben.
Deine Antwort ist aber eindeutig.

Zitat
Wenn ein Modul (auch) andere Funktionen (wie z.Bsp. CommandSet) verwendet, dann kann man sie nicht mehr mit Modulen wie FHEM2FHEM, CUL_RFR oder STACKABLE_CC kombinieren.

- $module->{SetFn} wird von CommandSet (aka set) verwendet. Ist zusammen mit GetFn der Weg, um einem Modul Kommandos zu uebergeben. Sollte ueberwiegend von at/notify/DOIF/etc verwendet werden, weil wir hauptsaechlich Automatisieren und nicht Fernbedienen wollen :) Aber man kann es natuerlich auch ueber telnet/FHEMWEB/etc absetzen.

Hast Du eine Empfehlung, wenn ich von einem Physichen Modul Funktionen anbiete, wie ich das am besten mache, wenn diese sowohl von doif als auch.logischen Modulen verwendet werden Sollen?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

notify/etc ruft set bzw. SetFn auf. Logische Module rufen ueber IOWrite die WriteFn auf, diese kann dann intern SetFn aufrufen.