NEWS
Adapter läuft nur wenn manuell gestartet - xmlhttprequest
-
Hallo zusammen,
ich steige gerad in die Adapterentwicklung ein.
Habe jetzt in meiner Test-Umgebung unter Windows was zusammen gebastelt und dort funktioniert es so wie gewollt.Habe diesen Entwicklungsstand jetzt auf meinen produktiven ioBroker (Debian10) kopiert.
Im Log steht, das der Adapter gestartet wurde. der Prozess läuft auch. Aber ich bekomme keine weiteren Einträge im Log und auch die Datenpunkte werden nicht angelegt oder aktualisiert.Wenn ich den Adapter nun über die Shell starte, dann funktioniert der Adapter korrekt, ich sehe dann in der Konsole die Log Einträge und die Datenpunkte werden auch aktualisiert.
Nach dem Kopieren hab ich den Ordner mit
chown -R iobroker:iobroker iobroker.myadapter
die korrekten Besitzer verpasst.
Habe ich noch irgendwas vergessen?
[Edit] im [Post 4]
-
@Vogelbecker hast du Abhängigkeiten, die dir auf deinem Prod System noch fehlen?
Hast du mal ein paar Debug Nachrichten reingepackt, um zu schauen, wo er sich aufhängt?
-
Hi,
danke für deine schnelle Antwort.
Ja mit ein paar Debug Ausgaben bin ich weitergekommen.
Hängt vermutlich mit einer JSON Abfrage per XMLhttprequest zu tun.Steht aber in den Dependencies mit drin.
Aber komisch das es per manuellem Aufruf funktioniert.Für heut ist erstmal Feierabend
-
Moin,
bin jetzt einen Schritt weitergekommen.
Ich verwende xmlhttprequest um Daten aus einem fremden System abholen.
Da die Abfrage einen Augenblick dauert, verwende ich den synchronous Modus.Dafür wird scheinbar ein temporärer Ordner im ioBroker Verzeichis angelegt. Wenn ich den Adapter per Hand ausführe, dann legt er den Ordner an:
.node-xmlhttprequest-sync-13450Unter Windows klappt das. Unter Debian erhalte ich diese Fehlermeldung:
host.iobroker 2020-04-10 21:28:13.532 error Caught by controller[0]: path: '.node-xmlhttprequest-sync-24471' } host.iobroker 2020-04-10 21:28:13.532 error Caught by controller[0]: code: 'EACCES', host.iobroker 2020-04-10 21:28:13.532 error Caught by controller[0]: syscall: 'open', host.iobroker 2020-04-10 21:28:13.532 error Caught by controller[0]: errno: -13, host.iobroker 2020-04-10 21:28:13.532 error Caught by controller[0]: at Timer.processTimers (timers.js:223:10) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at listOnTimeout (timers.js:263:5) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at tryOnTimeout (timers.js:300:5) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at ontimeout (timers.js:436:11) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at Timeout.setInterval [as _onTimeout] (/opt/iobroker/node_modules/iobroker.mygekko/main.js:789:13) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at energycost (/opt/iobroker/node_modules/iobroker.mygekko/main.js:714:21) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at exports.XMLHttpRequest.send (/opt/iobroker/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:477:10) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at Object.writeFileSync (fs.js:1194:35) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: at Object.openSync (fs.js:443:3) host.iobroker 2020-04-10 21:28:13.531 error Caught by controller[0]: { Error: EACCES: permission denied, open '.node-xmlhttprequest-sync-24471'
Habt ihr da eine Idee?
-
@Vogelbecker ich habe das Paket noch nie verwendet. Ich nutze dazu request (mittlerweile deprecated). Es gibt aber auch andere gute Libs die auf jeden Fall funktionieren wie z. B. axios, fetch und einige weitere.
Es scheint als würden die Schreibberechtigungen nicht passen.
Du kannst ja mal eine der anderen ausprobieren, oder hat deine Lib etwa spezielles, was du benötigst?
-
Moin,
danke für die Hilfe.
Hab jetzt auf retus (basiert auf request) umgebaut und schon funktioniert es.Danke für die Hilfe trotzdem