NEWS
Eigenen Adapter erstellen
-
@oliverio noch ne Idee fĂŒr mich?
Also das ist jetzt ne grundlegende Funktion fĂŒr meinen gewĂŒnschten Apapter. Er ruft nĂ€mlich ĂŒber Rest Daten ab.
Ich habe es im js Adapter mit gequetscht realisiert.
Möchte auch spÀter anhand der Ergebnisse eine dynamische konfig anbieten.
Aber erst mal wÀre es schön nur Daten zu bekommen.Also grundlegend möchte ich eine REST API Abfragen.
Wenn dazu jemand einen guten Tipp hatâŠ. Immer her damit.abgesehen davon musste ich bei einem webprojekt fetch noch nie extra installieren.
@ben1983 sagte in Eigenen Adapter erstellen:
@oliverio noch ne Idee fĂŒr mich?
Also das ist jetzt ne grundlegende Funktion fĂŒr meinen gewĂŒnschten Apapter. Er ruft nĂ€mlich ĂŒber Rest Daten ab.
Ich habe es im js Adapter mit gequetscht realisiert.
Möchte auch spÀter anhand der Ergebnisse eine dynamische konfig anbieten.
Aber erst mal wÀre es schön nur Daten zu bekommen.Also grundlegend möchte ich eine REST API Abfragen.
Wenn dazu jemand einen guten Tipp hatâŠ. Immer her damit.abgesehen davon musste ich bei einem webprojekt fetch noch nie extra installieren.
ja ich habe noch eine idee fĂŒr dich.
lese bitte immer detailliert die Anleitungen zu den bibliotheken und nicht einfach so machen.
Es gibt verschiedene modularten und nicht alle kann man gleich einbinden.https://www.npmjs.com/package/node-fetch
Abschnitt Loading and configuring the module / Common JS
CommonJS
node-fetch from v3 is an ESM-only module - you are not able to import it with require().Wenn auch etwas nicht funktioniert, erst recht nochmal die Anleitung erneut lesen.
Wir helfen dir hier gerne, wenn du gar nicht mehr weiterkommst.
Aber fĂŒr dich die Anleitungen lesen, das wĂ€re etwas zuviel.Wenn das immer noch nicht funktioniert, dann mach das was ich vorigen Post geschrieben habe.
-
@oliverio ich habe den createadapter auf meinem laufwerk aufgefĂŒhrt und in den iobroker ordner kopiert.
- hatte ich mich nicht getraut in dem node_modules ordner was auszufĂŒhren.
- hatte ich probleme mit npm install als ich es direkt in dem ordner ausgefĂŒhrt hatte. (keine rechte etc.).
Wie macht man es nun richtig? direkt im Node_modules ordner von iobroker den create_adapter ausfĂŒhren?`
Kann ja eigentlich auch nicht sein, denn dann bekomme ich den da ja nie mehr raus (wenn man ihn angeblich nicht kopieren darf), wenn der mal fertig und offiziel werden sollte. Oder?Mein Problem ist allerdings immer noch das fetch nicht geht :-D
-
@ben1983 Nene
Ich habe das FolgendermaĂen- Ordner fĂŒr Entwicklung erstellt
- Den Create Adapter in "Entwicklung" kopiert/gecloned
- In Ordner create-adapter wechseln und create-adapter nach Anleitung ausfĂŒhren.
- Nun sollte in dem Ordner "Entwicklung" ein Ordner vorhanden sein, der den Namen deines Projektes trÀgt, den du wiederum in dem create-adapter Setup vergeben hast
Fertig.
-
@ben1983 Nene
Ich habe das FolgendermaĂen- Ordner fĂŒr Entwicklung erstellt
- Den Create Adapter in "Entwicklung" kopiert/gecloned
- In Ordner create-adapter wechseln und create-adapter nach Anleitung ausfĂŒhren.
- Nun sollte in dem Ordner "Entwicklung" ein Ordner vorhanden sein, der den Namen deines Projektes trÀgt, den du wiederum in dem create-adapter Setup vergeben hast
Fertig.
-
@ben1983 Nene
Ich habe das FolgendermaĂen- Ordner fĂŒr Entwicklung erstellt
- Den Create Adapter in "Entwicklung" kopiert/gecloned
- In Ordner create-adapter wechseln und create-adapter nach Anleitung ausfĂŒhren.
- Nun sollte in dem Ordner "Entwicklung" ein Ordner vorhanden sein, der den Namen deines Projektes trÀgt, den du wiederum in dem create-adapter Setup vergeben hast
Fertig.
-
@deralff ja, aber der ist ja dann nicht im iobroker ordner und da habe ich ihn dann rein kopiert
@ben1983 Das mit dem hin und her ist mir zu aufwĂ€ndig đ ... Und zu fehlerbehaftet (weil ich das ja selber machen muss)
Ich mache das folgendermaĂen.
Ich baue den Adapter mit adapter-create.
Da kann ich dann im dev-server alles testen.Der Adapter landet dann in meinem GitHub.
Und dann installiere ich den ganz normal (per Katze) im ioBroker.Oder verstehe ich die Posts gerade nicht? đ€
-
@deralff Es funktioniert ja auch, dass der Adapter im ioBroker lÀuft.
Nur dieses Drecks fetch geht nicht -
@ben1983 sagte in Eigenen Adapter erstellen:
@oliverio noch ne Idee fĂŒr mich?
Also das ist jetzt ne grundlegende Funktion fĂŒr meinen gewĂŒnschten Apapter. Er ruft nĂ€mlich ĂŒber Rest Daten ab.
Ich habe es im js Adapter mit gequetscht realisiert.
Möchte auch spÀter anhand der Ergebnisse eine dynamische konfig anbieten.
Aber erst mal wÀre es schön nur Daten zu bekommen.Also grundlegend möchte ich eine REST API Abfragen.
Wenn dazu jemand einen guten Tipp hatâŠ. Immer her damit.abgesehen davon musste ich bei einem webprojekt fetch noch nie extra installieren.
ja ich habe noch eine idee fĂŒr dich.
lese bitte immer detailliert die Anleitungen zu den bibliotheken und nicht einfach so machen.
Es gibt verschiedene modularten und nicht alle kann man gleich einbinden.https://www.npmjs.com/package/node-fetch
Abschnitt Loading and configuring the module / Common JS
CommonJS
node-fetch from v3 is an ESM-only module - you are not able to import it with require().Wenn auch etwas nicht funktioniert, erst recht nochmal die Anleitung erneut lesen.
Wir helfen dir hier gerne, wenn du gar nicht mehr weiterkommst.
Aber fĂŒr dich die Anleitungen lesen, das wĂ€re etwas zuviel.Wenn das immer noch nicht funktioniert, dann mach das was ich vorigen Post geschrieben habe.
@oliverio Hi, habe jetzt den V2 installiert:
coder wie Hier:
const fetch = require('node-fetch'); fetch("hier steht in wirklichkeit meine url") .then(function (response) { this.log.info(response); return response.json(); }) .then(function (data) { this.log.info(data); }) .catch(this.log.info("Fehler aufgetreten");bringt leider auch nichts:
host.Server(SmartHome) 2022-01-29 01:10:16.257 error instance system.adapter.gridvis.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at internal/main/run_main_module.js:17:47 host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Function.Module._load (internal/modules/cjs/loader.js:778:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Module.load (internal/modules/cjs/loader.js:937:32) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:1036:27) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at wrapSafe (internal/modules/cjs/loader.js:988:16) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: SyntaxError: missing ) after argument list host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: ^ host.Server(SmartHome) 2022-01-29 01:10:16.254 error Caught by controller[0]: .catch(this.log.info("Fehler aufgetreten"); host.Server(SmartHome) 2022-01-29 01:10:16.253 error Caught by controller[0]: C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis\main.js:90also ich nehme auch gerne request oder sonstiges, wenn das funktioniert, aber habe bis dato nichts zum laufen bekommen.
Aus dem js adapter heraus funktioniert wie gesagt request. -
@oliverio Hi, habe jetzt den V2 installiert:
coder wie Hier:
const fetch = require('node-fetch'); fetch("hier steht in wirklichkeit meine url") .then(function (response) { this.log.info(response); return response.json(); }) .then(function (data) { this.log.info(data); }) .catch(this.log.info("Fehler aufgetreten");bringt leider auch nichts:
host.Server(SmartHome) 2022-01-29 01:10:16.257 error instance system.adapter.gridvis.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at internal/main/run_main_module.js:17:47 host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Function.Module._load (internal/modules/cjs/loader.js:778:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Module.load (internal/modules/cjs/loader.js:937:32) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:1036:27) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at wrapSafe (internal/modules/cjs/loader.js:988:16) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: SyntaxError: missing ) after argument list host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: ^ host.Server(SmartHome) 2022-01-29 01:10:16.254 error Caught by controller[0]: .catch(this.log.info("Fehler aufgetreten"); host.Server(SmartHome) 2022-01-29 01:10:16.253 error Caught by controller[0]: C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis\main.js:90also ich nehme auch gerne request oder sonstiges, wenn das funktioniert, aber habe bis dato nichts zum laufen bekommen.
Aus dem js adapter heraus funktioniert wie gesagt request.@ben1983
da fehlt jedenfalls eine Klammer đhost.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: SyntaxError: missing ) after argument listich verstehe das Problem noch nicht ganz... kann aber auch sein, dass es einfach etwas spĂ€t ist đ
-
@ben1983
da fehlt jedenfalls eine Klammer đhost.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: SyntaxError: missing ) after argument listich verstehe das Problem noch nicht ganz... kann aber auch sein, dass es einfach etwas spĂ€t ist đ
-
@oliverio Hi, habe jetzt den V2 installiert:
coder wie Hier:
const fetch = require('node-fetch'); fetch("hier steht in wirklichkeit meine url") .then(function (response) { this.log.info(response); return response.json(); }) .then(function (data) { this.log.info(data); }) .catch(this.log.info("Fehler aufgetreten");bringt leider auch nichts:
host.Server(SmartHome) 2022-01-29 01:10:16.257 error instance system.adapter.gridvis.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at internal/main/run_main_module.js:17:47 host.Server(SmartHome) 2022-01-29 01:10:16.257 error Caught by controller[0]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Function.Module._load (internal/modules/cjs/loader.js:778:12) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Module.load (internal/modules/cjs/loader.js:937:32) host.Server(SmartHome) 2022-01-29 01:10:16.256 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:1036:27) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: at wrapSafe (internal/modules/cjs/loader.js:988:16) host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: SyntaxError: missing ) after argument list host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: host.Server(SmartHome) 2022-01-29 01:10:16.255 error Caught by controller[0]: ^ host.Server(SmartHome) 2022-01-29 01:10:16.254 error Caught by controller[0]: .catch(this.log.info("Fehler aufgetreten"); host.Server(SmartHome) 2022-01-29 01:10:16.253 error Caught by controller[0]: C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis\main.js:90also ich nehme auch gerne request oder sonstiges, wenn das funktioniert, aber habe bis dato nichts zum laufen bekommen.
Aus dem js adapter heraus funktioniert wie gesagt request.@ben1983 sagte in Eigenen Adapter erstellen:
const fetch = require('node-fetch');
Den Thread habe ich nicht durchgelesen aber kann dir sagen das was ich mit require in den Adapter schreibe, habe ich noch nie mit Hand installieren mĂŒssen. Mein Tipp nochmal, arbeite das Wiki durch.
-
@ben1983 sagte in Eigenen Adapter erstellen:
const fetch = require('node-fetch');
Den Thread habe ich nicht durchgelesen aber kann dir sagen das was ich mit require in den Adapter schreibe, habe ich noch nie mit Hand installieren mĂŒssen. Mein Tipp nochmal, arbeite das Wiki durch.
@wal Habe es ja jetz auch nur gemacht, weil es sonst auch nicht ging.
Beim Wiki komme ich ja nicht weiter.
Stehe vor dem fetch und komme nicht weiter.
Weil eigentlich muss jetzt aufgrund des fetch die konfig seite dynamisch werden
der muss also grundsÀtzlich gehen. -
@wal also entweder stehe ich mega auf dem Schlauch, oder ⊠keine Ahnung.
Das funktioniert einfach nicht.Wie wĂŒrdet ihr denn einen http Anfrage senden?
Ps. Im Adapter arbeitet man mit setinterval, oder geht auch schedule?
Muss der setinterval immer mit clearinterval gelöscht werden, oder passiert das sowieso beim stoppen des Adapters?Warum werden in dem Beispiel werte mit asynch gesetzt und nicht einfach mit setState?
Und wozu dient beim setstate das ack? -
@wal also entweder stehe ich mega auf dem Schlauch, oder ⊠keine Ahnung.
Das funktioniert einfach nicht.Wie wĂŒrdet ihr denn einen http Anfrage senden?
Ps. Im Adapter arbeitet man mit setinterval, oder geht auch schedule?
Muss der setinterval immer mit clearinterval gelöscht werden, oder passiert das sowieso beim stoppen des Adapters?Warum werden in dem Beispiel werte mit asynch gesetzt und nicht einfach mit setState?
Und wozu dient beim setstate das ack?@ben1983 jetzt nochmal fĂŒr mich.
Du hast einen Adapter erstellt, richtig?
Du hast den Test aus der package.json ausgefĂŒhrt, richtig?
Du hast dann den Ordner deines Adapters einfach in den npm_modules Ordner deines ioBrokers kopiert, richtig?Falls das alles zutrifft, dann einfach ein
npm installim node_modules Ordner ausfĂŒhren. -
@wal also entweder stehe ich mega auf dem Schlauch, oder ⊠keine Ahnung.
Das funktioniert einfach nicht.Wie wĂŒrdet ihr denn einen http Anfrage senden?
Ps. Im Adapter arbeitet man mit setinterval, oder geht auch schedule?
Muss der setinterval immer mit clearinterval gelöscht werden, oder passiert das sowieso beim stoppen des Adapters?Warum werden in dem Beispiel werte mit asynch gesetzt und nicht einfach mit setState?
Und wozu dient beim setstate das ack?@ben1983
Ein datenpunkt kann bestÀtigt (ack) oder nicht bestÀtigt sei .
Wenn du bspw manuell etwas in einen datenpunkt (Licht an) etwas eingibst dann ist der meist unbestÀtigt (kann man aber auch ankreuzen wenn man will)
Ein Adapter registriert dann diese StatusĂ€nderung und kann dann die entsprechende Aktion ausfĂŒhren. Dh der Adapter spricht dann mit der eigentlichen Hardware und sagt ihr Licht an.
Wenn die Hardware dann sagt, ok ich mach Licht an, dann schreibt der Adapter den datenpunkt neu, aber diesmal mit dem ack flag=true
Damit ist dieser datenpunkt bestĂ€tigt und erscheint dann fĂŒr kurze Zeit grĂŒn in der Objekt Ansicht. -
@wal also entweder stehe ich mega auf dem Schlauch, oder ⊠keine Ahnung.
Das funktioniert einfach nicht.Wie wĂŒrdet ihr denn einen http Anfrage senden?
Ps. Im Adapter arbeitet man mit setinterval, oder geht auch schedule?
Muss der setinterval immer mit clearinterval gelöscht werden, oder passiert das sowieso beim stoppen des Adapters?Warum werden in dem Beispiel werte mit asynch gesetzt und nicht einfach mit setState?
Und wozu dient beim setstate das ack?@ben1983 ich glaube in diesem Video von Matthias Kleine wird alles sehr gut erklĂ€rt. Also was wohin kopiert werden muss. Und wie man das dann auch installiert. Kannst du ja mal mit einem "leeren Projekt" ausprobieren đ
Erstelle bitte nur nicht den Adapter so, wie in dem Video gezeigt sondern mit dem create-adapter đ
-
@ben1983 jetzt nochmal fĂŒr mich.
Du hast einen Adapter erstellt, richtig?
Du hast den Test aus der package.json ausgefĂŒhrt, richtig?
Du hast dann den Ordner deines Adapters einfach in den npm_modules Ordner deines ioBrokers kopiert, richtig?Falls das alles zutrifft, dann einfach ein
npm installim node_modules Ordner ausfĂŒhren.@deralff sagte in Eigenen Adapter erstellen:
@ben1983 jetzt nochmal fĂŒr mich.
Du hast einen Adapter erstellt, richtig?
Du hast den Test aus der package.json ausgefĂŒhrt, richtig?
Du hast dann den Ordner deines Adapters einfach in den npm_modules Ordner deines ioBrokers kopiert, richtig?Falls das alles zutrifft, dann einfach ein
npm installim node_modules Ordner ausfĂŒhren.einen test?
ich habe den adapter mit dem create adapter erstellt,
node-fetch installiert und den dann in iobroker installiert. (instanz erstellt) -
@deralff sagte in Eigenen Adapter erstellen:
@ben1983 jetzt nochmal fĂŒr mich.
Du hast einen Adapter erstellt, richtig?
Du hast den Test aus der package.json ausgefĂŒhrt, richtig?
Du hast dann den Ordner deines Adapters einfach in den npm_modules Ordner deines ioBrokers kopiert, richtig?Falls das alles zutrifft, dann einfach ein
npm installim node_modules Ordner ausfĂŒhren.einen test?
ich habe den adapter mit dem create adapter erstellt,
node-fetch installiert und den dann in iobroker installiert. (instanz erstellt)