Was können wir verbessern?

Dokumentation

Module

Benötigt: IP-Symcon >= 4.0

Beschreibung

Ein Modul besteht grundlegend aus 2 Dateien. Der module.php und module.json. Optional kann eine Konfigurationsseite (form.json) bereitgestellt werden.

form.json

Weitere Informationen zur Konfigurationsseite können unter Konfigurationsformulare nachgeschlagen werden.

locale.json

Weitere Informationen zur Übersetzung der Konfigurationsseite können unter Lokalisierungen nachgeschlagen werden.

module.json

Diese Datei beinhaltet Rahmeninformation, die unabdingbar sind, damit das Modul identifizierbar ist und korrekt eingebunden werden kann.

Parameter Datentyp Beschreibung
id string Einmalige GUID zur eindeutigen Identifikation. GUID Generator
name string Der Name des Moduls. (A-Z, a-z, 0-9, Leerzeichen, Unterstrich sind erlaubte Zeichen)
type integer Type des Moduls (0: Kern, 1: I/O, 2: Splitter, 3: Gerät, 4: Konfigurator)
vendor string Herstellername und der Name des Menüpunkts unter dem das Gerät in "Instanz hinzufügen" gefunden werden kann. Wenn nichts angegeben wird, wird das Gerät unter "(Sonstige)" eingetragen.
aliases array[string] Zusätzliche Gerätenamen/-varianten
parentRequirements array[string] Datenfluss GUIDs, wodurch kompatible übergeordnete Instanzen ermittelt werden. Die übergeordnete Instanz muss mindestens eine dieser Datenfluss GUIDs als Implemented führen, um kompatibel zu sein
childRequirements array[string] Datenfluss GUIDs, wodurch kompatible untergeordnete Instanzen ermittelt werden. Die untergeordnete Instanz muss mindestens eine dieser Datenfluss GUIDs als Implemented führen, um kompatibel zu sein
implemented array[string] Unterstützte Datafluss GUIDs müssen in den jeweiligen ReceiveData/ForwardData Funktionen korrekt ausgewertet und unterstützt werden, sofern diese hier aufgelistet werden
prefix string Prefix, welcher den Funktionen vorrausgeschrieben wird. Darf nur Zahlen und Uppercase-Buchstaben enthalten.
{
    "id": "{E5AA629B-75BD-45C0-9BCB-845C102B0411}",
    "name": "ModulnameXYZ",
    "type": 3,
    "vendor": "",
    "aliases":
    [
        "Name1UnterstütztesGerät",
        "Name2UnterstütztesGerät"
    ],  
    "parentRequirements": [],
    "childRequirements": [],
    "implemented": [],
    "prefix": "ABC"
}

module.php

Dies ist die eigentliche Klassendatei, welche die Funktionen beinhaltet die hinterher Daten verarbeiten und weiterleiten.

Der Klassenname muss identisch zum "name" Parameter sein, welcher in der module.json definiert wurde. Einziger erlaubter Unterschied sind Leerzeichen. Diese müssen im Klassennamen innerhalb der module.php entfernt werden.

Funktionsnamen dürfen nur aus folgenden Zeichen bestehen: "a..z","A..Z","0..9".

Vorlage minimal

<?
    // Klassendefinition
    class ModulnameXYZ extends IPSModule {
        /**
        * 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() {
            echo $this->InstanceID;
        }
    }
?>

Vorlage klassisch

<?
    // Klassendefinition
    class ModulnameXYZ extends IPSModule {
 
        // Der Konstruktor des Moduls
        // Überschreibt den Standard Kontruktor von IPS
        public function __construct($InstanceID) {
            // Diese Zeile nicht löschen
            parent::__construct($InstanceID);
 
            // Selbsterstellter Code
        }
 
        // Überschreibt die interne IPS_Create($id) Funktion
        public function Create() {
            // Diese Zeile nicht löschen.
            parent::Create();
 
        }
 
        // Überschreibt die intere IPS_ApplyChanges($id) Funktion
        public function ApplyChanges() {
            // Diese Zeile nicht löschen
            parent::ApplyChanges();
        }
 
        /**
        * 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
        }
    }
?>