NEWS
Adapter lokal entwickeln und betreiben
-
Hallo zusammen,
ich bin gerade dabei einen bzw. mehrere Adapter zu entwickeln. Dazu habe ich mir ein Template mit dem Generator erstellt.
Dann ein lokales Verzeichnis in meiner iobroker Instanz angelegt "iobroker.adapter-name" und dort alle Template Dateien reinkopiert.
Mit "npm install" in der Kommandozeile in dem Verzeichnis konnte ich auch den Adapter in VS Code entwickeln, debuggen etc.
Es ist mit jetzt schon hin und wieder passiert, leider weiss ich nicht wann genau, dass plötzlich das Verzeichnis des Adapters komplett oder manchmal auch nur größtenteils leer war.
Die Instanz lief noch, konnte aber natürlich nicht mehr neu gestartet werden, da keine Files mehr da waren.
Backup reinkopieren -> npm install und alles ist wieder ok. Nur weiss ich nicht wie lange.
Ich habe jetzt gerade begonnen meine Adapter in Gitlab zu halten. Hoffentlich ist dann diese Verhalten weg.
Ach ja, es passiert unter Windows wie auch unter Linux.
Ich muss jetzt dann den iobroker auch offline betrieben, da ich nicht immer bei allen Installationen Internetanbindung habe.
Daher auch die Frage: Ist es möglich den iobroker, wenn er mal installiert ist, dann auch offline weiter zu betreiben ?
Dazu müsste natürlich das vorher genannte Verhalten abstellbar sein. Auch ein offline Adapterupdate wäre dann wichtig.
Vielen Dank schon mal. -
@Bannsaenger Die einfachste Lösung ist mit
npm link
zu arbeiten. Damit entwickelst du in deinem Verzeichnis und die Dateien sind dann "magisch" auch immer gleich im ioBroker Verzeichnis.Die zweite Variante ist
npm pack
damit machst du ein tgz das du dann mit demiobroker
Kommando installieren kannst.Beides musst du ja nur machen, wenn du etwas an Admin GUI änderst, denn zum debuggen startest du den Adapter einfach mit
-debug
in deinem Verzeichnis und er "hängt" sich selber an den laufenden ioBroker.Die weitaus schönste Variante ist Devcontainer.
Wenn du zu einer oder mehreren Varianten noch mehr Infos brauchst: einfach fragen.
Übrigens: weshalb verwendest du Gitlab und nicht Github?!
-
@UncleSam sagte in Adapter lokal entwickeln und betreiben:
Die einfachste Lösung ist mit npm link zu arbeiten. Damit entwickelst du in deinem Verzeichnis und die Dateien sind dann "magisch" auch immer gleich im ioBroker Verzeichnis.
Frage: Funktioniert das auch über "Rechnergrenzen" hinweg ?
Ich arbeite im Moment sehr altbacken:
- Entwicklung auf meinem Mac (kein iobroker installiert)
- Atom als Editor (Atom.io) mit sftp und GitHub Integration)
- Manuelle Synchronisation per sftp mit dem Adapterverzeichnis
- Manuelles Stage/commit zu GitHub
A.
Nachtrag: DevContainer hab ich versucht - geht auf dem Mac so nicht - ich bekomme es nicht stabil zu laufen. Schon das Einrichten des Containers geht in die Hose.
Nachtrag 2: Ich kenne mich mit Docker und so weiter überhaupt nicht aus. Ich habe versucht den Container nach den vorhandenen Anleitungen anzulegen, stolpere aber schon bei der Einrichtung des Netzwerkes, da die Netzwerknamen in der Form nicht passen. -
@Asgothian sagte in Adapter lokal entwickeln und betreiben:
@UncleSam sagte in Adapter lokal entwickeln und betreiben:
Die einfachste Lösung ist mit npm link zu arbeiten. Damit entwickelst du in deinem Verzeichnis und die Dateien sind dann "magisch" auch immer gleich im ioBroker Verzeichnis.
Frage: Funktioniert das auch über "Rechnergrenzen" hinweg ?
Nein,
npm link
geht nur auf demselben System, man könnte etwas mit mounts machen, aber das ist ein Gebastel.Nachtrag: DevContainer hab ich versucht - geht auf dem Mac so nicht - ich bekomme es nicht stabil zu laufen. Schon das Einrichten des Containers geht in die Hose.
Da wäre interessant zu wissen, was schief geht. Wenn du DevContainer nutzen willst, musst du nur Docker und VS Code installieren. Alles andere sollte dann VS Code machen.
Nachtrag 2: Ich kenne mich mit Docker und so weiter überhaupt nicht aus. Ich habe versucht den Container nach den vorhandenen Anleitungen anzulegen, stolpere aber schon bei der Einrichtung des Netzwerkes, da die Netzwerknamen in der Form nicht passen.
Da hast du wahrscheinlich etwas falsch verstanden. Wenn du ioBroker als Container auf deinem Mac laufen lassen willst, musst du nur den Container starten; mit Netzwerk etc. solltest du gar nichts zu tun haben. Wenn Docker sauber installiert ist, genügt der folgende Befehl um einen leeren ioBroker zu starten, den du mit localhost:8081 erreichen kannst (das sollte man dann aber nicht produktiv so nutzen!):
docker run --name mein-iobroker -p 8081:8081 -it buanet/iobroker
-
@UncleSam sagte in Adapter lokal entwickeln und betreiben:
Da hast du wahrscheinlich etwas falsch verstanden. Wenn du ioBroker als Container auf deinem Mac laufen lassen willst, musst du nur den Container starten; mit Netzwerk etc. solltest du gar nichts zu tun haben. Wenn Docker sauber installiert ist, genügt der folgende Befehl um einen leeren ioBroker zu starten, den du mit localhost:8081 erreichen kannst (das sollte man dann aber nicht produktiv so nutzen!):
docker run --name mein-iobroker -p 8081:8081 -it buanet/iobrokerDas probier ich heute Abend noch einmal. Ich hatte mich entlang der Anleitung des Erstellers dieses Containers versucht durch zu hangeln, der das ganze mit einer Wartungsoberfläche nutzt. Dabei konnte ich aber kein Netzwerk einrichten, da die Oberfläche zwingend ein ethX oder wlanY als Netzwerkname haben will, während ich nur enX bieten kann.
-
@Asgothian sagte in Adapter lokal entwickeln und betreiben:
das ganze mit einer Wartungsoberfläche nutzt
Wenn du die neuste Version von Docker Desktop für Mac hast, ist dort auch das Dashboard dabei. Dort kann man einige Sachen einfacher machen als per Kommandozeile. Aber solch einfache Befehle wie oben kannst du einfach im Terminal eingeben.
-
@UncleSam Vielen Dank für die schnelle Antwort.
Ich werde die Varianten mal probieren. Ggf. komme ich noch mal auf dich zurück.
Das mit Gitlab hatte ich aus einer Anleitung von [Michael Herwig](Link https://herwig.de/anleitungen/entwicklung/gitlab/workflow-vscode-git-gitlab.html).
Dann steige ich mal auf Github um.
Danke. -
@Bannsaenger Der Grund ist, dass ioBroker und alle anderen Adapter bei GitHub sind. Du machst dir nur mehr Arbeit, wenn du auch noch GitLab benutzen willst.
Wenn du übrigens Ideen brauchst zum Entwickeln von Adaptern, dann schau dir mal andere Adapter an. Beispiele:
- https://github.com/iobroker-community-adapters/ (die sind nicht alle in gutem Zustand!)
- https://github.com/AlCalzone/ioBroker.tradfri
- https://github.com/UncleSamSwiss/ioBroker.loxone
... und sonst ist das Forum natürlich immer dein Freund!