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. [gelößt] Frage zu Rückgabewert/Callback nach request

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    697

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

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

[gelößt] Frage zu Rückgabewert/Callback nach request

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 375 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.
  • SteffS Offline
    SteffS Offline
    Steff
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich will eine Netzwerksteckdose Netio230B per Javascript steuern (ich weiß es gibt da schon einen fertigen Node-Red-Flow, der auch funktioniert, ich wollte es trotzdem per Script probieren) was auch grundsätzlich funktioniert. An einer Sache beiße ich mir jedoch die Zähne aus. Ich bekomme das mit dem Rückgabewert nicht gebacken, was wohl daran liegt, das request die Antwort asynchron liefert, sprich bis die Antwort da ist ist das Script schon weiter und es gibt nur ein undefinded als Rückmeldung.

    Im Prinzip habe ich das gleiche Problem wie @ruhr70 hier –> viewtopic.php?t=1073#p8488 , ich habe aber nicht wirklich verstanden wie das denn letztendlich gelöst wurde.

    So sieht mein Script aus, aktuell nur für eine Steckdose:

    ! ````
    // Variablen deklarieren / ID´s einlesen
    var request = require ('request');
    var bSetAusgang1 = "javascript.0.Netio230B.Set_Ausgang_1";
    ! // Ausgang 1 behandeln
    on({id: bSetAusgang1, val: true}, function() {
    log("1. Ausgang 1 soll geschaltet werden");
    let result = LeseStatus (1); // Aufrufendes Script mit Nummer des zu lesenden Ausgangs
    log("3. In der aufrufenden Funktion kommt an: " + result);
    // weitere Anweisungen
    setState(bSetAusgang1, false); // VIS-Variable wieder zurücksetzen
    });
    ! // Status der Ausgänge lesen
    function LeseStatus (Out) {
    var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=l";
    var OutStatus;
    request(url, function (error, state, body) {
    if (body) {
    var abody = body.slice(6, 13).split(' '); // Status der 4 Ausgänge extrahieren und in Array splitten
    OutStatus = abody[Out-1]; // Übergebener Wert ist vom Typ string!!
    log("2. Ausgang " + Out + " hat Zustand " + OutStatus);
    }
    });
    // Hier soll nun als Rückgabewert der Status des Ausgangs (0 oder 1) zurückgegeben werden
    }

    
    Kann mir vielleicht jemand einen Schubs geben oder erklären, wie ich das mit dem Rückgabewert anpacken muss.
    
    Gruß Steffen

    ioBroker auf Intel NUC 7CJYH / Debian 11 / States in Redis / Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
    Admin V7.4.7 / Node V20.18.1 / NPM V10.8.2 / JSC V7.0.6 / JSE V8.8.3

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Was möchtest Du mit

      	// weitere Anweisungen
      
      

      machen, das Du nicht auch in der Callback-Funktion von request() erledigen kannst ?

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • SteffS Offline
        SteffS Offline
        Steff
        schrieb am zuletzt editiert von
        #3

        Hallo paul53,

        da soll dann je nach Rückmeldung der Ausgang ein oder ausgeschaltet werden.

        Der Gedanke war folgender:

        Die Steckdosenleiste hat 4 Ausgänge ich wollte zum Schalten des jeweiligen Ausgangs immer die Funktion LeseStatus aufrufen und dann eben wie oben geschrieben je nach Rückmeldung den Ausgang ein oder ausschalten.

        Aber je mehr ich darüber nachdenke, so glaube ich, das ich zu kompliziert denke!
        > das Du nicht auch in der Callback-Funktion von request() erledigen kannst ?
        Vor allem nach dem was du geschrieben hast - ich schau mal ob ich das was ich machen will dort unterkriege!

        Gruß Steffen

        ioBroker auf Intel NUC 7CJYH / Debian 11 / States in Redis / Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
        Admin V7.4.7 / Node V20.18.1 / NPM V10.8.2 / JSC V7.0.6 / JSE V8.8.3

        1 Antwort Letzte Antwort
        0
        • SteffS Offline
          SteffS Offline
          Steff
          schrieb am zuletzt editiert von
          #4

          Hallo paul53,

          danke, du hast mich mit deiner Frage auf den richtigen weg gebracht! Habe das was ich will nun im Script unter request gepackt und es funktioniert einwandfrei. Habe mal wieder viel zu kompliziert gedacht!

          Danke nochmals,

          Gruß Steffen

          ioBroker auf Intel NUC 7CJYH / Debian 11 / States in Redis / Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
          Admin V7.4.7 / Node V20.18.1 / NPM V10.8.2 / JSC V7.0.6 / JSE V8.8.3

          1 Antwort Letzte Antwort
          0
          • SteffS Offline
            SteffS Offline
            Steff
            schrieb am zuletzt editiert von
            #5

            Hier noch meine Lösung, falls jemand ein ähnliches Problem hat:

            ! ````
            // Variablen deklarieren / ID´s einlesen
            var request = require ('request');
            var bSetAusgang1 = "javascript.0.Netio230B.Set_Ausgang_1";
            var bAusgang1 = "javascript.0.Netio230B.Ausgang_1";
            ! // Ausgang 1 behandeln
            on({id: bSetAusgang1, val: true}, function() {
            log("1. Ausgang 1 soll geschaltet werden");
            LeseStatus (1);
            setState(bSetAusgang1, false); // VIS-Variable wieder zurücksetzen
            });
            ! // Status der Ausgänge lesen
            function LeseStatus (Out) {
            var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=l";
            var OutStatus;
            request(url, function (error, state, body) {
            if (body) {
            var abody = body.slice(6, 13).split(' '); // Status der 4 Ausgänge extrahieren und in Array splitten
            OutStatus = abody[Out-1]; // Übergebener Wert ist vom Typ string!!
            log("2. Ausgang " + Out + " hat Zustand " + OutStatus);
            if (OutStatus === "1") {
            log("3. Ausgang " + Out + " wird ausgeschaltet");
            SchalteAusgang ("0uuu");
            setState(bAusgang1, false);
            }
            if (OutStatus === "0") {
            log("3. Ausgang " + Out + " wird eingeschaltet");
            SchalteAusgang ("1uuu");
            setState(bAusgang1, true);
            }
            }
            });
            }
            ! // Ausgänge schalten
            function SchalteAusgang (befehl) {
            var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=" + befehl;
            log ("4. Sende Befehl: " + url);
            request(url, function(error, state, body) {
            log("5. Rückmeldung: " + state);
            });
            }

            
            Gruß Steffen

            ioBroker auf Intel NUC 7CJYH / Debian 11 / States in Redis / Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
            Admin V7.4.7 / Node V20.18.1 / NPM V10.8.2 / JSC V7.0.6 / JSE V8.8.3

            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

            774

            Online

            32.5k

            Benutzer

            81.6k

            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