die neue Funktion eigene Module zu erstellen ist ja - wenn ich es richtig verstanden habe - der Hammer!
Deswegen dazu ein paar Fragen bzw. Gedanken:
Bisher habe ich alle Zugangsdaten (z.B. IP, Port, Benutzernamen, Passwort usw.) in einem zentralen Skript mit dem Namen „Konstanten“ gesichert, mit dem Hintergrund das eine Änderung nur an einem Ort durchgeführt werden muss. In jedem Skript das diese Daten benötigte wurde dieses dann per „Include“ eingebunden. Zusätzlich habe ich mir angewöhnt, alles was sinnvoll erscheint in eigene Skripte als Funktionen zu hinterlegen, auch diese Funktionsblöcke (z.B. TV, Sat-Receiver, 1-Wire, IP-Cam, GPS usw.) konnte ich dann per „Include“ dort einbinden wo es sinnvoll erschien, falls Änderungen erforderlich waren, musste auch hier nur an ener Stelle etwas korrigiert bzw. erweitert werden.
Mit dieser neuen Möglichkeit, kann ich dieses wohl gerne aufgeben, die Struktur im IPS wird damit wieder ein Stück übersichtlicher und die Weitergabe sollte damit ja wieder ein ganzes Stück einfacher werden!
Welche Steuerelemente kann ich auf dem Formular nutzen?
Wie definiere ich die Instanz-ID?
Wie muss ich es anstellen, die drei erforderlichen Modul-Dateien (form.json, module.json, module.php) zu Testzwecken zu erstellen?
Ich bin zwar nicht Paresy, klinke mich aber auch mal ein.
Auf eine vollständige Doku / Auflistung würde ich mich auch freuen
Ich könnte nur eine unvollständige Liste liefern von den Elementen welche ich schon verwendet (gefunden) habe.
Hierzu auch einfach mal in den forms-Ordner schauen (/etc/symcon/forms).
Die erzeugt IPS für dich, in den Modul kannst du mit $this->InstanceID darauf zugreifen.
Ich habe mir einfach eine Kopie von Paresys Modul gezogen in mein GIT geworfen (mit neuen GUIDs) und im Module Control eingetragen.
Es sind aber 4 Dateien. Die library.json beschreibt das ‚ganze‘ Modul (aka Library), die anderen drei Dateien in dem Unterordner beschreiben ein ‚Gerät‘ innerhalb der Library.
Sieht bei mir aktuell so aus:
Eine neue tolle Möglichkeit die sich da bietet. Ich werde mich auf jeden Fall mal daran versuchen. Weitere Tipps und Tricks sollten aber hier gerne noch gepostet werden…
Ist ja nicht ‚neu‘. Vorher war es das Delphi-SDK
Leider fehlt aber noch einiges, aber das wird wohl schon noch kommen.
Ich habe jetzt nur ein Problem mit einem alten Modul wo ich nicht möchte dass das Protokoll öffentlich wird. Vorher war es eine Windows-DLL nun ist es Klartext… mal schauen.
Michael
Ich habe leider noch keine Doku für die ganzen Möglichkeiten. Und wie Michael schon sagte, funktionieren zur Zeit nur ein paar Basics. :rolleyes:
Ich bin diese Woche dabei die wichtigen fehlenden Funktionen zu erstellen z.B. PHP-Funktionen, Timer, DataFlow … (Michael hat mir schon eine ganze Liste geschickt was noch fehlt :D)
Und danach würde ich zumindest etwas grundsätzliche Doku erstellen mit den Do’s and Don’t und wie die einzelnen Dateien aufgebaut sind.
Ein paar Basics:
a) Du solltest dir mein Repo mal klonen, ggf umbennen und dann in dein IP-Symcon laden.
b) Dann am besten die LibraryID und ModuleIDs entsprechend verändern, damit du eigene Module mit eigenen IDs hast
c) GUIDs müssen Uppercase sein. https://www.guidgenerator.com/
d) Für die module.json (das „Formfile“) kannst du dir alle unter /etc/symcon/forms abgucken
e) unter /etc/symcon/scripts/__ipsmodule.inc.php findest du die Basisklasse und deren Hilfsfunktionen
f) Wenn du etwas an den json Dateien änderst, musst du IP-Symcon zur Zeit neu starten, damit die Änderungen sichtbar werden
g) Wenn du etwas an den Properties in der module.php änderst, musst du IP-Symcon neu starten oder die Instanz neu erstellen, damit die Änderungen übernommen werden
h) Anderer PHP Code wird direkt ausgeführt und kann während der Laufzeit verändert werden
i) Code im Constructor wird bei jeder Ausführung ausgeführt. Man sollte also nur simple Initialisierung dort hinzufügen. Lieber alles in ApplyChanges hinzufügen oder z.B. Variablen erst wenn sie benötigt werden erstellen.
Ich bin dabei auch jeweils Beispiele in mein Repo zu packen, sodass für viele Gegebenheit ein Beispiel da ist, dass ihr einfach anpassen könnt
ich versuche mich dann nun mal Step-by-Step an die (für mich neue) Funktionalität „heranzutasten“.
Vielen Dank erst einmal für die ersten Tipps und Tricks!
Ich habe mir zunächst einmal ein bei Github einen Account eingerichtet…
Mein erstes Projekt soll die Anbindung des Enigma2-Image-Receivers abbilden
Ich habe die notwendigen Dateien bei Dir „entliehen“ und soweit es derzeit meiner Kenntnis entspricht gekürzt bzw. angepasst
Im IPS habe ich den Link in „Modules“ eingerichtet, er wird als solches akzeptiert, Änderungen werden erkannt
Noch steckt keine echte Funktionalität in dem Modul
Leider erscheint das neue Modul nicht wie bei Deinem Beispiel bei den Instanzen…
Das scheint noch nicht zu funktionieren.
Ist bei mir identisch.
Zusätzlich gibt es noch eine Fehlermeldung wenn man versucht im Objektbaum „Befehle testen“ auszuführen.
Michael
Irgendwie gibt es da keinen ‚richtigen‘ Einstieg.
Am einfachsten ist es sich Paresys Beispiele anzusehen: paresy (paresy) · GitHub
Und vielleicht noch die Klasse IPSModule aus der Datei __ipsmodule.inc.php (zu finden auf dem IPS-Server /etc/symcon/scripts/ ).
Viele der durch dieses ‚Feature‘ neu instandenen PHP-Funktionen findet man auch in der Console. Einfach mal STRG+Leertaste und dann findet man z.B. die Beschreibung zu IPS_SendDataToParent …
@Jungs: Ja… Das fehlt noch… Bin dort noch dran - Hat sich heute doch als schwieriger herausgestellt dieses Feature :rolleyes:
@tommi: Einstieg gibt es noch nicht… Bisher nur in meinem Repo die paar Demos. Im Gegensatz zum alten SDK soll es hier aber demnächst wirkliche Doku geben
Aber fehlt da nicht noch einiges ?
Wie z.B. SelectVariable, SelectScript …Select*
Und dann gibt es doch noch den Formularbereich für die Statuscodes in der Datei.
Letztes geht zwar im Modul noch nicht, aber warum das Feld jetzt erst nicht dokumentieren und es dann später nachholen.
Ist doch nur doppelte Arbeit; könnte man doch gleich ‚richtig‘ machen :rolleyes: