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. Error/Bug
  4. [gelöst] sendTo() in eigenem Adapter funktioniert nicht

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

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

Geplant Angeheftet Gesperrt Verschoben Error/Bug
14 Beiträge 4 Kommentatoren 4.0k Aufrufe 1 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.
  • carsten04C Online
    carsten04C Online
    carsten04
    Developer
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • apollon77A Offline
        apollon77A Offline
        apollon77
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • carsten04C Online
          carsten04C Online
          carsten04
          Developer
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            1
            • carsten04C Online
              carsten04C Online
              carsten04
              Developer
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • apollon77A Offline
                apollon77A Offline
                apollon77
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • Jey CeeJ Online
                    Jey CeeJ Online
                    Jey Cee
                    Developer
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • Jey CeeJ Online
                      Jey CeeJ Online
                      Jey Cee
                      Developer
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • apollon77A Offline
                        apollon77A Offline
                        apollon77
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • Jey CeeJ Online
                          Jey CeeJ Online
                          Jey Cee
                          Developer
                          schrieb am zuletzt editiert von
                          #12

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

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

                          1 Antwort Letzte Antwort
                          0
                          • apollon77A Offline
                            apollon77A Offline
                            apollon77
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • Jey CeeJ Online
                              Jey CeeJ Online
                              Jey Cee
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              @apollon77:

                              Hast du auch ein iobroker upload adaptername gemacht?! `

                              Danke das war es.

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

                              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

                              824

                              Online

                              32.4k

                              Benutzer

                              81.5k

                              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