externe Device einbinden welcher Weg am besten

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);


Toni

ok das sind die variablen

aber die proerties sollten doch mit dem RegisterIntProperty funktionieren das die auf der eigenschaftsseite aufcsheinen oder?

Äh, achso… ja…

Vor ewigen Zeiten gabs mal Probleme mit den Properties. Hab damals beschlossen sie einfach nicht mehr zu benutzen. Ich teste mal eben… Moment.

… oder verstehe ich die Register…Property hier falsch?

ah lese gerade was von deprecated … moment :slight_smile:

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.

ich hab den punkt mal in ein eigenen Topic gepackt …

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.

Tommi

aber wie komme ich bei den internen serversockets zu der absender ip adresse?
und kann ich da gleich beim empfangen einen text zurücksenden.

Aber ich glaube einen „richtigen“ Indy socket müsste schon schneller besser sein oder?

Und per php kann oich auch auf die IPAdresse und co zugreifen?

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.

Tommi

jep, aber ich habe das schon vor 2 jahre nachgefragt … aber glaub das brauchen nicht so viele die IP Adresse … naja…

So wirds etwas spielerei :wink: