Ich baue gerade ein Modul das als Parent einen „UDP-Socket“ hat.
Dazu ein paar Fragen.
Wo wird gespeichert welche Instanz (ID) von „UDP-Socket“ mit meiner Instanz verbunden ist?
Warum ist im „$this->SendDataToParent“ nochmals die IP und der Port angegeben.
Beide Angaben sind doch schon in der verbundenen Instanz vom „UDP-Socket“ eingestellt!
public function Create()
{
//Never delete this line!
parent::Create();
$this->RequireParent('{82347F20-F541-41E1-AC5B-A636FD3AE2D8}');
}
public function Send(string $Text, string $ClientIP, int $ClientPort)
{
$this->SendDataToParent(json_encode(['DataID' => '{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}', "ClientIP" => $ClientIP, "ClientPort" => $ClientPort, "Buffer" => $Text]));
}
public function ReceiveData($JSONString)
{
$data = json_decode($JSONString);
IPS_LogMessage('Device RECV', utf8_decode($data->Buffer . ' - ' . $data->ClientIP . ' - ' . $data->ClientPort));
}
Die ID/Verbindung wird intern von IP-Symcon verwaltet. Da hast du keinen Einfluss drauf. RequireParent erstellt einfach einen UDP Socket für dich. Falls du Einstellungen Vorschlagen willst, schau dir unbedingt GetConfigurationForParent —IP-Symcon :: Automatisierungssoftware an.
Der nutzt scheinbar den komplexen Datenfluss. Der ist auch cool, wenn du direkt mit mehreren Geräten kommunizieren willst und die Werte im UDP Socket nicht beachten willst was Host/Port angeht.
Wir geben uns auch echt viel Mühe bei der Doku und falls du die noch nicht entdeckt hast die Webinare auf unserem YouTube Kanal. Danke für dein positives Feedback!