SendDataToParent in ReceiveData

Hi

ich möchte in einem Modul per ReceiveData eine Anfrage erhalten und diese per SendDataToParent beantworten. Ich bekomme leider aber vom FlowHandler eine Fehlermeldung:

Kann Daten nicht zur Instanz #32101 weiterleiten: 
Zeitüberschreitung beim Warten auf Antwort in ...

Jemand eine Idee was hier schief läuft?

Das funktioniert nicht, da der Parent noch auf dein Rückgabewert aus ReceiveData wartet.
Somit kannst du dem Parent keine neuen Daten per SendDataToParent übergeben.
Du musst hier also die Threads entkoppeln. Oder deine Antwort per Return übergeben.
Michael

Das hab ich mir sogar gedacht und auf so eine einfache Idee wie von dir gehofft. Die ist nämlich viel besser umzusetzen :slight_smile: Hätte ich auch selber drauf kommen können. also danke.

Du willst es übrigens per RegisterOnceTimer entkoppeln. Als Rückgabewert geht es in deinem Fall (EIB/KNX) leider nicht, da die Request/Response zwei komplett vollständige und eigenständige Pakete sind.

paresy

Damit kann ich aber dann keine private Function aufrufen oder? Wie machst du das in deinen KNX Childrens? Ich möchte ungern das diese interne Funktion irgendwo auftaucht.

Auch wenn die Traits etwas aus dem Zusammenhang sind.
Ich mache dies per IPS_RunScriptText+ IPS_RequestAction

Michael

Ich frage mich halt wie das bei Symcon internen Modulen gelöst ist. @paresy müsste ja das gleiche Problem dort auch haben. Generell hätte ich jetzt eine Funktion mit der entsprechenden Adresse und dem Ident aufgerufen. Beides hätte ich zur Hand.

Die Idee über die RequestAction zu gehen find ich nicht schlecht um eine sichtbare Funktion zu verstecken, aber vielleicht hat @paresy noch einen Tipp wie er das bei den normalen KNX Instanzen macht.

Das ist C++ und hängt ja nicht von z.B. den PHP-Threads ab. Glaube nicht das dies vergleichbar ist.
Michael

Ich hätte gedachte, dass nur das Framework/Core selber in C++ geschrieben ist. Ich spreche ja auch mit dem Module wie mit jedem anderen Modul auch. Aber klar wenn da nur gleiche Schnittstellen hat, stimme ich dir zu. Das würde ggf. auch erklären warum mein KNX-Modul super viele Debug Meldungen mit Skriptausführung … im Logfile verursacht und das interne KNX Modul nicht. Aber dann bleibt mir nur noch der versteckte weg.

Wir haben alles in native C++ und mappen alles für euch sauber nach PHP. Somit sind meine Möglichkeiten anders und leider müsstest du die über eine Public Funktion, den Tipp von Nall-Chan oder RequestAction lösen. (Wir haben ein paar Ideen wie man das anders lösen könnte - die kommen aber leider nicht zeitnah)

paresy

Dann ist das erstmal so, ich habe es jetzt durch RequestAction getunnelt mit einem speziellen Ident und json_encode’d value. Lese Request gehen nun auch.