Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Adapterentwicklung Daten und weiteres

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Adapterentwicklung Daten und weiteres

Geplant Angeheftet Gesperrt Verschoben Entwicklung
cross originspeicherort
11 Beiträge 3 Kommentatoren 1.1k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • dbwebD Offline
    dbwebD Offline
    dbweb
    schrieb am zuletzt editiert von
    #2

    Noch ne kleine Zusatzfrage:
    Mir passiert immer mal wieder, dass der Adapter irgendwo im Code hängen bleibt (z.B. falscher Zugriff auf nicht existierenden State oder so). Manchmal kommt die entsprechende Meldung im Log, oft kommt aber gar nichts und ich weis nicht wo er hängen geblieben ist.
    Wie komme ich an alle Ausgaben, also auch an "RunTimeErrors"?
    Aktuell bleibt er mir nach einem await einfach hängen und ich sehe nicht wieso...

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      schrieb am zuletzt editiert von
      #3
      1. Wenn native im Adapter keine option kannst du es ja auchbim Info objekt als native ablegen. Das geht ohne neustart.

      2. ja sendto/message ist die richtige vorgehensweise.

      3. du müsstest dich per remote in die nodejs instanz des Adapters mit deiner IDE einhängen. Sonst kannst du nur überall logs einbauen.

      Persönlicher Support
      Spenden -> paypal.me/J3YC33

      1 Antwort Letzte Antwort
      1
      • dbwebD dbweb

        Noch ne kleine Zusatzfrage:
        Mir passiert immer mal wieder, dass der Adapter irgendwo im Code hängen bleibt (z.B. falscher Zugriff auf nicht existierenden State oder so). Manchmal kommt die entsprechende Meldung im Log, oft kommt aber gar nichts und ich weis nicht wo er hängen geblieben ist.
        Wie komme ich an alle Ausgaben, also auch an "RunTimeErrors"?
        Aktuell bleibt er mir nach einem await einfach hängen und ich sehe nicht wieso...

        AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #4

        @dbweb
        Vorher: Richte in VSCode die Debug-Konfiguration "Node.js: Attach to Remote ein", wobei du den Hostnamen/IP des Test-Rechners sowie den dortigen Pfad zum Adapter eintragen musst.

        Debuggen geht jetzt wie folgt:

        1. Stoppe auf dem Test-Rechner deinen Adapter und führe ihn per Kommandozeile folgendermaßen aus:

          node --inspect-brk=0.0.0.0:9229 pfad/zur/main.js --force --logs
          
        2. Drücke in VSCode F5

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        1
        • dbwebD Offline
          dbwebD Offline
          dbweb
          schrieb am zuletzt editiert von
          #5

          Dankeschön, habs mit PHPStorm hingekreigt. Debugging inkl. Breakpoints geht wunderbar, sendto/message klappt auch schon, komme gut voran :)

          1 Antwort Letzte Antwort
          0
          • dbwebD Offline
            dbwebD Offline
            dbweb
            schrieb am zuletzt editiert von
            #6

            Jetzt muss ich doch nochmals zu 1 nachfragen: Wie kann ich ein 'native' zum Adapter setzen, also einen wert aus Adapter.config.x? Mit setObject erstelle ich ja nur ein Objekt. Mit setState fnde ich irgendwie den Pfad zu dem Objekt nicht, weder via system.adapter.0. noch sonst irgendwie. Hänge da grad etwas...
            Neustart danach wäre ganz ok, aber ich müsste erst 2 native setzen, erst danach neu starten, geht das?

            AlCalzoneA 1 Antwort Letzte Antwort
            0
            • dbwebD dbweb

              Jetzt muss ich doch nochmals zu 1 nachfragen: Wie kann ich ein 'native' zum Adapter setzen, also einen wert aus Adapter.config.x? Mit setObject erstelle ich ja nur ein Objekt. Mit setState fnde ich irgendwie den Pfad zu dem Objekt nicht, weder via system.adapter.0. noch sonst irgendwie. Hänge da grad etwas...
              Neustart danach wäre ganz ok, aber ich müsste erst 2 native setzen, erst danach neu starten, geht das?

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #7

              @dbweb
              Objekt mit getObject lesen, dann bearbeiten und mit setObject zurückschreiben

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • dbwebD Offline
                dbwebD Offline
                dbweb
                schrieb am zuletzt editiert von
                #8

                Tut mir leid, irgendwie habe ich wohl ein Grundkonzept nicht verstanden.
                Ein Beispiel:
                In der io-package habe ich:

                "native": {
                        "someVar": ""
                }
                

                Diese kann ich in der index_m.html an das callback von save(callback) übergeben / setzen:

                function save(callback){
                   var obj = {};
                   obj['someVar']¨= 'Some Value';
                   callback(obj);
                }
                

                und wird damit zur Instanz gespeichert.
                in der main.js kann ich dann über

                Adapter.config.someVar
                

                Darauf zugreifen.

                Ich schaffe es aber nicht, diesen Wert zu verändern.
                Versucht habe ich z.B. folgendes:

                Adapter.getObject('config.someVar',function(err, obj){
                   Adaper.log.info(JSON.stringify(obj);
                }
                

                liefert NULL.

                Habs auch schon über diverses anderes versucht, absolut kein Erfolg.
                Zudem:
                Wenn ich mit Adapter.getObject('existierendes.irgendwas',function(err,obj){}) etwas hole was es gibt (vorher mit setObject erstellt), dann kriege ich ja trotzdem nicht den Wert dieses Objekes.
                Als Beispiel:

                        Adapter.setObjectNotExists('something', {
                            type: 'state',
                            common: {name: 'something', type: 'number', role: '', read: true, write: true},
                            native: []
                        },function(){
                            Adapter.setState('something',42,function(){
                                Adapter.getObject('something',function(err,obj){
                                    Adapter.log.info(JSON.stringify(obj)); // Gibt aus: {"type":"state","common":{"name":"something","type":"number","role":"","read":true,"write":true},"native":[],"from":"system.adapter.testadapter.0","user":"system.user.admin","ts":1572639560947,"_id":"testadapter.0.something"}
                                });
                                // kann den state nur damit auslesen
                                Adapter.getState('something',function(err,state){
                                    Adapter.log.info(JSON.stringify(state)); // Gibt aus: {"val":42,"ack":false,"ts":1572639681473,"q":0,"from":"system.adapter.testadapter.0","user":"system.user.admin","lc":1572639558088}
                                });
                            });
                        });
                

                Also irgendwas verstehe ich komplett falsch....könnt ihr mir auf die Sprünge helfen?

                AlCalzoneA 1 Antwort Letzte Antwort
                0
                • dbwebD dbweb

                  Tut mir leid, irgendwie habe ich wohl ein Grundkonzept nicht verstanden.
                  Ein Beispiel:
                  In der io-package habe ich:

                  "native": {
                          "someVar": ""
                  }
                  

                  Diese kann ich in der index_m.html an das callback von save(callback) übergeben / setzen:

                  function save(callback){
                     var obj = {};
                     obj['someVar']¨= 'Some Value';
                     callback(obj);
                  }
                  

                  und wird damit zur Instanz gespeichert.
                  in der main.js kann ich dann über

                  Adapter.config.someVar
                  

                  Darauf zugreifen.

                  Ich schaffe es aber nicht, diesen Wert zu verändern.
                  Versucht habe ich z.B. folgendes:

                  Adapter.getObject('config.someVar',function(err, obj){
                     Adaper.log.info(JSON.stringify(obj);
                  }
                  

                  liefert NULL.

                  Habs auch schon über diverses anderes versucht, absolut kein Erfolg.
                  Zudem:
                  Wenn ich mit Adapter.getObject('existierendes.irgendwas',function(err,obj){}) etwas hole was es gibt (vorher mit setObject erstellt), dann kriege ich ja trotzdem nicht den Wert dieses Objekes.
                  Als Beispiel:

                          Adapter.setObjectNotExists('something', {
                              type: 'state',
                              common: {name: 'something', type: 'number', role: '', read: true, write: true},
                              native: []
                          },function(){
                              Adapter.setState('something',42,function(){
                                  Adapter.getObject('something',function(err,obj){
                                      Adapter.log.info(JSON.stringify(obj)); // Gibt aus: {"type":"state","common":{"name":"something","type":"number","role":"","read":true,"write":true},"native":[],"from":"system.adapter.testadapter.0","user":"system.user.admin","ts":1572639560947,"_id":"testadapter.0.something"}
                                  });
                                  // kann den state nur damit auslesen
                                  Adapter.getState('something',function(err,state){
                                      Adapter.log.info(JSON.stringify(state)); // Gibt aus: {"val":42,"ack":false,"ts":1572639681473,"q":0,"from":"system.adapter.testadapter.0","user":"system.user.admin","lc":1572639558088}
                                  });
                              });
                          });
                  

                  Also irgendwas verstehe ich komplett falsch....könnt ihr mir auf die Sprünge helfen?

                  AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #9

                  @dbweb Das Objekt das du suchst heißt system.adapter.<adaptername>.<instanznr>. Das kannst du dir mit getObject holen und bearbeiten. Hier ein Beispiel:
                  https://github.com/AlCalzone/ioBroker.tradfri/blob/master/src/main.ts#L573

                  Wenn du jetzt eh mit der Entwicklung beginnst, empfehle ich dir: lass die Callbacks sein und nutze die ...Async-Funktionen mit await. Da sparst du dir die ganze Callback-Hölle und dein Code wird lesbarer.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  1
                  • dbwebD Offline
                    dbwebD Offline
                    dbweb
                    schrieb am zuletzt editiert von
                    #10

                    klar, callbacks waren nur rasch für das Beispiel weil ich vergessen hatte, dass die Methoden async sind. Verwende sonst natürlich async dafür, konnte ja sonst keiner mehr lesen.

                    1 Antwort Letzte Antwort
                    0
                    • dbwebD Offline
                      dbwebD Offline
                      dbweb
                      schrieb am zuletzt editiert von
                      #11

                      So, hat alles geklappt. Hatte wohl irgendwie nie die richtige Kombination aus getForeignObject und system.adapter.... ausprobiert, hatte immer nur null oder leere Objekte. Danke für die Hilfe, bin ein ganzes Stück weiter gekommen und werde den Adapter Montag wohl mal vorstellen und auf NPM packen :)

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      767

                      Online

                      32.7k

                      Benutzer

                      82.3k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe