Du willst einen ioBroker-Adapter mit ChatGPT, Claude, Copilot & Co. bauen? Gut — aber halt dich an die Spielregeln. KI-generierter Code ist kein Freifahrtschein, die etablierten Prozesse zu ignorieren.
Prüfen ob bereits ein identischer oder ähnlicher Adapter existiert der die Bedürfnisse erfüllt bzw. um die fehlende funktion erweitert werden kann. Wenn bereits ein Adapter existiert sollte immer zuerst dazu beigetragen werden, sofern möglich. Die zu prüfenden Quellen sind www.github.com, forum.iobroker.net und www.npmjs.com. Außerdem lohnt sich ein Blick in die Adapter requests unter https://github.com/ioBroker/AdapterRequests/issues
NICHT: Code von einem anderen Adapter kopieren und umbauen.
NICHT: Die KI bitten, ein komplettes Adapter-Projekt von Null zu generieren.
STATTDESSEN: Immer den offiziellen Adapter Creator verwenden:
npx @iobroker/create-adapter@latestDer Creator stellt alle nötigen Fragen (Name, Typ, Sprache, Lizenz, Testing) und erzeugt eine korrekte Projektstruktur mit:
- Aktuelle
io-package.jsonmit allen Pflichtfeldern - Funktionierende GitHub Actions für CI/Testing
- Admin-UI (JSONConfig)
- Korrekte
package.json - ESLint-Konfiguration
Warum? Die KI kennt oft veraltete Projektstrukturen. Der Creator liefert immer die aktuelle Version.
KI-Modelle haben häufig veraltetes oder falsches Wissen über ioBroker. Prüfe IMMER:
| Thema | Häufiger KI-Fehler | Richtig |
|---|---|---|
| Admin-UI | Generiert admin/index_m.html (Admin2) |
JSONConfig verwenden (jsonConfig.json5) |
| Rollen | Setzt role: "state" überall |
Korrekte State Roles verwenden |
| Objekte | Erstellt States unter States | device → channel → state Hierarchie einhalten |
| Timer | Verwendet setTimeout/setInterval von Node.js |
adapter.setTimeout/adapter.setInterval verwenden |
| Prozess-Exit | Verwendet process.exit() |
adapter.terminate() verwenden |
| Passwörter | Speichert Passwörter im Klartext | encryptedNative + protectedNative in io-package.json |
| setObject | Überschreibt bestehende Objekte | setObjectNotExists oder extendObject verwenden |
| ack-Flag | Ignoriert ack komplett |
ack=true für finale Werte, ack=false für Kommandos |
| Sprache | Erstellt deutsches README.md / logging | README.md muss in englisch sein, logs müssen englisch sein sofern nicht 1:1 von externer Quelle |
| Objekt-Ids | keine Filterung | Objekt-Ids dürfen keine Sonderzeichen, Spaces etc. enthalten. Optimal sollten diese nur A-Za-z0-9-_ enthalten |
| Objekte | Zischenobjekt fehlen | Es müssen alle Objecte im Baum expizit angelegt werden, also bei a.b.c sowohl a als auch b und c |
| Sprachen | direkte Sprachkodierung in jsonConfig | es sollte die i18n Struktur verwendet werden |
| Testing | kein standard testing | standard Testumgebung (test-and-release.yml workflow verwenden (zusätzliche Tests ind natürlich ok) |
Bevor du deinen Adapter ins Repository einreichst, müssen folgende Punkte erfüllt sein:
- Adapter Creator verwendet (nicht von Hand zusammenkopiert)
- Adapter Checker durchlaufen und alle Fehler behoben: https://www.iobroker.dev/adapter-check
- GitHub-Repo heißt
ioBroker.<adaptername>(großes B) - package.json Name ist lowercase (
iobroker.<adaptername>) - README.md auf Englisch vorhanden mit Beschreibung + Link zur Geräte-/Hersteller-Website
- Lizenz in
io-package.json, README.md UND alsLICENSE-Datei - GitHub Actions für Adapter-Testing eingerichtet (Package + Integration Tests)
- io-package.json:
type,connectionType,dataSource,authorsgesetzt - State Roles korrekt (nicht einfach
"state"überall) - npm veröffentlicht +
iobroker-Organisation als Owner hinzugefügt - Unload räumt ALLE Ressourcen auf (Timer, Connections, Ports)
- Compact Mode getestet (Start → Lauf → Stop → Neustart)
- info.connection State implementiert (wenn externe Verbindung)
- Unbenutzte Verzeichnisse (
www,widgets,docs) entfernt - Port-Attribut heißt
port, IP-Attribut heißtip(nichtbind)
- Logik implementieren: Geräte-Kommunikation, Parsing, Datenverarbeitung
- Tests schreiben: Unit-Tests für deine Adapter-Logik
- README schreiben: Dokumentation formulieren lassen
- Fehler debuggen: Stacktraces und Logs analysieren
- Projektstruktur generieren lassen → Adapter Creator verwenden
io-package.jsongenerieren lassen → Enthält fast immer veraltete/falsche Felder- Blind übernehmen → KI-Code IMMER reviewen und verstehen
- Admin-UI generieren lassen → JSONConfig-Doku lesen und selbst bauen
Wenn du die KI für Adapter-Code nutzt, gib ihr die relevante Doku als Kontext mit:
- Die offizielle Adapter-Referenz
- Die Object-Schema-Doku
- Die State Roles
- Einen gut gepflegten Referenz-Adapter (z.B. ioBroker.denon)
- ioBroker copilot template verwenden (https://github.com/DrozmotiX/ioBroker-Copilot-Instructions)
- Adapter Checker bestanden ✅
- über iobroker.dev → Login → Adapter → Manage → "ADD TO LATEST" Oder
- Fork von ioBroker.repositories
npm run addToLatest -- --name <name> --type <type>- PR erstellen
- Adapter muss bereits im Beta-Repository sein
- Forum-Thread zum Testen erstellen: Forum Tester-Bereich
- User-Feedback sammeln
- Discovery-Funktion implementieren (wenn Gerät automatisch findbar)
- PR für Stable erstellen
- Veraltete Boilerplate: KI kopiert Code-Muster von vor 3+ Jahren. Adapter Creator löst das.
- Fehlende Ressourcen-Bereinigung:
unloadwird vergessen oder unvollständig → bricht Compact Mode. - Falsche Objektstruktur: States unter States verschachtelt statt
device/channel/state. - Generische Rollen: Alles ist
role: "state"→ wird beim Review abgelehnt. - Keine Tests: KI schreibt selten automatisch GitHub Actions ein. Der Creator macht das.
package.jsonvon installiertem Adapter kopiert: EnthältinstalledFromund andere Felder die nicht reingehören.- Scheduling-Bibliotheken für einfache Intervalle: Overkill + alle User pollen gleichzeitig → DoS auf externe APIs.
- Kein
info.connectionState: Admin zeigt dann keinen Verbindungsstatus (grün/gelb/rot).
| Ressource | URL |
|---|---|
| iobroker.dev | https://www.iobroker.dev/ |
| Adapter Creator | npx @iobroker/create-adapter@latest |
| Adapter Checker | https://www.iobroker.dev/adapter-check |
| Repository Requirements | https://github.com/ioBroker/ioBroker.repositories/blob/master/README.md |
| Adapter-Referenz | https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/adapterref.md |
| Object Schema | https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md |
| State Roles | https://github.com/ioBroker/ioBroker/blob/master/doc/STATE_ROLES.md |
| Übersetzer | https://translator.iobroker.in/ |
| Forum (Tester) | https://forum.iobroker.net/category/91/tester |
| YouTube (deutsch) | https://www.youtube.com/watch?v=7N8fsJcAdlE |
TL;DR: npx @iobroker/create-adapter@latest → Code schreiben → Adapter Checker → Fixen → Einreichen. Die KI hilft beim Code, aber die Projektstruktur und Prozesse kommen von den offiziellen Tools.