Hallo Zusammen,
ich bin jetzt kein professioneller PHP Programmierer, habe es aber bisher immer hinbekommen, mit PHP Dokus im Internet fremde Programme nachzuvollziehen und dadurch Ideen und Lösungen für eigene Problemstellungen zu finden.
Leider stoße ich bei dem Thema Symcon Modulentwicklung hier sehr schnell an Grenzen, weil ich in der Dokumentation gerade zum Thema Datenfluss meine Fragen und Unklarheiten nicht beantwortet finde.
Wenn ich mir den Code von manchen PHP Modulen anschaue, frage ich mich oft, wie die Autoren auf diese Lösung gekommen sind. Wenn ich das Programm dann näher analysiere, komme ich immer zu dem Schluss, dass es eine geheime Dokumentation geben muss, die mir vorenthalten wird oder die ich einfach nicht finde.
Ein konkretes Beispiel. Ich habe ein ModBus Gerät, für dessen Anbindung ich ein Modul schreiben möchte.
Unter https://github.com/symcon/SymconBC/tree/master/EM24-DIN habe ich auch eine passende Vorlage gefunden, auf die ich aufbauen würde.
Mein erstes Problem stellt sich aber schon in der module.json
"parentRequirements": ["{E310B701-4AE7-458E-B618-EC13A1A6F6A8}"],
"childRequirements": [],
"implemented": ["{77B31ABB-18FA-4B91-BB63-E5B2AB5588F4}"],
Wie kann ich konkret diese beiden GUIDs ermitteln oder wo finde ich die Information für was sie stehen?
Ich brauche für das Auslesen von Modbus eine Modbus Gateway, welches in meinem Fall (Modbus TCP) mit einem Client Socket verbunden ist.
Mit IPS_GetInstance(ID ModBus Gateway) bekomme ich [ModuleID] => {A5F663AB-C400-4FE5-B207-4D67CC030564}
Die Zeile in der Create Section der module.php leuchtet mir dadurch ein.
$this->ConnectParent("{A5F663AB-C400-4FE5-B207-4D67CC030564}");
In der Funktion RequestRead() finde ich eine weitere Codezeile, wo ich keine Dokumentation finde:
$Volt = $this->SendDataToParent(json_encode(Array("DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", "Function" => 3, "Address" => $Address , "Quantity" => 2, "Data" => "")));
Im Speziellen geht es mir hier um das JSON Datenobjekt.
„DataID“ => „{E310B701-4AE7-458E-B618-EC13A1A6F6A8}“
„Function“ => 3
„Address“ => $Address
„Quantity“ => 2
„Data“ => „“
Natürlich sehe ich aus dem Codezusammenhang, dass hier die ModBus Parameter an diese ominöse GUID {E310B701-4AE7-458E-B618-EC13A1A6F6A8} übergeben werden, wo sie dann beim ModBus Gateway landen.
aber wo kann ich konkret nachlesen oder mit welchen IPS Befehlen ermitteln, um welche Parameter es sich handelt?
Wie kann ich z.B. auch ermitteln, welches JSON Datenobjekt ich bei einem ModBus Schreibvorgang (Single Coil, Register, …) an den Parent übermittelt werden muss?
Kann mir jemand bei den rot markierten Fragen weiterhelfen und mir zeigen wo ich diese Informationen finden kann?
Wenn jemand dieses geheime Modulentwickler Handbuch hat, würde ich mich um eine Kopie sehr freuen.