Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Hilfe bei require request

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    894

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.8k

Hilfe bei require request

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 946 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.
  • H Offline
    H Offline
    homecineplexx
    schrieb am zuletzt editiert von
    #1

    ich liefere in der function doSwitch nach dem require-request ohne zu prüfen true zurück, was dann quasi ausgewertet wird und an telegram gesendet wird. und hier ist genau mein problem. ich habe einige versuche getätigt den response abzuwarten, aber das kommt scheinbar asynchron und damit lieferte ich immer false und eine falsche benachrichtigung an den telegram bot.

    kann mir da jemand weiter helfen?

    so sieht der positive response vom require-request aus:

    {"message":"Command used:10","status":"uisuccess"}
    

    Hier mein code:

    var idText = 'INFO.lastTelegramRequest';
    var idTextId = 'INFO.lastTelegramRequestId';
    var actualTelegramRequest = getState("telegram.0.communicate.request").val;
    var actualTelegramRequestId = getState("telegram.0.communicate.requestMessageId").val;
    var helperTelegramRequest = actualTelegramRequest.substring(actualTelegramRequest.indexOf("]") + 1, actualTelegramRequest.length);
    var actionDone = true;
    var homepilotIp = getState("homepilot.0.station.ip").val;
    var returnText = "";
    
    createState(idTextId, {
        type: 'string',
        name: 'Letzte Telegram request ID',
        desc: 'um zu vergleichen ob man etwas tun muss',
        def: ' ',
        role: 'value'
    });
    
    createState(idText, {
        type: 'string',
        name: 'Letzter Telegram request',
        desc: 'um zu vergleichen ob man etwas tun muss',
        def: ' ',
        role: 'value'
    });
    
    var lastTelegramRequest = getState("javascript." + instance + "." + idText).val;
    var lastTelegramRequestId = getState("javascript." + instance + "." + idTextId).val;
    
    if (lastTelegramRequestId != actualTelegramRequestId) {
        switch(helperTelegramRequest) {
            case "Licht-Innenhof-An":
                actionDone = doSwitch("10011", true);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Innenhof-Aus":
                actionDone = doSwitch("10011", false);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Strasse-An":
                actionDone = doSwitch("1010048", true);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Strasse-Aus":
                actionDone = doSwitch("1010048", false);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;    
    
            case "Licht-Garten-An":
                actionDone = doSwitch("1010002", true);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Garten-Aus":
                actionDone = doSwitch("1010002", false);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Carport-An":
                actionDone = doSwitch("1010035", true);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed") + "\r\n";
                actionDone = doSwitch("1010036" ,true);
                returnText += helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;
    
            case "Licht-Carport-Aus":
                actionDone = doSwitch("1010035", false);
                returnText = helperTelegramRequest + "..." + (actionDone ? "ok" : "failed") + "\r\n";
                actionDone = doSwitch("1010036", false);
                returnText += helperTelegramRequest + "..." + (actionDone ? "ok" : "failed");
                break;     
    
            case "Licht-Outdoor-Info":
                $('channel[state.id=homepilot.0.devices.DuoFernUniversal-Aktor2-Kanal.*.state](functions=licht)(rooms=outdoor)').each(function(id, i) {
                    var  name = getState(id.substring(0, id.lastIndexOf('.')) + ".name").val;
    
                    returnText += name + "..." + (getState(id).val ? "on" : "off") + "\r\n";
                });
    
                break;
    
            default:
                returnText = "Nothing to do";    
        }    
    
        sendToTelegram(returnText);
        writeActualTelegramRequest(idText, actualTelegramRequest); 
        writeActualTelegramRequest(idTextId, actualTelegramRequestId);
    } else {
        sendToTelegram("Gleiche MessageId => Nothing to do");    
    }
    
    function doSwitch(deviceId, switchOn) {
        try {    
            var requestUri = "http://" + homepilotIp + "/deviceajax.do?cid=" + (switchOn ? "10" : "11") + "&did=" + deviceId + "&command=1";
    
            require("request")((requestUri));
            console.log("request: " + requestUri);
    
        } catch (e) { console.error(e); }
    
        return true;
    }
    
    function sendToTelegram(textToSend) {
        sendTo("telegram", "send", {text: (String(textToSend))});    
    }
    
    function writeActualTelegramRequest(stateId, request) {
        setState("javascript." + instance + "." + stateId, request);    
    }
    
    
    1 Antwort Letzte Antwort
    0
    • H Offline
      H Offline
      homecineplexx
      schrieb am zuletzt editiert von
      #2

      gibts da echt keinen JavaScript-Guru? :)

      1 Antwort Letzte Antwort
      0
      • blauholstenB Offline
        blauholstenB Offline
        blauholsten
        Developer
        schrieb am zuletzt editiert von
        #3

        Ich bin gewiss kein Guru, aber die Zeile:

        require("request")((requestUri))
        

        Kommt mir komisch vor. Bzw ist mir diese Schreibweise nicht bekannt.

        Als Beispiel

        const request = require('request');
        request('http://www.google.com', (err, res, body) = > {
          console.log(res);
        });
        

        Entwickler vom: - Viessman Adapter
        - Alarm Adapter

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

          @blauholsten:

          const request = require('request');
          request('http://www.google.com', (err, res, body) = > {
            console.log(res);
          });
          ```` `  
          

          Yes.. Das ist der richtige weg..

          const request = require('request');
          request(requestUri, (err, res, body) = > {
              if (!err) {
                  hier wird der Code ausgeführt sobald das Ergebnis von dem Request zurück gekommen ist und
                  musst dann hier in diesem Block return true oder false geben..
              }    
          });
          

          Gruß

          1 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            homecineplexx
            schrieb am zuletzt editiert von
            #5

            @BuZZy:

            @blauholsten:

            const request = require('request');
            request('http://www.google.com', (err, res, body) = > {
              console.log(res);
            });
            ```` `  
            

            Yes.. Das ist der richtige weg..

            const request = require('request');
            request(requestUri, (err, res, body) = > {
                if (!err) {
                    hier wird der Code ausgeführt sobald das Ergebnis von dem Request zurück gekommen ist und
                    musst dann hier in diesem Block return true oder false geben..
                }    
            });
            

            Gruß `

            ok, super danke. werde ich heute so probieren.

            dieses````
            require("request")((requestUri));

            
            danke nochmals
            1 Antwort Letzte Antwort
            0

            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

            Registrieren Anmelden
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            424

            Online

            33.0k

            Benutzer

            83.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2026
            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