Warning: Cannot find required field ClientIP

Bei Zeile


$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "Buffer" => $packet))); // TX GUI

kommt die Meldung


Warning:  Cannot find required field ClientIP

Was soll mir diese Meldung sagen bzw. wie behebe ich das Problem?

Dein Objekt für den Datenaustausch erwartet noch mehr als nur Buffer.
Er möchte auch eine ClientIP und bestimmt auch einen ClientPort als Ziel für seine Daten.
Schau Mal in der Doku von dieser GUID was unter Beschreibung steht :wink:
https://www.symcon.de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-php/datenfluss/

Liefert, bezieht sich auf beide Richtungen.
Michael

Ich wäre ja froh wenn ich etwas auf der von Dir verlinkten Seite finden würde, aber entweder steht da nix oder ich sehe den Wald vor lauter Bäumen nicht.

Wie muss denn dann die Zeile korrekt lauten? Der Parent ist ein UDP Socket ist hatte es auch mit {79827379-F36E-4ADA-8A95-5F8D1DC92FA9} versucht aber irgendwie sehe ich im Debug Fenster nichts, das sich das irgendwas am UDP Socket tut. Keine Ahnung wo da der Fehler liegt.

Bin unterwegs, habe dir Mal ein Bild gemacht :wink:
Michael

Ja das hab ich gelesen, aber so ist das nichts sagend, da fehlt die Dokumention wenn man nicht raten will.

Soll das dann so aussehen?


$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "ClientIP" => "192.168.55.108", "ClientPort" => "54321", "Buffer" => $packet))); // TX GUI

Port ist eine Zahl keine String.
Schau dir doch einfach an was für ein Paket du empfängst.
Michael

Hier etwas zum abschauen :wink:
IPSNetwork/module.php at 707e3a1b36c4efa069fc7cb3604ab10112e57d82 · Nall-chan/IPSNetwork · GitHub
Michael

Ok habe ich geändert funktioniert aber trotzdem noch nicht.

Wie ist denn vorzugehen damit man was verschickt?
Wenn ich das mit USCK_SendText funktioniert es


$hello = '21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
$helloPacket = hex2bin($hello);
USCK_SendText(38861 /*[UDP Socket]*/, $helloPacket);		

Wird ordnungsgemäß über den UDP Socket verschickt und kommt auch ein Response.

Wenn ich dies nutzte


$HELLO_Message = '21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
$helloPacket = hex2bin($HELLO_Message);
$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "ClientIP" => "192.168.55.108", "ClientPort" => 54321, "Buffer" => $helloPacket))); // TX GUI

Kommt als Fehler
Warning: JSON parse error in module.php on line X

Wie muss das jetzt richtig lauten damit das auch funktioniert? Wenn ich hexbin weg lasse, wird zwar was verschickt aber nicht die richtigen Daten.

Wenn ich einen normalen PHP Socket nutzte sende ich ja auch mit


$helloPacket = hex2bin($HELLO_Message);
socket_sendto($socket, $helloPacket, strlen($helloPacket), 0, $ip, 54321);

Warning: JSON parse error in module.php on line X
Sagt doch alles.
Dein String ist nicht UTF8 !
PHP: json_encode - Manual

Einfach den Buffer mit utf8encode vorher bearbeiten.
Diese Frage hatten wir gerade vor zwei Tagen :wink:

Wenn du OHNE ZielIP (ClientIP)) und OHNE ZielPort (ClientPort) senden willst, musst du eine andere GUID benutzen.

Michael

Edit: Okay war vor drei Tagen :wink:
https://www.symcon.de/forum/showthread.php?p=350080