FHEM Forum

FHEM => Sonstiges => Thema gestartet von: ThomasRamm am 08 Oktober 2014, 18:08:43

Titel: Frage zu Architekturkonzept bei 2stufigen Modulen und Verwendung von IODev
Beitrag von: ThomasRamm am 08 Oktober 2014, 18:08:43
Hallo, ich habe ein 2stufiges Modul geschrieben und bei einer anderen Frage folgenden Hinweis bekommen:

Zitat- Falls man im logischen Modul auf irgendetwas in IODev zugreift, dann ist das Modul nicht FHEM2FHEM faehig. Die "erlaubten" Methoden fuer die Kommunikation zwischen den beiden Modulen ist IOWrite und Dispatch, falls man FHEM2FHEM verwenden will.

Wie kann ich die Benutzung von IODev in folgendem Fall umgehen:

Wenn ein logisches Modul definiert wird, wird die zu benutzende Adresse per IODev an das physikalische Modul weitergereicht und dort gespeichert.
Jede Sekunde erfolgt von dem physikalischen Modul eine Abfrage auf den durch die logischen Module definierten Adressbereich (kleinste definierte Adresse - größte definierte Adresse)
Aus Performancegründen wollte ich nicht jede Sekunde alle logischen Module durchgehen und die definierten Adressen abfragen, da diese sich ja immer nur bei einer Änderung der Definition logischer Module ändert.

Wie würdet ihr das Angehen/Lösen?
Bei jeder Datenaktualisierung alle Module durchlaufen?
Oder gibt es andere Möglichkeiten die Definition an das physikalische Modul weiterzureichen?

PS: Bei dem Modul handelt es sich um eine Siemens S5 PLC, jedes bit im zu lesenden Adressraum repräsentiert einen Ein- oder Ausgang der dann wieder als logisches Modul definiert wurde.

Gruß
Thomas
Titel: Antw:Frage zu Architekturkonzept bei 2stufigen Modulen und Verwendung von IODev
Beitrag von: rudolfkoenig am 09 Oktober 2014, 06:36:35
Man kann via IOWrite beliebiges an dem physikalischen Modul weiterreichen (z.Bsp. aus dem DefineFn des logischen Moduls), WriteFn muss es nur unterscheiden koennen (z.Bsp. an der $fn Wert), dass es als Konfiguration gemeint war. Ist problematisch, falls bei der Definition das physikalische Modul nicht erreichbar war, da das logische Modul keine Nachricht ueber das reconnect bekommt.
Alternativ werden diese Eintraege auf der physikalischen Instanz via READING gespeichert, damit muss die Verbindung nur bei der erstmaligen Definition des logischen Geraetes vorhanden sein.

Eine Schleife ueber alle logischen Module ist nicht tragisch, die Liste kann man mit devspec2Array("TYPE=XXX") auch bestellen. Setzt aber voraus, dass auf der Instanz mit dem physikalischen Modul auch alle logischen Geraete angelegt sind.

Titel: Antw:Frage zu Architekturkonzept bei 2stufigen Modulen und Verwendung von IODev
Beitrag von: ThomasRamm am 09 Oktober 2014, 07:13:01
Danke für die Info,
da habe ich ja einen Ansatz.

Der Vorschlag mit der Schleife würde aber nichts nützen, denn damit wäre das Modul wieder nicht FHEM2FHEM fähig und ich könnte alles so lassen wie es ist.

Gruß
Thomas