Schön zu hören… ich fange jetzt gerade erst an 
Allerdings habe ich deinen Fehler bezüglich der übergeordneten Instanzen gefunden.
Du darfst nicht bei childRequirements die GUID von dem Modul angeben, sondern musst die GUID deinen Datentyps eintragen.
Also was der Child bei implemented stehen hat.
Ebenso muss bei parentRequirements des Child die GUID des Datentyps eingetragen werden, welche im Parent (Splitter) bei implemented eingetragen wurde (zusätzlich zu den Datentyps welche der Parent des Splitters nutzt).
{
"id": "{24F1DF95-D340-48DB-B0CC-ABB40B12BCAA}",
"name": "LogamaticGateway",
"type": 2,
"vendor": "Buderus",
"aliases": ["Logamatic Gateway"],
"parentRequirements": ["{79827379-F36E-4ADA-8A95-5F8D1DC92FA9}"],
"childRequirements": ["{FDAAB689-6162-47D3-A05D-F342430AF8C2}"],
"implemented": ["{018EF6B5-AB94-40C6-AA53-46943E824ACF}","{0D923A14-D3B4-4F44-A4AB-D2B534693C35}"],
"prefix": "Gateway"
}
{
"id": "{9888202F-A490-4785-BDA7-DBB817B163B2}",
"name": "Logamatic4311",
"type": 3,
"vendor": "Buderus",
"aliases": ["Logamatic 4311"],
"parentRequirements": ["{0D923A14-D3B4-4F44-A4AB-D2B534693C35}"],
"childRequirements": [],
"implemented": ["{FDAAB689-6162-47D3-A05D-F342430AF8C2}"],
"prefix": "Logamatic"
}
Ohne jetzt die physikalischen Eigenschaften zu kennen… rein vom Protokoll bestimmt.
Nur wie viel ‚Last‘ erzeugt das Protokoll nachher ? Wie viele und wie häufig werden Daten übertragen.
Dies ist auch ein Punkt welchen ich bisher kritisch betrachte, Erfahrungswerte fehlen da einfach noch …
Aktuell wird ja jedesmal wenn du Daten über einen IO empfängst, ein PHP-Thread erzeugt, deine Modul-Datei geladen, daraus eine neue Klasse erzeugt und dann erst kommen die Daten an die Receive-Funktion.
Dies ist doch ‚relativ‘ viel Overhead.
Also einen eBus-Koverter werde ich z.B. nicht in PHP umsetzen.
Nur das nachgelagerte Auserten der Nutzdaten irgendwann.
Aber auf keinen Fall das direkte lesen und senden auf den Bus. Dazu ist mir das Timing mit den Sync einfach zu zeitkritisch.
Michael