Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Adapterentwicklung Daten und weiteres

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapterentwicklung Daten und weiteres

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

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

      AlCalzone 1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer last edited by

        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.

        1 Reply Last reply Reply Quote 1
        • AlCalzone
          AlCalzone Developer @dbweb last edited by

          @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

          1 Reply Last reply Reply Quote 1
          • dbweb
            dbweb last edited by

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

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

              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?

              AlCalzone 1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @dbweb last edited by

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

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

                  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?

                  AlCalzone 1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer @dbweb last edited by

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

                    1 Reply Last reply Reply Quote 1
                    • dbweb
                      dbweb last edited by

                      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 Reply Last reply Reply Quote 0
                      • dbweb
                        dbweb last edited by

                        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 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        586
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        cross origin speicherort
                        3
                        11
                        811
                        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