Erstmal das einfache vorweg: Unter dem Button „Über…“ oben mittig in der Konsole und dann unten links „Module“. Da solltest du fündig werden.
Und hier ein Auszug aus nem Code von mir:
// im constructor
RegisterVariable('DynDNSPublicIP', 'My Public IP', vtString);
// später im Code dann
if isValidIP(PublicIP) then
FKernel.VariableManager.WriteVariableString(GetStatusVariableID('DynDNSPublicIP'), PublicIP);
Also wenn ich mich recht erinnere funktionierte diese Geschichte nicht aus einem Modul heraus. Du musst eine externe Applikation schreiben, die dann über SOAP ein User-Interface zur Verfügung stellt. Hab das damals mit dem SMSWitch getestet und beschlossen, dass das viel zu aufwändig ist.
Das war der Stand 2.0. Gut möglich, dass das mittlerweile anders ist.
Die Module fürs Sockethandling gibt es schon im Standard-IPS, die kann man nutzen. Das habe ich in meinem Demologger genauso gemacht. Man verknüpft in IPS sein Modul mit dem Socket-Modul als Parent. Dann kann man Daten von der Instance bekommen und wieder zurück senden.
Hier am Beispiel der Echo Funktion
parent:=getParent();
//Test ob Instance existiert
if parent=NIL then
begin
//nein->Melden
senddata('DoEcho','Kein Parent verbunden, skip');
end else begin
//test ob IIPSSendString-Interface existiert
if supports(parent,IIPSSendString,IfSend) then
begin
//existiert, kann senden
senddata('DoEcho','Alles Ok');
ifsend.SendText(s);
end else begin
//Problem mitteilen
senddata('DoEcho','Send String not supported');
end;
Streng genommen braucht man für die beschriebene Anwendung gar kein eigenes Modul sondern kann alles direkt in PHP mit den Standard-Modulen machen, da die Interfaces in der Regel auch als PHP-Befehle verfügbar sind. Als Beispiel kann das APCUPSD-Script verwendet werden. Das sendet ein Kommando und wertet das Ergebnis aus. Beim CUN-Script wird auf ankommende Datensätze gewartet.
Serversocket hat die PartnerIP nicht rausgeführt. Das kannst Du ja als FeatureRequest eintüten. Da die IPS Socket-Funktionen wohl selbst Indy verwenden, muss es mit Indy in einem eigenen Modul nicht zwangsläufig schneller werden.
Wenn der anrufene AVR die Verbindung nicht gleich wieder schliesst, sollte man mit SendText auch wieder was zurück schicken können. Das Interface gibt es. Somit sollte man auch eine Handshake-Procedure implementieren können.