Dokumentation für PHP-Modulentwicklung

Erster Draft ist online: SDK (PHP) — IP-Symcon :: Automatisierungssoftware

paresy

Erste Lesung :slight_smile:
Sicherlich fehlt sicher noch einiges.

Meiner Meinung nach das wichtigste:
Grundsätzlich fehlt eine ‚Erklärung‘ wie IPS diese Module nutzt.
So was wie in der Art: Sobald IPS eine Funktion aus einem PHP-Modul ausführen muss, wird ein PHP-Objekt aus der Klasse erzeugt (__construct wird aufgerufen) dann wird der die entsprechende Modul-Funktion ausgeführt… etc…
Oder einfach als Ablaufdiagramm :slight_smile:

Es sollte dabei auch bewußt darauf hingewiesen werden, dass für die Module die gleichen Einschränkungen wie bei den PHP-Skripten gelten. (Laufzeit, etc…)
Und das wenn IPS eine ‚Funktion‘ von einem Modul ausführt, das erstellte Objekt im Anschluß (wie ein Skript) wieder zerstört wird. Es also keine Daten/Objekte dauerhaft halten kann.

Michael

Ich habe mal alle „Kleinigkeiten“, die du aufgelistet hast, abgearbeitet und noch einiges mehr an der Konsistenz und den Formulierungen verändert. Die großen Sachen verdienen nach dem Datenfluss Kapitel auch noch ein eigenes Thema :slight_smile:

paresy

Wohl war :slight_smile:
Wäre vielleicht auch eine Überlegung wert, die Funktionen in weitere Kapitel aufzuteilen.
Zum Beispiel: Funktionen für Statusvariablen, für Eigenschaften, etc…
Michael

So nun nochmal richtig per Browser nachgesehen… schaut gut aus :smiley:

Auch wenn es nur eine Kleinigkeit ist.
Bei ForwardData fehlt ein ‚von‘ zwischen ‚somit‘ und ‚der‘.

…sie muss somit der Basisklasse überschrieben…

Michael

Moin!
Es sind ein paar Informationen hinzugekommen.
Anbei findet ihr die entsprechenden Dokumentationsseiten, sofern noch nicht bekannt.
Vorallem die Seite zum Datenfluss dürfte die Kommunikations-Struktur sicherlich gut erklären.

Grüße
Pio

Sicherlich schon mal sehr gut :slight_smile:
Hatte es auch schon ein paar Tage vorher mal durch Zufall entdeckt.
Was auf jeden Fall noch fehlt, ist eine Auflistung der ganzen GUIDs für den Datenaustausch… aber mal abwarten.

Zwischenzeitlich bitte noch mal unter:
Konfigurationsformulare — IP-Symcon :: Automatisierungssoftware

SelectObject mit aufnehmen, dass fehlt noch immer.

Michael

Schein als sei auf der Seite:

IPS_CreateVariableProfile — IP-Symcon :: Automatisierungssoftware

ein Fehler.

Einerseits steht dort der Befehl gebe true/false zurück, anderseits steht aber auch da er gebe die id zurück.

Hier bist du aber völlig falsch :smiley:
Hier geht es um die Dokumentation für das SDK der PHP-Module.

Du hast aber recht, die zweite Beschreibung ist komplett falsch.
Solche Fehler kannst du jederzeit über ‚Feedback senden‘ (oben recht auf jeder Doku-Seite vorhanden) melden.

Michael

Jau auch hier sei nochmal gesagt.
Nutzt die „Feedback senden“ Funktion auf den jeweiligen Seiten.
Beschreibt die Problematik und wenn Möglich geht eine Lösungsidee.

Die Feedbacks landen dann auch bei mir und speziell bei der Doku ist das sehr hilfreich!
Ich arbeite die dann nach und nach ab.

Grüße
Pio

MaintainVariable

Funktions-Signatur und Beispiel falsch.

Type is nicht vom Typ String, sondern Integer.

MaintainVariable ist Funktion von IPSModule. Aufruf daher:

$this->MaintainVariable(…)

Wollte es per Feedback schicken, es gab jedoch immer einen Fehler beim senden.

Momentan steht außer dem github Beispiel nicht welche „Repositories“ unterstützt werden.
Ich habe mal ausprobiert einen Pfad auf dem Symcon Server anzugeben, was nicht funktioniert hat.
Ist das überhaupt möglich?

Nein. Nur Git Repositories werden unterstützt. Andernfalls musst du die Dateien manuell in den „modules“ Ordner kopieren.

paresy

Danke! Logisch…das erleichtert die Modulentwicklung etwas :slight_smile:

Nutz die Kombination von BitBucket (private) und GitHub öffentlich, dann kannst du die Entwicklung gut managen. Beispiel auch zum Windowstool findest du im Beitrag von Chris.

ich nutze github. Bin grade aber an meinem ersten Modul, probiere also sehr viel aus und will mit die ganzen pushes ersparen

In der Kombination ist das einfach mit BitBucket machbar, pushen ja, aber du nutz dann auch die „normalen“ IPS Modulupdatemöglichkeiten.

Ich würde direkt am System die Module ändern/bearbeiten und nur pushen, wenn ihr wirklich etwas fertig habt :slight_smile:

paresy

Das Problem bei erstellen/bearbeiten eines Moduls direkt in IPS ist > IPS :smiley: :stuck_out_tongue:

Wenn man direkt im System etwas am Modul ändert, dann muss man erst diese Änderungen dann pushen, dann die Änderungen im System von IPS Rückgängig machen und dann das Update einspielen. Sonst kommt ein „Fehler“ in IPS.

Deshalb erstelle ich erst ein Modul, pushe es mehrmals mit kleinen Änderungen und erst gegen Ende bei den „Details“ ändere ich diese im System direkt und wenn ich die Lösung habe, dann pushen, Rückgängig machen im System und updaten.

So wie es ist bin ich relativ zufrieden. Ich würde mir nur wünschen, dass man im IPS beim Modul-Update einfach sagen kann „überschreibe meine Änderungen“
…würde viel hin und her ersparen oder dass man hin und wieder ein Modul löschen und neu erstellen muss…

Grüße,
Chris

Deine Aussage stimmt so nicht. Du kannst jederzeit eine aktuelle Version testen, indem du IP-Symcon neu startest.

Das musst du insbesondere tun, wenn

a) Du eine Funktion hinzufügst
b) Du Parameter einer Funktion veränderst
c) Du etwas an der module.json änderst

Du musst nicht neu starten, wenn

a) Du Quellcode innerhalb einer Funktion änderst (Was meistens der Fall ist…)

paresy