Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. [gelöst] sendTo() in eigenem Adapter funktioniert nicht

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    203

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

[gelöst] sendTo() in eigenem Adapter funktioniert nicht

[gelöst] sendTo() in eigenem Adapter funktioniert nicht

Scheduled Pinned Locked Moved Error/Bug
14 Posts 4 Posters 4.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • carsten04C Offline
    carsten04C Offline
    carsten04
    Developer
    wrote on last edited by
    #1

    Hallo zusammen,

    ich versuche mich gerade an einem eigenen Adapter und wollte sendTo() für das Weiterreichen von Daten vom Adapter (main()) zu seinem Admin (admin/index.html) verwenden. Das klappt aber nicht, da der übergebene callback nie aufgerufen wird.

    Ich bin dann hingegangen und habe iobroker noch einmal neu aufgesetzt und das adapter.template installiert, mit nur einer Ergänzung, nämlich dem Aufruf von sendTo() und einer minimalen Anpassung in adapter.on(…), aber auch hier der gleiche Effekt.

    iobroker läuft bei mir unter win7.

    Zur Verdeutlichung hier mal der Quellcode

    (1) main.js aus dem template mit minimaler Anpassung :

    // Some message was sent to adapter instance over message box. Used by email, pushover, text2speech, ...
    adapter.on('message', function (obj) {
        /* if (typeof obj == 'object' && obj.message) { */
    
        if (typeof obj == 'object') {
            if (obj.command == 'send') {
                // e.g. send email or pushover or whatever
                console.log('send command');
    
                // Send response in callback if required
                if (obj.callback) adapter.sendTo(obj.from, obj.command, 'Message received', obj.callback);
            }
        }
    });
    

    (2) admin/index.html mit minimaler Anpassung in load() -> nur sendTo ergänzt:

    // the function loadSettings has to exist ...
        function load(settings, onChange) {
            // example: select elements with id=key and class=value and insert value
            for (var key in settings) {
                // example: select elements with id=key and class=value and insert value
                if ($('#' + key + '.value').attr('type') == 'checkbox') {
                    $('#' + key + '.value').prop('checked', settings[key]).change(function () {
                        onChange();
                    });
                } else {
                    $('#' + key + '.value').val(settings[key]).change(function () {
                        onChange();
                    }).keyup(function () {
                        $(this).trigger('change');
                    });
                }
            }
    
            sendTo(null, 'send', null, function (list) {
                alert(list);
            });
    
            // Signal to admin, that no changes yet
            onChange(false);
        }
    

    Es rührt sich einfach nichts. Ich würde jetzt erwarten, dass mein Alert die Meldung "Message received" ausgibt. Einer eine Idee was ich falsch mache?

    Ein weiterer Effekt, der mir aufgefallen ist: beim Neuladen der Testinstanz wird anscheinend niemals das unload-Ereignis geschmissen, da der Text 'cleand everything up …' nie im Log erscheint. Hat diesen Effekt auch schon jemand beobachtet?

    Quellcode zu unload:

    // is called when adapter shuts down - callback has to be called under any circumstances!
    adapter.on('unload', function (callback) {
        try {
            adapter.log.info('cleaned everything up...');
            callback();
        } catch (e) {
            callback();
        }
    });
    

    Jemand eine Idee?

    Grüße

    Carsten

    1 Reply Last reply
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      wrote on last edited by
      #2

      Wäre mir neu das alert in Verbindung mit nodejs/iobroker funktioniert.

      Du musst "Adapter.log.info" nutzen.

      Gesendet von meinem m8 mit Tapatalk

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

      1 Reply Last reply
      0
      • apollon77A Offline
        apollon77A Offline
        apollon77
        wrote on last edited by
        #3

        Damit das Message-Handling funktioniert musst Du im io-package folgendes angeben:

                "messagebox":               true,
                "subscribe":                "messagebox",
        
        

        unter "common".

        Kannst es bei iobroker.sql o.ä. prüfen. Ansonsten kommen keine Nachrichten an.

        Hast Du das drin?

        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
        1 Reply Last reply
        0
        • carsten04C Offline
          carsten04C Offline
          carsten04
          Developer
          wrote on last edited by
          #4

          @apollon77:

          Das war der Fehler. Super vielen dank. Die Info sollte auf jeden Fall in der Doku unter:

          https://github.com/ioBroker/ioBroker/wi … mon-fields

          nachgepflegt werden. Wenn man das nicht weiss, sucht man sich blöde. Wo sollten eigentlich Dokuergänzungen gemeldet werden, hier im Forum in einem betimmten Thread, oder in Jira, oder …?

          @JeyCee: Das hat erst mal nichts mit node.js zu tun, da der code im Browser ausgeführt wird, also ganz normales Javascript.

          1 Reply Last reply
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            wrote on last edited by
            #5

            Dann habe ich nicht begriffen wie nodejs funktioniert.

            Ich dachte nodejs ist eine Server Anwendung die es möglich macht JS ohne Browser auszuführen.

            Und demnach würden alle Skripte und Adapter code auf dem Server ausgeführt.

            Bitte um Aufklärung.

            Gesendet von meinem m8 mit Tapatalk

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

            1 Reply Last reply
            1
            • carsten04C Offline
              carsten04C Offline
              carsten04
              Developer
              wrote on last edited by
              #6

              @Jey Cee: was Du schreibst ist ja richtig. Der serverseitige Teil eines Adapters läuft ja auch unter node.js, also das was ich unter main.js aufgeführt habe. Der clientseitige Teil, also admin/index.html für die Parametrierung des Adapters läuft im Browser, egal ob Firefox, Chrome, Safari oder was auch immer und ist schnödes javascript.

              1 Reply Last reply
              0
              • apollon77A Offline
                apollon77A Offline
                apollon77
                wrote on last edited by
                #7

                Aufklärung ist einfach: Der Teil wo "alert" verwendet wurde war aus der "admin.html"-Datei. Das ist HTML/JS was den Adapter-Konfigurationsdialog darstellt. Daher läuft dieser Teil im Browser und ist normales JavaScript und kein Serverseitiges nodejs.

                Andere Teile von oben (der Teil der hier die Nachricht empfängt) ist Serverside-code und läuft in nodejs,

                Konnte ich es klarer machen?

                Hehe doppelt 🙂

                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                1 Reply Last reply
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  wrote on last edited by
                  #8

                  @carsten04:

                  @apollon77:

                  Das war der Fehler. Super vielen dank. Die Info sollte auf jeden Fall in der Doku unter:

                  https://github.com/ioBroker/ioBroker/wi … mon-fields

                  nachgepflegt werden. Wenn man das nicht weiss, sucht man sich blöde. Wo sollten eigentlich Dokuergänzungen gemeldet werden, hier im Forum in einem betimmten Thread, oder in Jira, oder …?

                  @JeyCee: Das hat erst mal nichts mit node.js zu tun, da der code im Browser ausgeführt wird, also ganz normales Javascript. `
                  Habe in der Doku aufgenommen:

                  https://github.com/ioBroker/ioBroker/wi … ackagejson

                  Ich glaube es reicht jetzt nur "messagebox" auf true zu setzen.

                  1 Reply Last reply
                  0
                  • Jey CeeJ Online
                    Jey CeeJ Online
                    Jey Cee
                    Developer
                    wrote on last edited by
                    #9

                    Danke für die Erklärung, jetzt ist das Klar und ergibt Sinn.

                    Gesendet von meinem m8 mit Tapatalk

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

                    1 Reply Last reply
                    0
                    • Jey CeeJ Online
                      Jey CeeJ Online
                      Jey Cee
                      Developer
                      wrote on last edited by
                      #10

                      Jetzt muss ich den Thread nochmal hoch holen.

                      Die 'sendTo' Funktion will einfach nicht funktionieren. Ich hab alles gelesen was ich dazu finden konnte und natürlich hab ich die io-packages.js angepasst.

                      • Adapter instanz neu anlegen

                      • Adapter löschen & neu installieren

                      • ioBroker neustart

                      Nichts hat geholfen.

                      Um Tippfehler zu vermeiden hab ich sogar den code per copy & paste eingefügt.

                      Was übersehe ich?

                      {
                          "common": {
                              "name":                     "upnp",
                              "version":                  "0.3.7",
                              "title":                    "UPnP Adapter",
                              "desc":                     {
                       			"en": "ioBroker UPnP Adapter",
                      			"de": "ioBroker UPnP Adapter",
                      			"ru": "ioBroker UPnP драйвер как образец"
                      	        },
                              "platform":                 "Javascript/Node.js",
                              "license":                  "MIT",
                              "mode":                     "daemon",
                              "icon":                     "upnp-discovery.png",
                              "keywords":                 ["upnp"],
                      		"extIcon":          "https://raw.githubusercontent.com/Jey-Cee/ioBroker.upnp/master/admin/upnp-discovery.png",
                      		"readme":           "https://github.com/Jey-Cee/ioBroker.upnp/blob/master/README.md",
                      		"loglevel":         "info",
                              "type":                     "hardware",
                              "messagebox":               true,
                              "subscribe":                "messagebox"
                          },
                          "native": {
                      	"enableAutoDiscover": "",
                      	"enableAutoSubscription": ""
                          },
                          "instanceObjects": [
                            {}
                        ]
                      }
                      
                      
                      / Some message was sent to adapter instance over message box. Used by email, pushover, text2speech, ...
                      adapter.on('message', function (obj) {
                          adapter.log.info('incoming message');
                      });
                      
                      

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

                      1 Reply Last reply
                      0
                      • apollon77A Offline
                        apollon77A Offline
                        apollon77
                        wrote on last edited by
                        #11

                        Hast du auch ein iobroker upload adaptername gemacht?!

                        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                        1 Reply Last reply
                        0
                        • Jey CeeJ Online
                          Jey CeeJ Online
                          Jey Cee
                          Developer
                          wrote on last edited by
                          #12

                          Nein das hab ich noch nicht gemacht. Das werde ich heute Abend noch testen.

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

                          1 Reply Last reply
                          0
                          • apollon77A Offline
                            apollon77A Offline
                            apollon77
                            wrote on last edited by
                            #13

                            Die io-package wird per "upload" aktualisiert und quasi "integriert". Kannst Danach sachauen das in der Instanzdefinition auf die Messagebox drin steht.

                            Ansonsten danach ggf nochmal iobroker stop und start

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Reply Last reply
                            0
                            • Jey CeeJ Online
                              Jey CeeJ Online
                              Jey Cee
                              Developer
                              wrote on last edited by
                              #14

                              @apollon77:

                              Hast du auch ein iobroker upload adaptername gemacht?! `

                              Danke das war es.

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

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              133

                              Online

                              32.4k

                              Users

                              81.3k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe