How-To bzw. Unterstützung für erste Schritte bei Modulerstellung gesucht

Moin,

wo finde ich einen Startguide dafür? Mache meine ersten Schritte und falle immer hin. Die Zusammenhänge sind mir teilweise noch nicht klar. Vielleicht kann mich jemand an die Hand nehmen (gern auch per PM)? Am Ende soll es in meinem ersten „Testmodul“ darum gehen, in der Konfig ein Variable und das Webfronts abzufragen. Verändert sich der Wert der Variablen, soll eine Notification im Webfront erscheinen. Alle sicher sehr unspektakulär, aber für den Anfang schon eine Herausforderung. Habe dafür eine eigene Installaton vom IPS gemacht, um ungestört probieren zu können.

form.json

{
  "elements":
  [
	{ "type": "Label", "label": "Variable, welche bei Veränderung eine Meldung im Webfront auslöst" },
	{ "type": "SelectVariable", "name": "sourceid", "caption": "Quellvariable" },
	{ "type": "Label", "label": "ID des Webfronts für Benachrichtigung" },
	{ "type": "SelectInstance", "name": "webfrontid", "caption": "Webfront"}
  ]
}

module.json

{
    "id": "{DE42EA47-3D65-4E44-ABBC-28185A303F10}",
    "name": "Testmodul",
    "type": 3,
    "vendor": "Andreas seine Firma",
    "aliases": 
    [
        "Testmodul"
    ],
    "parentRequirements": [],
    "childRequirements": [],
    "implemented": [],
    "prefix": "TMHA"
}

module.php

<?

// Klassendefinition
class Testmodul extends IPSModule {


    // Der Konstruktor des Moduls
    // Ãœberschreibt den Standard Kontruktor von IPS
    public function __construct($InstanceID) {
        // Diese Zeile nicht löschen
        parent::__construct($InstanceID);

        	$this->RegisterPropertyInteger("sourceid", 0);
		$this->RegisterPropertyInteger("webfrontid", 0);

    }

    // Ãœberschreibt die interne IPS_Create($id) Funktion
    public function Create() {
        // Diese Zeile nicht löschen.
        parent::Create();

		$this->RegisterVariableInteger("Timestamp", "letzte Änderung", "~UnixTimestamp");
		$this->RegisterVariableBoolean("Push", "Meldung versendet", "");


    }

    // Ãœberschreibt die intere IPS_ApplyChanges($id) Funktion
    public function ApplyChanges() {
        // Diese Zeile nicht löschen
        parent::ApplyChanges();

		$source_variable 	= $this->ReadPropertyInteger("sourceid");
		$webfront 		= $this->ReadPropertyInteger("webfrontid");

    }

    /**
    * Die folgenden Funktionen stehen automatisch zur Verfügung, wenn das Modul über die "Module Control" eingefügt wurden.
    * Die Funktionen werden, mit dem selbst eingerichteten Prefix, in PHP und JSON-RPC wiefolgt zur Verfügung gestellt:
    *
    * ABC_MeineErsteEigeneFunktion($id);
    *
    */
    public function MeineErsteEigeneFunktion() {
        // Selbsterstellter Code

		echo "Toll gemacht!";
    }
}

?>

Geht doch schon.

verschiebe die RegisterProperty Aufrufe mit zu dem RegisterVariable Block und der Fehler sollte weg sein. Im Konstruktor passiert nicht so viel.

Zum Lernen bietet sich an, einfach ein paar fertige Module zusammen mit derDokuzu studieren.

Tommi

Perfekt - Fehler weg. Danke. Hatte mir vermutlich ein falsches Beispielmodul für das erste Mal angesehen. Dann kann man also auf den Konstruktor im Modul verzichten.