NEWS
Problem bei Entwicklung
-
Ich bin gerade dabei, einen Adapter zu entwickeln.
Als Hilfe dazu habe ich zum einen das Video unter https://www.youtube.com/watch?v=fUMtyYOtRcQ sowie die Dokumentation des ioBroker-Templates https://github.com/ioBroker/ioBroker.template genutzt.
Damit habe ich es zumindest geschafft, dass ich das Template dann in ioBroker starten konnte.
Momentan habe ich allerdings noch zwei große Hürden, über die ich noch nicht hinweg komme:
1. Ich will ebenfalls einen Adapter bauen, der mit Schedule läuft. Die notwendigen Anpassungen werden im Video ja schön beschrieben. Man muss in der Datei io-package.json den Parameter mode ändern und den Parameter schedule passend einfügen.
Bei mir schaut das so aus````
"platform": "Javascript/Node.js",
"mode": "schedule",
"schedule": "*/5 * * * *",Trotzdem ist mein Adapter der Meinung, dass es durchgehend laufen muss. In den Instanzen habe ich keine Möglichkeit einen Schedule zu ändern und auch das Log-File sagt, dass der Adapter durchläuft. Was mache ich hier falsch? 2\. Ich habe auch versucht, die Parametrieroberfläche in der Datei ****admin/index_m.html**** an meine Daten anzupassen. Aber ich sehe weiterhin die alte Oberfläche. Was muss ich machen, damit ich endlich die neue Oberfläche sehen und testen kann?
-
zu 2.
iobroker upload DEINADAPTER
-
Der Adapter Upload sollte beide Probleme beheben.
Im Zweifelsfall noch den Browser cache leeren.
-
Und im Notfall iobroker restarten.
Bei solchen Änderungen musst du auch existierende Instanzen löschen! Der typ kann nur über Umwege geändert werden.
-
Danke erst einmal für die Antworten.
Jetzt wollte ich frohen Mutes noch einmal von vorne starten und falle noch einen Schritt früher auf die Nase.
Nach dem Klonen des ioBroker.templates scheitert der "npm install"
npm install npm ERR! path /opt/iobroker/node_modules/iobroker.myadapter npm ERR! code EISGIT npm ERR! git /opt/iobroker/node_modules/iobroker.myadapter: Appears to be a git repo or submodule. npm ERR! git /opt/iobroker/node_modules/iobroker.myadapter npm ERR! git Refusing to remove it. Update manually, npm ERR! git or move it out of the way first. npm ERR! A complete log of this run can be found in: npm ERR! /home/pi/.npm/_logs/debug.log
Gestern hatte dies noch problemlos geklappt
Was will mir diese Fehlermeldung sagen?
Was mache ich falsch?
Nachtrag: Dieses Problem ist gelöst. Ich hatte den "npm install" im falschen Verzeichnis gestartet. Korrekt ist das Unterverzeichnis iobroker.adaptername
-
Mittlerweile habe ich den Adapter bereits am Laufen.
Der Adapter funktioniert mit Schedule und soll zyklisch Daten lesen.
Allerdings funktioniert er nur im debug-Modus mit manuellem Start (wie in viewtopic.php?f=24&t=4577 beschrieben).
Er läuft (allerdings ohne Schedule) einmal durch, liest die Daten und beendet sich nach getaner Arbeit. Im Logfile sehe ich auch alle Ausgaben des Adapters.
Starte ich ihn jedoch über die ioBroker-Konsole (Instanzen), so habe ich folgendes Verhalten:
Zunächst scheint alles ordnungsgemäß zu laufen: Die Meldungen des host.iobroker sagen, dass der Adapter eine Schedule erhalten hat. Ausgabe des Adapters gibt's zu diesem Zeitpunkt noch keine.
Sobald dann die Triggerzeit gemäß Schedule erreicht ist, startet der Adapter selbst (Meldung des host.iobroker) und wird kurz danach mit der Fehlermeldung````
code 7 (Adapter already running)Vom Adapter selbst sehe ich überhaupt keine Ausgaben. Was mache ich falsch? Muss ich noch ein Startereignis abfangen und den Adapter dann stoppen? In vergleichbaren Adaptern (z.B. DWD-Adapter) habe ich nichts gefunden.
-
Wie beendest Du den Adapter denn wenn er fertig ist? prcoess.exit()? adapter.stop()?
-
Wie beendest Du den Adapter denn wenn er fertig ist? `
Ich nutze den adapter.stop() am Ende von adapter.on("ready").Ein Versuch, den prcoess.exit() zu nutzen brachte keine Änderung.
Meines Erachtens auch verständlich, da er ja bereits beim (ersten) Aufruf zu scheitern scheint und gar nicht nicht bis hier durchkommt.
Die Objekte, die ebenfalls in adapter.on("ready") angelegt werden sollten, werden auch nicht generiert. Der Aufruf scheint also bereits vor diesem Punkt zu scheitern.
-
Naja, dann schau ob noch ein Prozess davon läuft. Das bedeutet Error 7 an sich