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.
    • derAlff
      derAlff Developer @Ben1983 last edited by

      @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? 🤔

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

        @ben1983 im ioBroker oder im dev-server?

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

          @deralff ich hatte den jetzt mit dem chreate adapter erzeugt und in den ioBroker adapter kopiert.
          haben keinen Dev Server.
          Dachte geht so auch....
          Aber glaube dass das Fetch Problem auch auf dem Devserver bestehen würde, oder?

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

            @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:90
            

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

            derAlff Wal 2 Replies Last reply Reply Quote 0
            • derAlff
              derAlff Developer @Ben1983 last edited by

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

              ich verstehe das Problem noch nicht ganz... kann aber auch sein, dass es einfach etwas spät ist 😅

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

                @deralff das habe ich auch gelesen, aber wüsste nicht wo ne klammer fehlen sollte

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

                  @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 1 Reply Last reply Reply Quote 0
                  • Ben1983
                    Ben1983 @Wal last edited by

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

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

                      @ben1983 ,
                      hier habe für dich die suche bemüht, evtl. ist das dein Problem.

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

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

                        derAlff OliverIO 3 Replies Last reply Reply Quote 0
                        • derAlff
                          derAlff Developer @Ben1983 last edited by

                          @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 install im node_modules Ordner ausführen.

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

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

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

                              @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 1 Reply Last reply Reply Quote 0
                              • Ben1983
                                Ben1983 @derAlff last edited by

                                @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 install im 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 1 Reply Last reply Reply Quote 0
                                • derAlff
                                  derAlff Developer @Ben1983 last edited by derAlff

                                  @ben1983

                                  npm run test
                                  

                                  So wird das Script "test" aus der package.json ausgeführt.

                                  Schau Mal das Video. Dann wird dir einiges klarer.

                                  Hast du die Readme von create-adapter auch gelesen?

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

                                    @deralff also den creat adapter direkt im node-modules von iobroker ausführen?
                                    und dann node-fetch installieren?
                                    mein adapter ist ja leer, haben lediglich wo anders erzeugt, aber warum macht das was aus?
                                    habe doch den gabzen ordner kopiert.

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

                                      @deralff habe ich jetzt ausgeführt.
                                      kommen paar grüne häkchen.
                                      was sagt / bringt mir das jetzt?

                                      Habe die readme gelesen, aber komme nicht weiter.

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

                                        @ben1983 ,
                                        habe das mal nachgestellt.
                                        node-fetch darf nicht händisch installiert sein, also wie im Link beschrieben deinstallieren.
                                        Im Adapter "const fetch = require('node-fetch');" eingefügt und er bringt bei mir die Meldung nicht gefunden beim starten. Danach in der "package.json" unter "devDependencies" "node-fetch": "^3.2.0" hinzugefügt. Gulp für die Übersetzung im Adapterordner mit "npm install --save-dev gulp" installiert.
                                        Adapter gestartet, keine Fehlermeldung mehr.
                                        Das Ganze unter Windows in der WSL Debian mit MS Code.

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

                                          @wal und beim deinstallieren macht man sich auch keine anderen Adapter kaputt?

                                          Also kann man den creatadapter doch wo anders ausführen und rein kopieren, oder sollte man den direkt im node-modules Ordner ausführen und dann mit gulp installieren?

                                          Was macht gulp eigentlich?

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

                                            @ben1983 ,
                                            der ist für die Übersetzungen wichtig, im Wiki erklärt.
                                            Man kann auch "npm install --production" im Adapterordner machen, dann wird auch alles nötige erzeugt.
                                            Du wirst doch nicht in deinem produktiven System mit Adapter-Entwicklung anfangen ?

                                            @ben1983 sagte in Eigenen Adapter erstellen:

                                            Also kann man den creatadapter doch wo anders ausführen und rein kopieren

                                            Ich mache das dort, wo er auch sein soll.

                                            Screenshot 2022-01-29 111559.png

                                            Ben1983 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            779
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            176
                                            10848
                                            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