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. Hilfe bei require request

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

Hilfe bei require request

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 737 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
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            794

            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