Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Eigenen Adapter erstellen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Eigenen Adapter erstellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 @Ben1983 last edited by

      @ben1983 Nach äbderungen an admin Dingen ioder io-package immer "iob upload adaptername" machen

      1 Reply Last reply Reply Quote 0
      • Ben1983
        Ben1983 last edited by

        @apollon77 ???

        1 Reply Last reply Reply Quote 0
        • Ben1983
          Ben1983 @Issi last edited by

          @issi in der io-package.json
          die liegt im hauptverzeichnis

          Issi 1 Reply Last reply Reply Quote 0
          • Ben1983
            Ben1983 @Issi last edited by Ben1983

            @issi kann auch kein request auf eine url machen.
            mit dem js adapter funktioniert das.
            hier bekomme ich diese meldung im log

            gridvis_adapter.0
            2022-01-28 17:24:26.318	error	request is not defined
            
            gridvis_adapter.0
            2022-01-28 17:24:26.318	error	ReferenceError: request is not defined at GridvisAdapter.onReady (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js:89:3)
            
            gridvis_adapter.0
            2022-01-28 17:24:26.316	error	unhandled promise rejection: request is not defined
            
            gridvis_adapter.0
            2022-01-28 17:24:26.315	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
            
            1 Reply Last reply Reply Quote 0
            • Issi
              Issi Developer @Ben1983 last edited by

              @ben1983
              das Meinte der @apollon77

              004094b3-1c6a-495c-8846-08661f9e64dd-CleanShot 28-01-2022 at 17.28.57.png
              73336d74-13f6-441e-9a9a-157913984328-CleanShot 28-01-2022 at 17.29.26.png

              und zu der Fehlermeldung das sagt doch schon alles

              request is not defined

              im js adapter sind schon viele Sachen vorgeladen in deinem eigenen Adapter musst du das alles selbst machen

              Ben1983 1 Reply Last reply Reply Quote 0
              • Ben1983
                Ben1983 @Issi last edited by

                @issi was ist hier falsch?

                		let url = 'http://localhost:8080/rest/1/projects/EnergieMonitoring/onlinevalues/.json?value=27;PowerActive;SUM13';
                		this.log.info("Test: " + url); 
                
                const fetch = require('node-fetch');
                
                	  fetch(url)
                    .then(function (response) {
                      return response.json();
                    })
                    .then(function (data) {
                      this.log.info("test");
                    });
                

                Antwort von ioBroker:

                
                gridvis_adapter.0
                2022-01-28 17:50:24.168	error	Exception-Code: MODULE_NOT_FOUND: Cannot find module 'node-fetch' Require stack: - C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js
                
                gridvis_adapter.0
                2022-01-28 17:50:24.167	error	Error: Cannot find module 'node-fetch' Require stack: - C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15) at Function.Module._load (internal/modules/cjs/loader.js:745:27) at Module.require (internal/modules/cjs/loader.js:961:19) at require (internal/modules/cjs/helpers.js:92:18) at GridvisAdapter.onReady (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js:90:15)
                
                gridvis_adapter.0
                2022-01-28 17:50:24.166	error	unhandled promise rejection: Cannot find module 'node-fetch' Require stack: - C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js
                
                gridvis_adapter.0
                2022-01-28 17:50:24.165	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                
                Issi OliverIO 2 Replies Last reply Reply Quote 0
                • Issi
                  Issi Developer @Ben1983 last edited by

                  @ben1983

                  Cannot find module 'node-fetch'

                  Er kann das modul nicht finden hast du es in der package.json in den dependencies eingetragen und ein npm install gemacht?

                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Ben1983 last edited by OliverIO

                    @ben1983
                    noch besser ist im adapter verzeichnis den folgenden befehl einzugeben

                    npm install node-fetch
                    

                    dadurch wird die dependency in dein package.json eingetragen
                    die bibliothek heruntergeladen und im verzeichnis node_modules
                    unterhalb deines adapterverzeichnisses gespeichert

                    das ist node standard und nix iobroker spezifisches

                    Ben1983 4 Replies Last reply Reply Quote 0
                    • Ben1983
                      Ben1983 @OliverIO last edited by

                      @oliverio habe ich gemacht, trotzdem kommt fetch not defined

                      1 Reply Last reply Reply Quote 0
                      • Ben1983
                        Ben1983 @OliverIO last edited by

                        @oliverio habe auch nochmal nur npm install fetch durchgeführt, also ohne node, aber bringt auch nichts

                        1 Reply Last reply Reply Quote 0
                        • Ben1983
                          Ben1983 @OliverIO last edited by Ben1983

                          @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.

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • Ben1983
                            Ben1983 @OliverIO last edited by Ben1983

                            @oliverio package.json sieht unter anderem so aus:

                              "dependencies": {
                                "@iobroker/adapter-core": "^2.5.1",
                                "fetch": "^1.1.0",
                                "node-fetch": "^3.2.0"
                              },
                            

                            trotzdem sagt er, dass fetch nicht definiert ist.

                            musste es in einem anderen ordner mit npm install installieren und dann den kompletten ordner in den iobroker pfad kopieren.
                            anders hatte er irgendwelche rechte fehler.

                            So langsam weiß ich nicht mehr weiter

                            Fehlermeldung:

                            gridvis_adapter.0
                            2022-01-28 22:00:24.850	error	fetch is not defined
                            
                            gridvis_adapter.0
                            2022-01-28 22:00:24.850	error	ReferenceError: fetch is not defined at GridvisAdapter.onReady (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.gridvis_adapter\main.js:93:5)
                            
                            gridvis_adapter.0
                            2022-01-28 22:00:24.848	error	unhandled promise rejection: fetch is not defined
                            
                            gridvis_adapter.0
                            2022-01-28 22:00:24.847	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                            
                            Wal 1 Reply Last reply Reply Quote 0
                            • Wal
                              Wal Developer @Ben1983 last edited by

                              @ben1983 ,
                              ich habe mit Debian angefangen und bin auf Windows/WSL umgestiegen und dabei auf diesen Wiki Artikel gestoßen. Den kannst du dir mal anschauen und evtl. durcharbeiten.

                              Ben1983 1 Reply Last reply Reply Quote 0
                              • Ben1983
                                Ben1983 @Wal last edited by

                                @wal Danke für den Link, werde ich mir auf jeden Fall anschauen.
                                Aber denke mit dem Fetch, das ist irgend ein anderes Problem, oder?

                                Wal 1 Reply Last reply Reply Quote 0
                                • Wal
                                  Wal Developer @Ben1983 last edited by

                                  @ben1983 ,
                                  Ordner umkopieren ist ein NoGo bei NPM. Es wird bei deiner Installation was verbogen sein, deshalb der Hinweis auf das Wiki.

                                  OliverIO 1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @Wal last edited by

                                    @wal

                                    hm und warum? hast du da was zum nachlesen?
                                    wenn man projekt en bloc kopiert dann müsste das doch passen.
                                    ggfs. muss man die package-lock.json löschen und nochmal npm install machen.
                                    aber wo merkt sich npm/node zu einem projekt sonst noch was, was ausserhalb des ordners ist?
                                    innerhalb node_modules sollte man nicht rumkopieren. das muss alles npm machen.

                                    1 Reply Last reply Reply Quote 0
                                    • OliverIO
                                      OliverIO @Ben1983 last edited by

                                      @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.

                                      Ben1983 1 Reply Last reply Reply Quote 0
                                      • Ben1983
                                        Ben1983 last edited by

                                        @oliverio ich habe den createadapter auf meinem laufwerk aufgeführt und in den iobroker ordner kopiert.

                                        1. hatte ich mich nicht getraut in dem node_modules ordner was auszuführen.
                                        2. 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 😄

                                        1 Reply Last reply Reply Quote 0
                                        • derAlff
                                          derAlff Developer last edited by derAlff

                                          @ben1983 Nene
                                          Ich habe das Folgendermaßen

                                          1. Ordner für Entwicklung erstellt
                                          2. Den Create Adapter in "Entwicklung" kopiert/gecloned
                                          3. In Ordner create-adapter wechseln und create-adapter nach Anleitung ausführen.
                                          4. 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 2 Replies Last reply Reply Quote 0
                                          • Ben1983
                                            Ben1983 @derAlff last edited by

                                            @deralff ja, aber der ist ja dann nicht im iobroker ordner und da habe ich ihn dann rein kopiert

                                            derAlff 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            669
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            176
                                            10843
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo