NEWS
Adapter-Entwicklung
-
Guten Morgen zusammen,
ich bin recht neu was die Adapterentwicklung bzw. ioBroker allgemein angeht. Habe allerdings bereits einige Ideen für Adapter und habe mich auch schon daran versucht. Das Thema nodejs ist ebenfalls Neuland für mich, was die Sache nicht gerade vereinfacht.
Grundsätzlich habe ich das Konzept im Großen und Ganzen verstanden (denke ich ). Auch die Programmierung ist kein Problem. Probleme bereitet mir aktuell eher das Bereitstellen von Änderungen eines Adapters während der Entwicklung dar - insbesondere folgende Punkte:
-
Wenn ich den Modus von daemon auf schedule (in io-package.json - oder umgekehrt) stelle, wird das ohne weiteres nicht übernommen. In der Datei objects.json wird anscheinend auch der Modus zwischengespeichert. Wie kann ich das umgehen, bzw. dafür sorgen, dass Änderungen direkt übernommen werden?
-
Wenn ich Änderungen an den Parametern für die Konfiguration (ebenfalls in io-package.json unterhalb von native) vornehme, werden die Änderungen ebenfalls nicht sichtbar.
-
Allgemeine Änderungen am Code (z.B. in iobroker.adaptername/main.js) werden ebenfalls nicht immer nach dem Neustarten des Adapters bzw. auch nicht nach dem Neustarten von iobroker übernommen.
Ich habe gesehen, dass es einen Parameter noFileCache gibt, allerdings hat das Setzen auf true keine Änderung gebracht.
Gibt es hier allgemein eine Vorgehensweise oder Möglichkeiten das Cachen zu deaktivieren bzw. wenigstens zu bereinigen?
Danke und viele Grüße
Jacek
-
-
Hi jacek,
willkommen in der Entwicklergemeinschaft.
Am besten mach Dir als erstes noch nen Trello-Account und wäre super wenn Du deine Pläne/Ideen im Trello-Board einträgst damit man sieht wer an was arbeitet.
http://forum.iobroker.net/viewtopic.php … lit=trello
Wenn ich den Modus von daemon auf schedule (in io-package.json - oder umgekehrt) stelle, wird das ohne weiteres nicht übernommen. In der Datei objects.json wird anscheinend auch der Modus zwischengespeichert. Wie kann ich das umgehen, bzw. dafür sorgen, dass Änderungen direkt übernommen werden? `
Modus-Wechsel sind nicht so einfach.
Wenn es einmalig während der Entwicklung ist dann ist es am einfachsten Direkt das Objekt zu editieren.
Unter "OBjekte" dazu Expertenmodus einschalten, dann kannst Du alle Objekte einsehen.
Das was Du brauchst ist "system.adapter.<adaptername>.<indstanceid>" Dort dann rechts auf das Bleistift-Symbol und dort ändern. Dann iobroker neu starten, damit sollte das neu eingelesen werden.
Ansonsten ist auch pot. ein manuelles "iobroker upload <adaptername>" auf der Kommandozeile nötig um alles in sync zu bringen.
Wenn DU den Adapter schon Live und an Leute verteilt hast dann kann man einen Moduswechsel machen wie z.B. bei mir im NUT-Adapter https://github.com/Apollon77/ioBroker.n … nut.js#L85 ... aber auch das bracht manchmal nen iobroker neustart um richtig zu klappen.
Wenn ich Änderungen an den Parametern für die Konfiguration (ebenfalls in io-package.json unterhalb von native) vornehme, werden die Änderungen ebenfalls nicht sichtbar. `
Dann fehlt das oben genannte "iobroker upload".Allgemeine Änderungen am Code (z.B. in iobroker.adaptername/main.js) werden ebenfalls nicht immer nach dem Neustarten des Adapters bzw. auch nicht nach dem Neustarten von iobroker übernommen.
Ich habe gesehen, dass es einen Parameter noFileCache gibt, allerdings hat das Setzen auf true keine Änderung gebracht.
Gibt es hier allgemein eine Vorgehensweise oder Möglichkeiten das Cachen zu deaktivieren bzw. wenigstens zu bereinigen? `
Das sollte nicht passieren. Die main.js ist ja der "Code". Da wird nix gecached. Das editierne musst Du in /opt/iobroker/node_modules/iobroker,.<adaptername>/main.js machen!!
Dann eher schauen das das stoppen des Adapters auch wirklich geklappt hat. Also mit "ps" mal in den Prozessen schauen.
Je nachdem was man so macht muss man schauen das es nicht hängenbleibt.
Ansonsten kann ich noch das als Überblick empfehlen: http://forum.iobroker.net/viewtopic.php?f=24&t=6383</adaptername></adaptername></indstanceid></adaptername>
-
Hi jacek,
willkommen in der Entwicklergemeinschaft.
Am besten mach Dir als erstes noch nen Trello-Account und wäre super wenn Du deine Pläne/Ideen im Trello-Board einträgst damit man sieht wer an was arbeitet.
http://forum.iobroker.net/viewtopic.php … lit=trello `
Vielen Dank für die Info.Modus-Wechsel sind nicht so einfach.
Wenn es einmalig während der Entwicklung ist dann ist es am einfachsten Direkt das Objekt zu editieren.
Unter "OBjekte" dazu Expertenmodus einschalten, dann kannst Du alle Objekte einsehen.
Das was Du brauchst ist "system.adapter.<adaptername>.<indstanceid>" Dort dann rechts auf das Bleistift-Symbol und dort ändern. Dann iobroker neu starten, damit sollte das neu eingelesen werden.
Ansonsten ist auch pot. ein manuelles "iobroker upload <adaptername>" auf der Kommandozeile nötig um alles in sync zu bringen.
Wenn DU den Adapter schon Live und an Leute verteilt hast dann kann man einen Moduswechsel machen wie z.B. bei mir im NUT-Adapter https://github.com/Apollon77/ioBroker.n … nut.js#L85 ... aber auch das bracht manchmal nen iobroker neustart um richtig zu klappen.</adaptername></indstanceid></adaptername> `
Das hat mir gefehlt und jetzt klappt es auch. Vielen Dank.Das sollte nicht passieren. Die main.js ist ja der "Code". Da wird nix gecached. Das editierne musst Du in /opt/iobroker/node_modules/iobroker,.<adaptername>/main.js machen!!
Dann eher schauen das das stoppen des Adapters auch wirklich geklappt hat. Also mit "ps" mal in den Prozessen schauen.
Je nachdem was man so macht muss man schauen das es nicht hängenbleibt.</adaptername> `
Evtl. lag es noch am Modus oder daran, dass der Prozess nicht komplett beendet war. Werde das noch genauer testen.Ansonsten kann ich noch das als Überblick empfehlen: http://forum.iobroker.net/viewtopic.php?f=24&t=6383 `
Die Anleitung ist super.Damit komme ich nun sehr gut weiter. Vielen Dank für die Antworten.
Viele Grüße
Jacek