Datenaufbereitung in welchem Modul Typ unterbringen

Hallo Zusammen,
ich versuche mich derzeit zum ersten mal an einer Modulentwicklung mit dem Ziel das ganze auch im Store anbieten zu können.

Ich habe mich dazu entschieden, einen Konfigurator, Geräte Instanzen und eine I/O-Instanz für das Abfragen der Webseite zu nutzen. Einen Splitter werde ich denke ich nicht benötigen, da die Informationen die Abgerufen werden sollen nur von einer Geräte-Instanz benötigt werden und nicht auf mehrere Geräte aufgeteilt werden muss. Zumindest wenn ich das Konzept richtig verstanden habe.

Das Modul arbeitet Prinzip Bedingt sehr intensiv mit Webseiten Parsing. Das Parsing baut mir ein json zusammen, was alle Informationen zum Update eines Gerätes enthalten soll.
Die Idee zum Aufbau ist nun folgenden: Die Geräte Instanzen werden über den Konfigurator erstellt und mit den Initialen Daten befüllt. Die Updates laufen dann über eine standardisierte Abfrage über das I/O Modul (man könnte auch sagen API), das I/O Modul fragt die Webseite ab bereitet die Daten der Webseite auf und liefert sie in standardisierter Form zurück an die Geräte Instanz welche die eigenen Variablen Update,

Der Vorteil den ich sehe ist, solange ich den Input Weg nicht ändere kann ich das I/O Modul Updaten anpassen und verbessern ohne immer wieder den Code der Geräte-Module anpassen zu müssen. Auch ein Tausch oder eine Erweiterung der Datenquelle auf mehrere Webseiten wäre denkbar.

Da ich neu bei den Modulen bin, vorher nur mit Skripts hantiert habe und auch mit Entwicklung bis jetzt wenig am Hut hatte nun meine Frage, ob dies Strukturierung im Sinne der Symcon Modul Typen ist oder ob es eine sinnvollere Aufteilung gibt.

Bitte nicht steinigen, falls ich die falschen Begriffe in die Suche geschrieben habe. Eine Erklärung in welchem Modul-Typ ich am sinnvollsten zentralisierte Datenaufbereitung mache habe ich in der Doku nicht gefunden.

Danke für euren Input
TheEldar

Passt schon

Die Frage ist jetzt wer stellt die Anfrage. Die Geräte Instanz? Jede mit einem eigenen Timer?
Oder der IO?

Das kann man schnell anhand der Daten festmachen. Bekommst du bei der Abfrage an Extern immer nur gezielt Daten von einem Gerät oder eh immer alle Daten.

Variante a)
Du bekommst bei der Anfrage nur einen Datensatz zum Gerät.
Dann stellt jedes Gerät selber die Anfrage an den IO, und dieser liefert das Ergebnis per return an die anfragende Geräte-Instanz.
(Siehe hier, auch wenn es dort ein Splitter und kein IO ist: SymconTest/module.php at d1377fef89beb64d4da83b7b93f03fbf0c193ccb · symcon/SymconTest · GitHub)

Variante b)
Du bekommst immer alle Daten aller Geräte bei der Anfrage.
Dann stellt der IO direkt die Anfrage und liefert die aufgeteilten Ergebnisse per SendDataToChildren an die Childs.
Die Child müssen dann aber einen ReceiveFilter nutzen, damit nur der gewünschte Datensatz aus SendDataToChildren verarbeitet wird und nicht alle.
SymconTest/module.php at d1377fef89beb64d4da83b7b93f03fbf0c193ccb · symcon/SymconTest · GitHub

Michael

Das wäre bei mir das Mittel der Wahl. Jedes Gerät fragt nur die zu sich passenden Daten ab. Dann bin ich ja schon auf dem richtigen Weg.

Nochmal die Frage nach der Datenaufbereitung, Kann ich diese als quasi API im I/O Modul machen oder spricht die Symcon BestPractise dagegen?

Viele Grüße
Steffen

Das ist egal.
Michael