ConnectParent und ReceiveData - wo ist der Fehler?

Hallo zusammen,

habe mir unter

https://www.symcon.de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-php/module/

angelesen, wie die Modulentwicklung laufen soll. Wenn ich mit einer eigenen Modulinstanz Werte aus einer bestimmten Homematic Instanz (via Homematic Socket) empfangen möchte, muss ich nach meinem Verständnis Folgendes tun:

[ul]
[li]„parentRequirements“: ["{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}"] als Teil der Modulbeschreibung verwenden
[/li][li]In der create() Methode $this->ConnectParent("{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}"); verwenden
[/li][li]In der public function ReceiveData($JSONString) sollen nun Daten vom Homematic Socket empfangen werden.
[/li][/ul]

Die ReceiveData Methode wird aber nie aufgerufen, auch wenn der VariableManager Änderungen von HM Variablen mitloggt.

Wo liegt mein Denkfehler? Ich verwende dafür IPS 4.1 RC2.

Danke und Gruß
micheljarre

Hast du auch die richtigen GU ID in der Module.json eingetragen?
Ansonsten kannst du einfach in meinem HomeMatic extended Modul abschauen.
Michael

Danke für die Antwort. Meine module.json ist:

{
	"id": "{F9284518-7399-46E4-9CE9-019087DBB2BA}",
	"name": "HomematicDeviceProxy",
	"type": 3,
	"vendor": "",
	"aliases": 
	[
		"HomematicDeviceProxy"
	],
	"parentRequirements": ["{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}"],
	"childRequirements": [],
	"implemented": ["{F9284518-7399-46E4-9CE9-019087DBB2BA}"],
	"prefix": "DPR"
}

„id“ ist identisch zu „implemented“ und selbst generiert. Oder habe ich hier etwas falsch verstanden? Im Homematic Extended Modul sind die einzelnen Modul IDs unterschiedlich, die implemented ID aber identisch.

Die implemented ist von IPS fest vergeben und definiert die Schnittstelle zum IO.
Die ist also falsch bei dir.
Und Vorsicht mit dem IO bei Homematic, dein Modul wird bei jedem Event getriggert und kann ganz schnell die PHP-Slots belegen und das System ausbremsen.
Wichtig ist dann mit den Filtern zu arbeiten.
https://www.symcon.de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-php/module/setreceivedatafilter/

Michael

Vielen Dank! Jetzt funktioniert es. Als Filter werde ich dann die HM Adresse definieren, also z.B. JEQ12345:1, da diese ja in der DeviceID einer JSON Message immer drinsteckt.

Wo kann ich das mit der implemented ID nachlesen? Das würde mir weiterhelfen. Mir ist die Bedeutung davon nicht klar.

Danke und Gruß
micheljarre

Die findest du aktuell nur im alten SDK:
SDK (Delphi) — IP-Symcon :: Automatisierungssoftware
Michael

Du kannst dir die IDs über IPS_GetModule ja mal ansehen und für den HomeMatic Socket die jeweiligen Requirements ansehen. Daraus kannst du dann ableiten was die Modul einbinden muss.

paresy

Vielen Dank für die Informationen!

Habt Ihr das irgendwo dokumentiert? Ich suche mir gerade nen Wolf, erahne Informationen aus zig Foren-Beiträgen, so richtig verstanden habe ich es aber nicht.

Der Hinweis auf das DelphiSDK hat mal gar nichts gebracht, mit paresys Hinweis auf IPS_GetModule bin ich etwas weiter, aber auch da muss ich noch mutmaßen.
Hier der Output für das Enocean-Gateway:

Array
(
    [ParentRequirements] => Array
        (
            [0] => {79827379-F36E-4ADA-8A95-5F8D1DC92FA9}
        )

    [ChildRequirements] => Array
        (
            [0] => {DE2DA2C0-7A28-4D23-A9AA-6D1C7609C7EC}
        )

    [Implemented] => Array
        (
            [0] => {018EF6B5-AB94-40C6-AA53-46943E824ACF}
            [1] => {70E3075F-A35D-4DEB-AC20-C929A156FE48}
        )

    [Vendor] => 
    [Aliases] => Array
        (
        )

    [LibraryID] => {0945206A-47AA-4FDD-9093-99051E410E82}
    [ModuleID] => {A52FEFE9-7858-4B8E-A96E-26E15CB944F7}
    [ModuleName] => EnOcean Gateway
    [ModuleType] => 2
)

ich „erahne“ jetzt das ich als parentRequirements in meiner module.json eine der [Implemented]-Einträge des Moduls nutzen muss und als „implemented“ eine der "[ChildRequirements] " einzutragen habe um „nachzuweisen“ das ich diese unterstütze? Und Connectieren muss ich mich per ConnectParent mit der ModuleID oder?
Puh, also einfach ist es nicht… und ankommen tut bei meinem Modul leider auch noch nichts…

nachdem ich jetzt weiss nach was ich suchen muss etc. hab ich die Dokumentation hier gefunden
Datenfluss — IP-Symcon :: Automatisierungssoftware

aber über Lesbarkeit und Nachvollziehbarkeit der Doku muss man sich noch mal gedanken machen… und der Hinweis auf IPS_GetModule sollte ergänzt werden, sonst hat man ja keine Ahnung wo man die GUIDs her nehmen soll

Hab ich notiert - werden wir hinzufügen!

paresy