Wählt IPS bei SendDataToChildren automatisch den/die korrekten Childs aus ?

Mal eine gezielte Frage zum Datenaustausch zwischen Instanzen.

Wenn ein Parent mehrere Childs hat, welche unterschiedliche Interfaces besitzen, wählt IPS automatisch die ‚richtigen‘ aus, wenn ich IPS_SendDataToChildren aufrufe ?

Oder muss ich im Child, bei ReceiveData, noch auf die korrekte GUID prüfen ?

In der Gegenrichtung (Splitter) mache ich das schon, weil ich ja nur anhand der GUID ermitteln kann was mir der Child für Daten forwarded.

Michael

Prinzipiell prüfst du weniger auf die Verbindung, als auf die DataID, welche dir im Data Array mitgeliefert wird. Dadurch kannst du erkennen welche Daten gesendet werden, und ob du die verwenden kannst :slight_smile:

paresy

Ja das meinte ich ja mit ‚auf die GUID‘ prüfen :slight_smile:

Aber muss ich das auch im Child machen ?
Oder gibt IPS nur wirklich dann etwas an das Child wenn es in der module.json auch als implemetiert eingetragen wurde ?

Folgends Bild mal als Beispiel:

Wenn das Gateway nun Daten per SendDataToChildren weitergibt, müssen dann die Child selbst prüfen ob es sich um Daten für einen Splitter oder ein Device handelt (anhand der DataID).
Oder sendet IPS automatisch nur an die Childs welche diese DataID in der module.json auch implementieren ?
In der module.json wird ja nicht unterschieden aus welcher Richtung die Daten kommen.

Michael

Eigentlich kannst du die Konstellation nur bauen, wenn die GUIDs gleich sind und somit auch die Daten. Ansonsten geht es doch mit den ParentRequirements nicht auf und du kannst dann in der Konsole nichts verbinden!?

paresy

Das habe ich doch schon gebaut :smiley:
Einmal unter Delphi und jetzt unter PHP.
Die Verbindungen kann ich alle korrekt in der Console zuordnen.
Ich push das nachher mal auf GitHub.

Unter Delphi war es dahingehend einfacher da jedes Interface andere Methoden implementierte.

Jetzt hat der Child ja nur eine Empfangs-Methode. Darum Frage ich ja so blöd ob IPS stumpf an alle Childs weiterleitet oder nur an die wo die GUID der DataID zu einem passenden implements Eintrag existiert.
Mein Splitter setzt je nachdem was er weiterleitet eine andere GUID in der DataID.
Michael

Ah :smiley: Wir senden Stumpf alles weiter und du darfst entscheiden, ob du es verwertest.

paresy

Ah.
OK dann muss ich noch einbauen.
Bedeutet ja auch wieder ‚Stress‘, und ein PHP-Slot weniger pro Child, für IPS.
Michael

So dann für die ‚anderen‘ 35 die dieses Thema auch gelesen haben :smiley:

Nall-chan/IPSXBeeZigBee · GitHub

Funktioniert noch nicht wirklich, da ich Stück für Stück das ‚alte‘ Delphi Modul umhebe auf PHP.

Aber im Gateway und vor allem im Splitter sieht man schon worum es ging, bei den betreffenden Methoden zum Datenaustausch.

Michael

Das habe ich nun auch gemerkt :smiley:

‚Meine‘ Device-Module filtern nun falsche GUIDs in DataID aus…

Leider machen das die original IPS-Module nicht; oder der FlowHandler:

03.10.2015 15:35:02*| FlowHandler*| Kann Daten nicht zur Instanz #30605 weiterleiten: Require Data with DataID {018EF6B5-AB94-40C6-AA53-46943E824ACF}

Michael