Was können wir verbessern?

Dokumentation

SDK (Delphi)

Das Delphi SDK kann nur bis Version 3.4 genutzt werden

Vorraussetzungen

Delphi 2007

Wesentliche Änderungen von Version 1.0 nach Version 2.0

  • Das registrierte Interface (ModuleRegistry.RegisterModule(*)) wird automatisch nach PHP weitergereicht. Die Handle PHP Funktion entfällt komplett.
  • Zurückgegebene Objekte müssen vom Typ TIPSRemotable sein (UIPSModuleTypes).
  • Zurückgegebene Objekte werden automatisch in Array’s in PHP umgewandelt
  • Versenden von Daten zwischen Modulen geschieht nun typsicher. Dazu muss jedes Modul bestimmte Interfaces anbieten, auf die dann die anderen Module zugreifen können (siehe das Beispiel Modul, UIPSDataTypes).
  • Status Variablen werden direkt über die Hauptklasse TIPSModuleObject (UIPSTypes) verwaltet.

Wesentliche Änderungen von Version 2.0 nach Version 2.1

  • Konstantaten sind jetzt in 100er Schritten definiert.
  • Kategoriefunktionen vom ObjectManager in den CategoryManager verschoben
  • LinkManager für die symbolischen Links
  • Variablenprofile werden über Strings verknüpft und müssen vorher im VariableManager registriert werden.

Wesentliche Änderungen von Version 2.1 nach Version 2.2

  • PHP Engine kann nun partielle Daten (flush) direkt weiterleiten

Wesentliche Änderungen von Version 2.2 nach Version 2.3

  • PHP Engine kann nun mit $_POST und $_FILES umgehen
  • GetFunctionList gibt leserliche Namen für Enumerations zurück

Wesentliche Änderungen von Version 2.3 nach Version 2.4

  • Keine. Das SDK ist vollständig kompatibel zur 2.3

Wesentliche Änderungen von Version 2.4 nach Version 2.5

Die Handling der StatusVariablen wurde umgebaut, so dass es nicht mehr so kompliziert ist. Eine StatusVariable kann jetzt jederzeit über RegisterVariable bzw MaintainVariable erstellt/gelöscht werden. Ein ApplyChanges sollte somit nicht mehr im Code ausgeführt werden, wenn zur Laufzeit Variablen erstellt werden mussten.

Die StatusVariable sind ab der 2.5 lose gekoppelt. Sie werden nur über den ObjectIdent gesucht und dann entsprechend erstellt, modifiziert oder gelöscht.

Best Practice:

  • Statische Variable im Constructor per RegisterVariable konfigurieren
  • Dynamische Variablen im ApplyChanges per MaintainVariable konfigurieren

Anpassungen:

  • RegisterVariable/MaintainVariable war im LoadSettings teilweise notwendig, damit IP-Symcon die Variable zur Laufzeit “wiedererkennt”. Durch die lose Kopplung ist dies jetzt komplett überflüssig und sehr einfach geworden.
  • Die Parameterreihenfolge hat sich bei MaintainVariable geändert
  • Der ActionHandler wird jetzt direkt bei RegisterVariable/MaintainVariable mit übergeben.
  • Beim ActionHandler hat sich der erste Parameter geändert.
  • Die Funktion GeDefaultProfiles wurde entfernt. Bitte direkt die equivalenten Strings eintragen.

Wesentliche Änderungen von Version 2.5 nach Version 2.6

Die jeweiligen Set/Get Methoden zu Konfiguration der anderen Module werden im Zuge der Entwicklung zur 3.0 konsequent auf die neuen generischen IPS_SetProperty/IPS_GetProperty Funktionen umgestellt. Die emulierten Konfigurationsfunktionen werden in einer der 3.x/4.0 Versionen wegfallen.

Wesentliche Änderungen von Version 3.0 nach Version 3.1

  • IP-Symcon kann über SSDP gesucht/gefunden werden. (kann man z.B. mit dem DeviceSpy von Intel testen)
  • TDateTime in allen Kernel Interface zu UnixTime geändert
  • Alle TDateTime Felder in der settings.json zu UnixTime umgewandelt
  • SDK enthält Beispiel-Klasse mit allen IP-Symcon Funktionen für JSON-RPC (Delphi)

Bestandteile des “SDK”

  • Das Demo-Modul mit Quellcode.
  • Ein simpler JSON-RPC Client (Ab SDK für IP-Symcon 3.1)

Hinweise für die Nutzung von SOAP unter Delphi 2007

Diese Hinweise sind für die neue JSON-RPC Schnittstelle nicht relevant!

Das Empfangen von Variants über SOAP ist in Delphi fehlerbehaftet. Wer die Professional Version von Delphi besitzt, kann im “source\win32\soap” Ordner die Quelldateien wie in den QC Reports beschrieben verändern. Damit die Änderungen kompiliert werden, muss der Pfad “source\win32\soap” in den Suchpfad hinzufügt werden. Nach dem Kompilieren sollten in den Dateien (z.B. OPToSOAPDomConv) die blauen Kreise (möglichen Breakpoints) im Editor erscheinen.

Diese Maßnahme wird nur benötigt, wenn der MessageReader verwendet werden soll. Soll nur über die SOAP Schnittstelle auf IP-Symcon zugegriffen werden, sind diese Änderungen nur in den seltensten Fällen notwendig.

Adressen zu den relevanten QC Reports:
QualityCentral: ConvertSoapToVariant does not convert Boolean
QualityCentral: Variant is converted with wrong Decimal Seperator

Die neusten Indy Komponenten gibt es hier: Download
Alternativ kann man diese auch direkt aus dem Indy Project SVN auschecken.

Für das Entwickeln normaler IP-Symcon Module, muss nichts gepatcht werden.

Changelog

2.04
Geänderte Funktionen:

  • IIPSEventMananger.SetEventCyclic
  • IIPSScriptEngine.ExecuteText(Ex) – Zur Zeit noch dummys.

2.10
Geänderte Funktionen:

  • IIPSEventMananger.SetEventScript (Nimmt nun den auszuführenden Text statt der ID des Skriptes)
  • IIPSEventMananger.GetEvent (Index: TriggerVariable -> TriggerVariableID)
  • IIPSModule.GetStatusVariableIDs -> IPS_GetStatusVariableIdents
  • IIPSInstanceManager.GetInstancesByModuleType -> GetInstanceListByModuleType
  • IIPSInstanceManager.GetInstancesByModuleID -> GetInstanceListByModuleID

Neue Funktionen:

  • IIPSInstanceManager.GetInstancesByModuleType
  • IIPSVariableManager.SetVariableCustomProfile
  • IIPSVariableManager.SetVariableCustomAction
  • IIPSVariableManager.CreateVariableProfile
  • IIPSVariableManager.DeleteVariableProfile
  • IIPSVariableManager.SetVariableProfileText
  • IIPSVariableManager.SetVariableProfileValues
  • IIPSVariableManager.SetVariableProfileDigits
  • IIPSVariableManager.SetVariableProfileAssociation
  • IIPSVariableManager.SetVariableProfileAssociations
  • IIPSVariableManager.SetVariableProfileIcon
  • IIPSVariableManager.VariableProfileExists
  • IIPSVariableManager.CheckVariableProfile
  • IIPSVariableManager.GetVariableProfile
  • IIPSVariableManager.GetVariableProfileList
  • IIPSVariableManager.GetVariableProfileListByType
  • IIPSEventManager.GetEventListByType
  • IIPSLinkManager.CreateLink
  • IIPSLinkManager.DeleteLink
  • IIPSLinkManager.SetLinkChildID
  • IIPSLinkManager.LinkExists
  • IIPSLinkManager.CheckLink
  • IIPSLinkManager.GetLink
  • IIPSLinkManager.GetLinkList
  • IIPSLinkManager.IIPSLinkManager.GetLinkList
  • IIPSSOAPServer.RemoveSessionFilter
  • IIPSSOAPServer.GetSessionFilter

Entfernte Funktionen:

  • IIPSObjectManager.HasFlag
  • IIPSObjectManager.SetFlag

2.20

Neue Funktionen:

  • IIPSObjectManager.GetParent

2.30

Keine Änderung der vorhandenen Funktionen

2.40

Keine Änderung der vorhandenen Funktionen

2.50
Geänderte Funktionen:

  • TIPSModuleObject.MaintainVariable (geänderte Parameterreihenfolge!)
  • TIPSModuleObject.RegisterVariable (geänderte Parameterreihenfolge!)

Neue Funktionen:

  • IIPSObjectManager.SetIdent
  • IIPSObjectManager.GetObjectIDByIdent

Entfernte Funktionen:

  • TIPSModuleObject.RegisterActionHandler
  • IIPSModule.StatusVariableExists
  • IIPSModule.GetStatusVariable
  • IIPSModule.GetStatusVariables
  • IIPSModule.GetStatusVariableIdents
  • IIPSModule.SetStatusVariableUseAction
  • IIPSModule.SetStatusVariableID

2.60

Geänderte Funktionen:

  • IIPSScriptEngine.GetFunctionList

Neue Funktionen:

  • IIPSLinkManager.SetLinkTargetID
  • IIPSModule.GetProperty
  • IIPSModule.SetProperty
  • IIPSModule.GetConfiguration
  • IIPSModule.SetConfiguration
  • IIPSModule.GetConfigurationForm
  • IIPSModule.ReceiveData
  • IIPSModule.ForwardData
  • IIPSDataHandler.SendDataToParent
  • IIPSDataHandler.SendDataToChildren
  • IIPSScriptEngine.FunctionExists
  • IIPSScriptEngine.GetFunction
  • IIPSScriptEngine.GetFunctions
  • IIPSSettings.GetSnapshot
  • IIPSSettings.GetSnapshotChanges
  • IIPSSettingsEx.CreateOption
  • IIPSSettingsEx.GetOption
  • IIPSSettingsEx.SetOption
  • TIPSModuleObject.RegisterProperty
  • TIPSModuleObject.RegisterTimer
  • TIPSModuleObject.SetTimerInterval

Entfernte Funktionen:

  • IIPSLinkManager.SetLinkChildID
  • IIPSObjectManager.RegisterObjectEx

Sonstige Änderungen:

  • TimeStamp innerhalb von TIPSMessage ist nun ein Zahl die pro Message inkrementiert wird.
  • MessageIDs wurden geändert; ggf. in der UIPSTypes.pas überprüfen
  • TIPSInstance. ParentID nach ConnectionID umbenannt
  • Alle Profilfunktionen von IIPSVariableManager nach IIPSProfileManager verschoben.
  • Einige Funktionen von IIPSDataHandler nach IIPSDataHandlerEx verschoben (GetInstanceChildrenIDs, HasInstanceChildren, GetInstanceParentIDs, GetInstanceParentID, HasInstanceParent).
  • Aus Performancegründen werden die unnötigen IPS_TIMERMESSAGE Nachrichten nicht mehr verschickt.
  • TIPSLink. LinkChildID nach TargetID umbenannt. LinkChildID bleibt für Rückwärtskompatibilität vorerst erhalten.

2.70

Sonstige Änderungen:

  • Aufrufe zu ConstructorPreProcess/DestructorPostProcess können gelöscht werden
  • TTimerEvent procedure jetzt ohne stdcall; (einfach stdcall; entfernen)
  • SetProperty/GetProperty wird in fast allen Modulen verwendet, wodurch die alten Konfigurationsfunktion über SOAP nicht mehr verfügbar sind (In PHP werden diese emuliert)

3.10

Geänderte Funktionen:

  • IIPSEventManager.GetEvent (TIPSEventDate/TIPSEventTime)

Neue Funktionen:

  • TIPSEventManager.SetEventCyclicDateFrom
  • TIPSEventManager.SetEventCyclicDateTo
  • TIPSEventManager.SetEventCyclicTimeFrom
  • TIPSEventManager.SetEventCyclicTimeTo
  • TIPSScriptManager.GetScriptContent
  • TIPSScriptManager.SetScriptContent
  • TIPSMediaManager.GetMediaContent
  • TIPSMediaManager.SetMediaContent
  • TIPSDebugServer.EnableDebug
  • TIPSDebugServer.DisableDebug
  • TIPSDiscoveryServer.* (neu)

Entfernte Funktionen:

  • TIPSVariableManager.ReadVariableStringEx
  • TIPSVariableManager.WriteVariableStringEx
  • TIPSProfileManager.SetVariableProfileAssociations
  • TIPSEventManager.SetEventCyclicDateBounds
  • TIPSEventManager.SetEventCyclicTimeBounds
  • TIPSFilePool.* (vollständig entfernt)

Sonstige Änderungen:

  • SendData von IIPSDebugServer zu IIPSDebugServerEx verschoben
  • CyclicDateFrom/CyclicDateTo in IPS_GetEvent ist nun ein Array
  • CyclicTimeFrom/CyclicTimeTo in IPS_GetEvent ist nun ein Array

Downloads

Datei Größe Beschreibung
IPS2SDK_2.0.rar 483613 bytes IP-Symcon SDK für Version 2.04
IPS2SDK_2.1.rar 1015605 bytes IP-Symcon SDK für Version 2.10
IPS2SDK_2.2.rar 965552 bytes IP-Symcon SDK für Version 2.20
IPS2SDK_2.3.rar 963618 bytes IP-Symcon SDK für Version 2.30, 2.40
IPS2SDK_2.5.rar 1005186 bytes IP-Symcon SDK für Version 2.50
IPS2SDK_2.6.rar 1355868 bytes IP-Symcon SDK für Version 2.60
IPS2SDK_2.7.rar 1067487 bytes IP-Symcon SDK für Version 2.70, 3.00
IPS2SDK_3.1.rar 548433 bytes IP-Symcon SDK für Version 3.10
CSharpSoapDemo.rar 208315 bytes C# SOAP Demo Applikation (für Version 2.04)
Zum Warenkorb
Haben Sie noch Fragen?