Moin zusammen,
ich versuche mich aktuell auch einmal an der Modulentwicklung. Ich habe zwar keine große Erfahrung mit PHP – außer durch Symcon-Skripte – aber ich hoffe, dass ich durch „Abschauen“, Google und die Dokumentation trotzdem auf einem ganz guten Weg bin.
Nun habe ich allerdings ein paar Fragen, bei denen ich mir unsicher bin, wie das richtige Vorgehen ist.
Das Modul ist für die UniFi Network API gedacht:
UniFi Network > Settings > Control Plane > Integrations
Für den Zugriff gibt es die IP-Adresse, den API-Key und die Site. Diese habe ich aktuell in der Geräteinstanz hinterlegt, da sie bei jeder Abfrage benötigt werden und jedes Gerät ohnehin seine eigene Abfrage benötigt. Über den Konfigurator kann ich diese auch direkt vorgeben.
Falls sich hier etwas ändert, müsste ich allerdings bei jeder Instanz den Wert einzeln anpassen.
→ Macht es hier also Sinn, eher eine I/O-Instanz anzulegen und diese als Gateway zu nutzen? Ist es möglich, dann nur diese drei Werte abzurufen oder müssen alle API-Abfragen ebenfalls über diese Instanz laufen? Dann müsste ich das Ganze auf einen Datenfluss mit SendDataToChildren usw. umstellen. Wäre das nicht etwas wie „mit Kanonen auf Spatzen schießen“?
Frage zu Darstellungen/Vorlagen:
Aktuell habe ich alle Optionen beim Anlegen der Variable hinterlegt:
$this->MaintainVariable( 'FirmwareUpdate', $this->Translate( 'FirmwareUpdate' ), 0, [ 'PRESENTATION' => VARIABLE_PRESENTATION_VALUE_PRESENTATION, 'ICON'=> 'circle-info', 'OPTIONS'=>'[{"ColorDisplay":1692672,"Value":false,"Caption":"Aktuell","IconValue":"","IconActive":false,"ColorActive":true,"ColorValue":1692672,"Color":-1},{"ColorDisplay":16711680,"Value":true,"Caption":"Update Verfügbar","IconValue":"","IconActive":false,"ColorActive":true,"ColorValue":16711680,"Color":-1}]' ], $vpos++, 1 );
Ist das der richtige Weg? Oder sollte man besser eine Vorlage anlegen und diese dann zuweisen? Leider habe ich bisher kein Beispiel gefunden, wie man eine Vorlage für die Darstellung anlegt.
Und noch eine dritte Frage:
Ich bekomme beim ReloadModule immer folgende Meldung:
12.07.2025, 13:16:11 | PHPLibrary | Parameter endpoint in der Funktion UNIFINT_getApiData hat keinen Datentyp oder einen nicht unterstützten Datentyp. Definieren Sie entweder 'bool', 'int', 'float' oder 'string'
Ich hatte versucht, das mit
public function getApiData( $endpoint = '' ):string {
zu beheben, aber das hat keinen Unterschied gemacht.
Hat vielleicht jemand einen Tipp oder einen Link, wie ich das korrekt umsetze?
Und zu guter Letzt natürlich noch der Link zum Modul:
bgersmann/UnifiNet
Freue mich natürlich auch über generelle Anregungen, wo ich im Code noch etwas verbessern/ändern sollte.
Vielen Dank!