ioBroker Adapter-Entwicklung von A-Z
Vor einigen Jahren habe ich ja schon einmal gezeigt, wie man eigene Adapter für ioBroker entwickelt. Leider ist das Video schon etwas in die Jahre gekommen und es gibt mittlerweile viel bessere Werkzeuge und Helfer auf dem Weg zum eigenen Adapter. Daher gibt es hier ein möglichst ausführliches Update-Video für den gesamten Prozess. Teil 2 ist glücklicherweise noch relativ aktuell und der Prozess funktioniert weiterhin genau so.
Was wird benötigt?
- Ein Debian-System ohne(!) laufenden ioBroker Installation
- Visual Studio Code (VSCode)
- Etwas Vorwissen bei der Arbeit mit Linux (ssh, key authentication, …), nodeJS / npm usw.
Video
Entwicklungs-Client vorbereiten
Ich entwickle mittlerweile auf einem MacBook Pro 2023 mit M2 Pro Prozessor und nutze VSCode mit einigen Plugins.
ssh-keygen -t ed25519 -C "MacBook Pro 2023"
ssh-add -K ~/.ssh/id_ed25519
vi ~/.ssh/config
Die Config hat folgenden Inhalt:
Host *
ForwardAgent yes
Der Public-Key muss dann auf GitHub (Account Settings) hinterlegt werden. Und in der Datei ~/.ssh/authorized_keys
auf dem Entwicklungs-Server, um nicht jedes Mal das Passwort einzugeben zu müssen / sich per Key zu authentifizieren. Bitte in das Thema einlesen. Jedenfalls solltest Du danach mit deinem GitHub-Benutzernamen begrüßt werden:
ssh -T git@github.com
Hi klein0r! You've successfully authenticated, but GitHub does not provide shell access.
Dann ist alles richtig.
Entwicklungs-Server vorbereiten
Ich verwende ein Debian-System (VM oder LXC-Container unter Proxmox oder auch unter Virtual Box), auf welchem alle Module entwickelt werden. Um einzelne Adapter in einer eigenen Instanz zu starten, wird der dev-server verwendet. Alles wird im folgenden Abschnitt nach und nach installiert.
sudo apt install -y gcc g++ make git vim
git config --global user.name "Dein Name"
git config --global user.email "DeineE-Mail@domain.com"
mkdir .ssh
chmod 0700 .ssh
vi ~/.ssh/authorized_key
Dann noch alles rund um npm vorbereiten. Ich arbeite hier als normaler nutze (nie als root
) und muss deswegen das Ziel für globale npm-Pakete umbiegen. Im Zweifel bitte in die offizielle npm Dokumentation schauen.
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
vi ~/.profile
In die Datei kommt ganz ans Ende export PATH=~/.npm-global/bin:$PATH
.
source ~/.profile
npm install --global @iobroker/dev-server
Neuen Adapter erstellen
Um auf dem Entwicklungs-Server ein neues Modul zu erstellen, kannst Du den Adapter-Creator verwenden:
npx @iobroker/create-adapter