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. Skripten / Logik
  4. Script Verständnisproblem

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    9
    1
    89

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Script Verständnisproblem

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 6 Kommentatoren 689 Aufrufe
  • Ä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.
  • S Offline
    S Offline
    stoffel67
    schrieb am zuletzt editiert von
    #1

    Hallo, steh irgendwie auf Kriegsfuss mit JavaScript… :?

    folgendes script:

    const dns = require('dns');

    function getHostip(host) {

    dns.lookup(host, function(err, result,family) {

    console.log(result);

    return result;

    });

    }

    var h=getHostip('fritz.box');

    console.log('IP:'+h);

    warum bekomme ich diesen Output: IP:undefined

    innerhalb der function wird die richtige IP ausgegeben

    Mein Adapter: JUNG/GIRA eNet-Adapter

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      tempestas
      schrieb am zuletzt editiert von
      #2

      Als Laie ist meine Meinung:

      fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

      var h=getHostip('fritz.box');
      

      von ihm willst

      P.S.: bitte Code Tags nutzen

      <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

      1 Antwort Letzte Antwort
      0
      • arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @tempestas:

        Als Laie ist meine Meinung:

        fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

        var h=getHostip('fritz.box');
        

        von ihm willst

        P.S.: bitte Code Tags nutzen `

        das ist doch ein string der da übergeben wird…````
        'fritz.box'

        
        

        const dns = require('dns');

        function getHostip(host) {
        	var res = dns.lookup(host, function(err, result,family) {
        		console.log(result);
        		return result;
        	});
        	return res;
        }
        

        var h=getHostip('fritz.box');
        console.log('IP:'+h);

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          stoffel67
          schrieb am zuletzt editiert von
          #4

          "Fritz.box" ist ein string der an die````
          function getHostip(host)

          
          in der function getHostIP wird ja die richtige IP Adresse ausgegeben````
           console.log(result);
          

          d.h. der string wird an die function übergeben, mir ist nur nicht klar wie die function etwas zuückgegebn kann.

          Mein Adapter: JUNG/GIRA eNet-Adapter

          1 Antwort Letzte Antwort
          0
          • BuZZyB Offline
            BuZZyB Offline
            BuZZy
            schrieb am zuletzt editiert von
            #5

            @tempestas:

            fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

            var h=getHostip('fritz.box');
            

            von ihm willst ` Hallo,

            die Funktion````
            function getHostip(host) {
            dns.lookup(host, function(err, result,family) {
            console.log(result);
            return result;
            });
            }

            getHostip(host) verarbeitet 'fritz.box' als Parameter.
            
            ..function functionsName(parameter) …
            
            Wenn du dann functionsName('Toller Test!'); aufrufst, kannst du innerhalb der Funktion mit der Variable parameter arbeiten der du beim Aufruf der Funktion den Wert 'Toller Test!' mitgegeben hast..
            
            z.B.:````
            function testFunktion(parameter) {
            log(parameter);
            }
            
            testFunktion('Toller Test!');
            ````Ergibt die Logausgabe: 'Toller Test!' ;)
            
            Gruß
            1 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #6

              Das Problem ist der callback … der kann kein "return" für die Funktion oben drüber machen.

              Der Weg das in Javascript zu lösen sind eigene Callback-Funktionen:

              const dns = require('dns');
              function getHostip(host, callback) {
                  dns.lookup(host, function(err, result,family) {
                      console.log(result);
                      callback(result);
                  });
              }
              
              getHostip('fritz.box', function(result) {
                  console.log('IP:'+result);
              });
              
              

              (Blind geschrieben, aber sollte so tun)

              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
              • S Offline
                S Offline
                stoffel67
                schrieb am zuletzt editiert von
                #7

                Ja, so tut's…

                ich hab einfach diese callback Logik noch nicht durchschaut, verinnerlicht.... :cry:

                wenn ich nun das Ergebnis wieder in einer andern Funktion verwenden will, muß doch mal irgendwann etwas "zurückgebbar" sein... :roll:

                Mein Adapter: JUNG/GIRA eNet-Adapter

                1 Antwort Letzte Antwort
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #8

                  @stoffel67:

                  Ja, so tut's…

                  ich hab einfach diese callback Logik noch nicht durchschaut, verinnerlicht.... :cry:

                  wenn ich nun das Ergebnis wieder in einer andern Funktion verwenden will, muß doch mal irgendwann etwas "zurückgebbar" sein... :roll: `

                  Ja den knoten muss man einmal lösen :-)

                  ne das bekommst Du ausser über tricks oder so nicht mehr wirklich zurück. Üblicherweise schreibst Du deinen weiteren Code in diese Callbackfunktion wo jetzt das console.log('IP:'+result); steht. So wird alles "flow-technisch" so ausgeführt wie Du es willst.

                  Das ist aber ok so.

                  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
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    Ne Alternative wären promises und optional async/await in TypeScript. Damit kannst du diese callback Logik so umbauen, dass es von außen so aussieht wie ein ganz normaler funktionsaufruf mit Rückgabewert. Ist aber für Anfänger noch schwieriger, das initial zu verstehen. Danach ist der asynchrone Programmablauf imo deutlich einfacher zu verstehen.

                    Gesendet von unterwegs

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

                    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

                    808

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    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