Flache learning Curve

Hallo zusammen,
ich versuche seit zwei Tagen ein einfaches Test-Modul aufzusetzen, stoße aber immer wieder auf das Problem, dass das Modul nicht in der Instanzliste von IP-Symcon erscheint, bzw. sich nicht aktivieren lässt. Vielleicht erkennt jemand sofort, woran es hakt – ich bin für jeden Hinweis dankbar!

Hier die Dateistruktur meines Moduls:

/var/lib/symcon/modules/Test/
├── library.json
└── Test/
    ├── module.json
    └── module.php

library.json

{
    "id": "{A7D3708D-955E-ABCF-DF4A-0B9B90FE3C74}",
    "author": "Michael F.",
    "name": "Test",
    "url": "https://www.symcon.de",
    "compatibility": {
        "version": "4.2",
        "date": 1491343200
    },
    "version": "1.0",
    "build": 0,
    "date": 0
}

module.json

{
    "id": "{442F2F21-2119-1664-8EF0-E11078F30946}",
    "name": "Test",
    "type": 3,
    "vendor": "",
    "aliases": [
        "Name1UnterstütztesGerät",
        "Name2UnterstütztesGerät"
    ],
    "url": "https://www.symcon.de",
    "parentRequirements": [],
    "childRequirements": [],
    "implemented": [],
    "prefix": "ABC"
}

module.php

<?php

declare(strict_types=1);

class Test extends IPSModule
{
    public function Create()
    {
        parent::Create();
    }

    public function ApplyChanges()
    {
        parent::ApplyChanges();
    }
}

Ich habe mir auch das offizielle YouTube-Video von Symcon zur Modulentwicklung angesehen. Dort beginnt die module.php interessanterweise mit <? – das ist mir auch in alten Dokumentationen (z. B. von 2019) aufgefallen.
In der aktuellen Doku fehlt das. Ist doch aber eine php Datei, sollte doch da sein, oder?

Vielleicht übersehe ich etwas Grundsätzliches? Ich dachte, ich hätte alle Dateien korrekt aufgebaut – bin gespannt auf euer Feedback!

Das sieht soweit gut aus. Symcon hast du neu gestartet? Wenn ja, hast du mal im Logfile geschaut, ob du dort irgendwelche Fehlermeldungen siehst? Diese werden nämlich immer dort direkt ausgegeben.

paresy

Ja, reboot habe ich gemacht.

Lofile sieht eigentlich auch ganz proper aus:

michael@pi:/var/log/symcon $ grep "Test" /var/log/symcon/logfile.log
17.06.2025 16:48:57 | 00000 | MESSAGE | ModuleLoader         | Lade Test Bibliothek...
17.06.2025 16:48:57 | 00000 | MESSAGE | ModuleLoader         | # Test geladen


Das (!) ist sicher weil lokal und kein git, oder?

Kannst du das <? für mich noch aufklären.
Im Moment probiere ich immer beides.

Die Rechte habe ich so gesetzt, dass sie zu den anderen Modulen passen.
root root und das oberste Directory 777.

Anfangs dachte ich noch, es könnte am Zeichensatz liegen, da ich zuerst das auf Windows geschrieben habe und dann per Filezilla rübershob.

Jetzt ist es aber rein copy und paste in den vi.

Ich hab echt keine Idee mehr.
Ist ja jetzt eigentlich kein Rocket Science … peinlich.

… ok, wirklich peinlich.

Ich habe bei der Instanzerstellung nach dem Modul nicht nach dem Gerät gesucht.

Mit den Beispiele geht es also, dann muss ich nochmal checken, warum meine nicht gingen. Vielleicht dann doch das Zeichensatz Thema.

Falls du es rausfindest, sag gerne Bescheid.

Er hätte es eigentlich über die Aliase finden sollen. Übrigens ist es egal ob du <? oder <?php verwendest. Zumindest noch erlaubt PHP auch die Short-Tags.

paresy

Das ist wohl klar, im Beispiel stehts aber gar nicht.

und das war 2019 noch anders :wink:

Kennst du den Module Generator? Der erzeugt dir die gesamte Struktur und Dateien für dein Modul - besonders praktisch, wenn es auch IO’/Spitter hat und du dich mit dem Datenfluss beschäftigen musst. Damit erspart man sich ne Menge Fehler am Anfang:

3 „Gefällt mir“

Ne kannte ich nicht, danke.