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. JavaScript
  5. httpGet funktioniert nach update node.js nicht mehr

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.1k

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

httpGet funktioniert nach update node.js nicht mehr

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 393 Aufrufe 2 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.
  • S Offline
    S Offline
    skorpil
    schrieb am zuletzt editiert von skorpil
    #1

    wie der Titel sagt: meine Scripte mit httpGet funktionieren nicht mehr. Ich bekomme die Fehlermeldung

    script.js.Skripte_aktiviert.Ansage_API_alle_(mit_Sonos_Api)_mit_Wohnzimmer_mit_HttpGet: socket hang up
    

    Hier das Script:

    // ##################################################################
    
    //                      Ansage
    
    // ##################################################################
    
    
    
    // ##################################################################
    //                      Definitionen
    // ##################################################################
    
    
    // Quellen
    var idWetter =           "hm-rega.0.29954";
    var idTemperatursensor = 'hm-rpc.0.OEQ1296052.1.TEMPERATURE'/*Außentemperatur:1 TEMPERATURE*/
    var idAnsageBuero = 'hm-rega.0.4529'/*AnsageAlexaBuero*/;
    var idAnsageSchlafzimmer = 'hm-rega.0.4528'/*AnsageAlexaSchlafzimmer*/;
    var idAnsageTerrasse = 'hm-rega.0.4626'/*AnsageAlexaTerrasse*/;
    var idAnsageKueche = 'hm-rega.0.4625'/*AnsageAlexaKüche*/;
    var idAnsageWohnzimmer = 'hm-rega.0.72055'/*AnsageAlexaWohnzimmer*/;
    
    
    
    // ##################################################################
    //                      Basiswerte ermitteln
    // ##################################################################
    
    
    function ermitteleAnsagedatum () {
        //Wochentag ermitteln
        var d = new Date ();
        var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
        var wochentag = w[d.getDay()]; 
    
        //Tagesdatum ermitteln
        var tag = d.getDate();
    
        //Monat ermitteln
        var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
        var monat = month[d.getMonth()];
    
        //Jahr ermitteln
        var jahr = d.getFullYear();
    
        //Stunde ermitteln
        var stunde = d.getHours();
    
        //Minute ermitteln
        var minute = d.getMinutes();
    
        //Begrüssung ermitteln
        var Begr = " ";
        if(stunde<=12){Begr = "Guten Morgen"};
        if(stunde>=12 && stunde<=18){Begr = "Guten Tag"};
        if(stunde>18){Begr = "Guten Abend"};
        
        return { // zurückgeben
            'Jahr'      : jahr,
            'Monat'     : monat,
            'Tag'       : tag,
            'Wochentag' : wochentag,
            'Stunde'    : stunde,
            'Minute'    : minute,
            'Begr'      : Begr
        };
    }
    
    
    
    function ermitteleWetter () { // Wetterbedingungen
        var wetterdaten = getState(idWetter).val;
    //    log('Wetter: ' + wetterdaten);
        return(wetterdaten);
    }
    
    function ermitteleAnsageTemperatur () {
        // Die Außentemperatur ist xx. Das Wetter heute ist xx
        // Einfache Temperaturansage mit SayIt.
        // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht
        // "Es sind 18 Punkt 2 Grad " sagt.
    
        var temperatursensor = getState(idTemperatursensor).val;
        var temp_string = temperatursensor.toString();
    //    log('Temp  ' + temp_string);
        var temp_array = [];
        temp_array = temp_string.split(".");
    
        // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist.
        // Es wird dann nur "18" gelesen.
        if (!temp_array[1]) {
            temp_array[1] = "0";
    //        log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt.");
        }
        return{
            'Ganzzahl'      : temp_array[0],
            'Nachkommazahl' : temp_array[1]
        };
    }
    
    on([idAnsageBuero , idAnsageSchlafzimmer , idAnsageKueche , idAnsageTerrasse , idAnsageWohnzimmer], function(dp) {
       if(dp.state.val) {
    
        // ###########################################
        //                 ClearQueue
        // ###########################################
       
        // var APIQueueBuero = "http://192.168.0.105:5005/B%C3%BCro%20Ikea/clearqueue";
        // var APIQueueSchlafzimmer = "http://192.168.0.105:5005/Schlafzimmer/clearqueue";
       
        
    
    // ##################################################################
    //                          Basisansage
    // ##################################################################
    
        
        var ansagetext = ermitteleAnsagedatum().Begr + ", heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr 
                + ". Es ist " + ermitteleAnsagedatum().Stunde + "  Uhr und " + ermitteleAnsagedatum().Minute + "  Minuten." 
                + " Die Aussentemperatur beträgt " + ermitteleAnsageTemperatur().Ganzzahl + "," + ermitteleAnsageTemperatur().Nachkommazahl + " Grad." 
                + " Wetter Bedingungen, " + ermitteleWetter() +" .";
                
                
    
    
    
    
    // ##################################################################
    //      Ansagetext zusammenstellen und in Objekt schreiben
    // ##################################################################
    
    // Info zum Verzeichnis     /home/brs/node-sonos-http-api-master/static/clips/;
    // Definitionen MP3;
    // herzlichWillkommen.mp3";
    // var herz = "herzlichWillkommen.mp3";
    // HundeGebell.mp3;
    // var hund = "HundeGebell.mp3";
    // Rolladen.mp3;
    // var roll = "Rolladen.mp3";
    
    // Definition APIsay Büro Ikea;
    var APIsayBuero = "http://192.168.0.105:5005/B%C3%BCro%20Ikea/say/";
    
    // Definition APIsay Schlafzimmer;
    var APIsaySchlafzimmer = "http://192.168.0.105:5005/Schlafzimmer/say/";
    
    // Definition APIsay Kueche;
    var APIsayKueche = "http://192.168.0.105:5005/K%C3%BCche/say/";
    
    // Definition APIsay Terrasse;
    var APIsayTerrasse = "http://192.168.0.105:5005/Terrasse/say/";
    
    // Definition APIsay Wohnzimmer;
    var APIsayWohnzimmer = "http://192.168.0.105:5005/Wohnzimmer/say/";
    
    var lautstaerke = 50;
    
    
    
    // Ansagetext
            // Basisansage
            var Ansage = ansagetext;
            
            //Geburtstagsansage
            var tempGEBURTSTAGE = "javascript.0.Ansage.GeburtstageHEUTE";
            var AnsageGEBURTSTAGE = getState(tempGEBURTSTAGE).val;
            
            //Muellsansage heute
            var tempMUELLheute = "javascript.0.Ansage.MuellHEUTE";
            var AnsageMUELLheute = getState(tempMUELLheute).val;
            
            //Muellsansage Zukunft
            var tempMUELLzukunft = "javascript.0.Ansage.MuellZUKUNFT";
            var AnsageMUELLzukunft = getState(tempMUELLzukunft).val;
    
    /*log("Tempansage--------------------->" + tempAnsage);
    log("Ansage--------------------->" + Ansage);
    
    log("tempGEBURTSTAGE--------------------->" + tempGEBURTSTAGE);
    log("AnsageGEBURTSTAGE--------------------->" + AnsageGEBURTSTAGE);
    
    log("tempMUELLheute--------------------->" + tempMUELLheute);
    log("AnsageMUELLheute--------------------->" + AnsageMUELLheute);
    
    log("tempMUELLzukunft--------------------->" + tempMUELLzukunft);
    log("AnsageMUELLzukunft--------------------->" + AnsageMUELLzukunft);*/
    
    
    
    // ####################################################
    // Wenn Geburtstag dann mit ansagen
    // ####################################################
    
        if (AnsageGEBURTSTAGE.length > 2) { // wenn der Inhalt des Objektes "AnsageGEBURTSTAGE" größer als 2 Zeichen lang ist, dann ...
            Ansage = Ansage + "Heute haben Geburtstag, " + AnsageGEBURTSTAGE +" .";
            //log("Ansage mit Geburtstag--------------------->" + Ansage);
        }
        
       
    // ####################################################
    // Wenn Müll dann mit ansagen
    // ####################################################
    
        if (AnsageMUELLheute.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLheute" größer als 2 Zeichen lang ist, dann ...
            Ansage = Ansage + "  Achtung, heute ist " + AnsageMUELLheute +" ." + "Bitte an die Strasse stellen" + " !";
            //log("Ansage mit Geburtstag und Muell heute--------------------->" + Ansage);
        }
        
    // ####################################################
    // Wenn Müll ZUKUNFT, dann mit ansagen
    // ####################################################
    
        if (AnsageMUELLzukunft.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLzukunft" größer als 2 Zeichen lang ist, dann ...
            Ansage = Ansage + "  Achtung, morgen ist " + AnsageMUELLzukunft + " ." + "Bitte MORGEN an die Strasse stellen" + " !";
            //log("Ansage mit Geburtstag und Muell heute und morgen--------------------->" + Ansage);
        }    
    
    
    
    // ####################################################
    //                  ANSAGE
    // ####################################################
       
       var idAnsageBueroWert = getState(idAnsageBuero).val;
       var idAnsageSchlafzimmerWert = getState(idAnsageSchlafzimmer).val;
       var idAnsageKuecheWert = getState(idAnsageKueche).val;
       var idAnsageTerrasseWert = getState(idAnsageTerrasse).val;
       var idAnsageWohnzimmerWert = getState(idAnsageWohnzimmer).val; 
    
       log("Buero: " + idAnsageBueroWert);
       log("Schlaf: " + idAnsageSchlafzimmerWert);
       log("Kueche: " + idAnsageKuecheWert);
       log("Terrasse: " + idAnsageTerrasseWert);
       log("Wohnzimmer: " + idAnsageWohnzimmerWert);
       
       if(idAnsageBueroWert) {
           
        Ansage = APIsayBuero + Ansage + "/" + lautstaerke;
          
        log("AnsageArbeitszimmer=" + Ansage);
        setState(idAnsageBuero,false);
     
        ansagenSonos(Ansage);//Funktion mit HttpGet in Global
        
        }
        // Ende If Büro
    
        if(idAnsageSchlafzimmerWert) {
           
        Ansage = APIsaySchlafzimmer + Ansage + "/" + lautstaerke;
        
        log("AnsageSchlafzimmer=" + Ansage);
        setState(idAnsageSchlafzimmer,false);
    
        ansagenSonos(Ansage);//Funktion mit HttpGet in Global
        }
        // Ende If Schlafzimmer
    
    
         if(idAnsageKuecheWert) {
           
        Ansage = APIsayKueche + Ansage + "/" + lautstaerke;
        
        log("AnsageKuecher=" + Ansage);
        setState(idAnsageKueche,false);
    
        ansagenSonos(Ansage);//Funktion mit HttpGet in Global
        }
        // Ende If Kueche
    
    
        if(idAnsageTerrasseWert) {
           
        Ansage = APIsayTerrasse + Ansage + "/" + lautstaerke;
        
        log("AnsageTerrasse=" + Ansage);
        setState(idAnsageTerrasse,false);
    
        ansagenSonos(Ansage);//Funktion mit HttpGet in Global
        }
        // Ende If Terrasse
    
        
        if(idAnsageWohnzimmerWert) {
    
        Ansage = APIsayWohnzimmer + Ansage + "/" + lautstaerke;
        
        log("AnsageWohnzimmer=" + Ansage);
        setState(idAnsageWohnzimmer, false);
    
        // Definition Zustaende Denon
        const idDenonPower = 'denon.0.zoneMain.powerZone'/*Main Zone Power State*/;
        const idDenonInput = 'denon.0.zoneMain.selectInput'/*Select input*/;
        // const idDenonVolume = 'denon.0.zoneMain.volume'/*Main Volume*/;
        // var alterWertVolume = getState(idDenonVolume).val;
    
        // Check if the Denon adapter is off 
    
        if (!getState(idDenonPower).val) { 
        // Turn on the Denon adapter 
        setState(idDenonPower, true);
         log("idDenonPower=" + "true");
    
    
        // Set the input to CD
        setStateDelayed(idDenonInput, "CD", 2000);
            log("idDenonInput=" + "CD");
            // setState(idDenonVolume, 50 );
        // Play the announcement delayed by 10 seconds using the Sonos API
        setTimeout(function() {
            log("Ansage wird gespielt");
        
        ansagenSonos(Ansage);//Funktion mit HttpGet in Global
        }, 6000);
    
        // Set the input back to TV
        setTimeout(function() {
        setStateDelayed(idDenonInput, "TV", 2000);
        log("idDenonInput auf TV zurueck");
        // Volume zurücksetzen
        // setState(idDenonVolume, alterWertVolume);
        // Turn off the Denon adapter
        setStateDelayed(idDenonPower, false, 4000);
        log("idDenonPower aus");
        }, 30000);
    
        }; // Ende If ist AN Z.302
       
        } // Ende If Wohnzimmer Z. 289
    
        
     } // Ende If aus on Ansage Z. 100
     
    }); // Ende ON Zeile 98
    

    ...und hier das zugehörige globale Script

    function ansagenSonos(url) {
        httpGet(url, {timeout: 30000}, (error) => {
            if(error) {
                console.error(error);
            }        
        });
    }
    

    Bis zum update auf Node.js: v20.18.0 haben die Sripte perfekt funktioniert. Da mein Linux unter VirtualBox von Oracle läuft, konnte ich diesen Zusammenhang reproduzieren. indem ich auf einen früheren Snapshot mit der 18er Version zurückgegangen bin. Da läuft alles sauber.

    Hat jemand einen Tip für mich?

    Ro75R 1 Antwort Letzte Antwort
    0
    • S skorpil

      wie der Titel sagt: meine Scripte mit httpGet funktionieren nicht mehr. Ich bekomme die Fehlermeldung

      script.js.Skripte_aktiviert.Ansage_API_alle_(mit_Sonos_Api)_mit_Wohnzimmer_mit_HttpGet: socket hang up
      

      Hier das Script:

      // ##################################################################
      
      //                      Ansage
      
      // ##################################################################
      
      
      
      // ##################################################################
      //                      Definitionen
      // ##################################################################
      
      
      // Quellen
      var idWetter =           "hm-rega.0.29954";
      var idTemperatursensor = 'hm-rpc.0.OEQ1296052.1.TEMPERATURE'/*Außentemperatur:1 TEMPERATURE*/
      var idAnsageBuero = 'hm-rega.0.4529'/*AnsageAlexaBuero*/;
      var idAnsageSchlafzimmer = 'hm-rega.0.4528'/*AnsageAlexaSchlafzimmer*/;
      var idAnsageTerrasse = 'hm-rega.0.4626'/*AnsageAlexaTerrasse*/;
      var idAnsageKueche = 'hm-rega.0.4625'/*AnsageAlexaKüche*/;
      var idAnsageWohnzimmer = 'hm-rega.0.72055'/*AnsageAlexaWohnzimmer*/;
      
      
      
      // ##################################################################
      //                      Basiswerte ermitteln
      // ##################################################################
      
      
      function ermitteleAnsagedatum () {
          //Wochentag ermitteln
          var d = new Date ();
          var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
          var wochentag = w[d.getDay()]; 
      
          //Tagesdatum ermitteln
          var tag = d.getDate();
      
          //Monat ermitteln
          var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
          var monat = month[d.getMonth()];
      
          //Jahr ermitteln
          var jahr = d.getFullYear();
      
          //Stunde ermitteln
          var stunde = d.getHours();
      
          //Minute ermitteln
          var minute = d.getMinutes();
      
          //Begrüssung ermitteln
          var Begr = " ";
          if(stunde<=12){Begr = "Guten Morgen"};
          if(stunde>=12 && stunde<=18){Begr = "Guten Tag"};
          if(stunde>18){Begr = "Guten Abend"};
          
          return { // zurückgeben
              'Jahr'      : jahr,
              'Monat'     : monat,
              'Tag'       : tag,
              'Wochentag' : wochentag,
              'Stunde'    : stunde,
              'Minute'    : minute,
              'Begr'      : Begr
          };
      }
      
      
      
      function ermitteleWetter () { // Wetterbedingungen
          var wetterdaten = getState(idWetter).val;
      //    log('Wetter: ' + wetterdaten);
          return(wetterdaten);
      }
      
      function ermitteleAnsageTemperatur () {
          // Die Außentemperatur ist xx. Das Wetter heute ist xx
          // Einfache Temperaturansage mit SayIt.
          // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht
          // "Es sind 18 Punkt 2 Grad " sagt.
      
          var temperatursensor = getState(idTemperatursensor).val;
          var temp_string = temperatursensor.toString();
      //    log('Temp  ' + temp_string);
          var temp_array = [];
          temp_array = temp_string.split(".");
      
          // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist.
          // Es wird dann nur "18" gelesen.
          if (!temp_array[1]) {
              temp_array[1] = "0";
      //        log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt.");
          }
          return{
              'Ganzzahl'      : temp_array[0],
              'Nachkommazahl' : temp_array[1]
          };
      }
      
      on([idAnsageBuero , idAnsageSchlafzimmer , idAnsageKueche , idAnsageTerrasse , idAnsageWohnzimmer], function(dp) {
         if(dp.state.val) {
      
          // ###########################################
          //                 ClearQueue
          // ###########################################
         
          // var APIQueueBuero = "http://192.168.0.105:5005/B%C3%BCro%20Ikea/clearqueue";
          // var APIQueueSchlafzimmer = "http://192.168.0.105:5005/Schlafzimmer/clearqueue";
         
          
      
      // ##################################################################
      //                          Basisansage
      // ##################################################################
      
          
          var ansagetext = ermitteleAnsagedatum().Begr + ", heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr 
                  + ". Es ist " + ermitteleAnsagedatum().Stunde + "  Uhr und " + ermitteleAnsagedatum().Minute + "  Minuten." 
                  + " Die Aussentemperatur beträgt " + ermitteleAnsageTemperatur().Ganzzahl + "," + ermitteleAnsageTemperatur().Nachkommazahl + " Grad." 
                  + " Wetter Bedingungen, " + ermitteleWetter() +" .";
                  
                  
      
      
      
      
      // ##################################################################
      //      Ansagetext zusammenstellen und in Objekt schreiben
      // ##################################################################
      
      // Info zum Verzeichnis     /home/brs/node-sonos-http-api-master/static/clips/;
      // Definitionen MP3;
      // herzlichWillkommen.mp3";
      // var herz = "herzlichWillkommen.mp3";
      // HundeGebell.mp3;
      // var hund = "HundeGebell.mp3";
      // Rolladen.mp3;
      // var roll = "Rolladen.mp3";
      
      // Definition APIsay Büro Ikea;
      var APIsayBuero = "http://192.168.0.105:5005/B%C3%BCro%20Ikea/say/";
      
      // Definition APIsay Schlafzimmer;
      var APIsaySchlafzimmer = "http://192.168.0.105:5005/Schlafzimmer/say/";
      
      // Definition APIsay Kueche;
      var APIsayKueche = "http://192.168.0.105:5005/K%C3%BCche/say/";
      
      // Definition APIsay Terrasse;
      var APIsayTerrasse = "http://192.168.0.105:5005/Terrasse/say/";
      
      // Definition APIsay Wohnzimmer;
      var APIsayWohnzimmer = "http://192.168.0.105:5005/Wohnzimmer/say/";
      
      var lautstaerke = 50;
      
      
      
      // Ansagetext
              // Basisansage
              var Ansage = ansagetext;
              
              //Geburtstagsansage
              var tempGEBURTSTAGE = "javascript.0.Ansage.GeburtstageHEUTE";
              var AnsageGEBURTSTAGE = getState(tempGEBURTSTAGE).val;
              
              //Muellsansage heute
              var tempMUELLheute = "javascript.0.Ansage.MuellHEUTE";
              var AnsageMUELLheute = getState(tempMUELLheute).val;
              
              //Muellsansage Zukunft
              var tempMUELLzukunft = "javascript.0.Ansage.MuellZUKUNFT";
              var AnsageMUELLzukunft = getState(tempMUELLzukunft).val;
      
      /*log("Tempansage--------------------->" + tempAnsage);
      log("Ansage--------------------->" + Ansage);
      
      log("tempGEBURTSTAGE--------------------->" + tempGEBURTSTAGE);
      log("AnsageGEBURTSTAGE--------------------->" + AnsageGEBURTSTAGE);
      
      log("tempMUELLheute--------------------->" + tempMUELLheute);
      log("AnsageMUELLheute--------------------->" + AnsageMUELLheute);
      
      log("tempMUELLzukunft--------------------->" + tempMUELLzukunft);
      log("AnsageMUELLzukunft--------------------->" + AnsageMUELLzukunft);*/
      
      
      
      // ####################################################
      // Wenn Geburtstag dann mit ansagen
      // ####################################################
      
          if (AnsageGEBURTSTAGE.length > 2) { // wenn der Inhalt des Objektes "AnsageGEBURTSTAGE" größer als 2 Zeichen lang ist, dann ...
              Ansage = Ansage + "Heute haben Geburtstag, " + AnsageGEBURTSTAGE +" .";
              //log("Ansage mit Geburtstag--------------------->" + Ansage);
          }
          
         
      // ####################################################
      // Wenn Müll dann mit ansagen
      // ####################################################
      
          if (AnsageMUELLheute.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLheute" größer als 2 Zeichen lang ist, dann ...
              Ansage = Ansage + "  Achtung, heute ist " + AnsageMUELLheute +" ." + "Bitte an die Strasse stellen" + " !";
              //log("Ansage mit Geburtstag und Muell heute--------------------->" + Ansage);
          }
          
      // ####################################################
      // Wenn Müll ZUKUNFT, dann mit ansagen
      // ####################################################
      
          if (AnsageMUELLzukunft.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLzukunft" größer als 2 Zeichen lang ist, dann ...
              Ansage = Ansage + "  Achtung, morgen ist " + AnsageMUELLzukunft + " ." + "Bitte MORGEN an die Strasse stellen" + " !";
              //log("Ansage mit Geburtstag und Muell heute und morgen--------------------->" + Ansage);
          }    
      
      
      
      // ####################################################
      //                  ANSAGE
      // ####################################################
         
         var idAnsageBueroWert = getState(idAnsageBuero).val;
         var idAnsageSchlafzimmerWert = getState(idAnsageSchlafzimmer).val;
         var idAnsageKuecheWert = getState(idAnsageKueche).val;
         var idAnsageTerrasseWert = getState(idAnsageTerrasse).val;
         var idAnsageWohnzimmerWert = getState(idAnsageWohnzimmer).val; 
      
         log("Buero: " + idAnsageBueroWert);
         log("Schlaf: " + idAnsageSchlafzimmerWert);
         log("Kueche: " + idAnsageKuecheWert);
         log("Terrasse: " + idAnsageTerrasseWert);
         log("Wohnzimmer: " + idAnsageWohnzimmerWert);
         
         if(idAnsageBueroWert) {
             
          Ansage = APIsayBuero + Ansage + "/" + lautstaerke;
            
          log("AnsageArbeitszimmer=" + Ansage);
          setState(idAnsageBuero,false);
       
          ansagenSonos(Ansage);//Funktion mit HttpGet in Global
          
          }
          // Ende If Büro
      
          if(idAnsageSchlafzimmerWert) {
             
          Ansage = APIsaySchlafzimmer + Ansage + "/" + lautstaerke;
          
          log("AnsageSchlafzimmer=" + Ansage);
          setState(idAnsageSchlafzimmer,false);
      
          ansagenSonos(Ansage);//Funktion mit HttpGet in Global
          }
          // Ende If Schlafzimmer
      
      
           if(idAnsageKuecheWert) {
             
          Ansage = APIsayKueche + Ansage + "/" + lautstaerke;
          
          log("AnsageKuecher=" + Ansage);
          setState(idAnsageKueche,false);
      
          ansagenSonos(Ansage);//Funktion mit HttpGet in Global
          }
          // Ende If Kueche
      
      
          if(idAnsageTerrasseWert) {
             
          Ansage = APIsayTerrasse + Ansage + "/" + lautstaerke;
          
          log("AnsageTerrasse=" + Ansage);
          setState(idAnsageTerrasse,false);
      
          ansagenSonos(Ansage);//Funktion mit HttpGet in Global
          }
          // Ende If Terrasse
      
          
          if(idAnsageWohnzimmerWert) {
      
          Ansage = APIsayWohnzimmer + Ansage + "/" + lautstaerke;
          
          log("AnsageWohnzimmer=" + Ansage);
          setState(idAnsageWohnzimmer, false);
      
          // Definition Zustaende Denon
          const idDenonPower = 'denon.0.zoneMain.powerZone'/*Main Zone Power State*/;
          const idDenonInput = 'denon.0.zoneMain.selectInput'/*Select input*/;
          // const idDenonVolume = 'denon.0.zoneMain.volume'/*Main Volume*/;
          // var alterWertVolume = getState(idDenonVolume).val;
      
          // Check if the Denon adapter is off 
      
          if (!getState(idDenonPower).val) { 
          // Turn on the Denon adapter 
          setState(idDenonPower, true);
           log("idDenonPower=" + "true");
      
      
          // Set the input to CD
          setStateDelayed(idDenonInput, "CD", 2000);
              log("idDenonInput=" + "CD");
              // setState(idDenonVolume, 50 );
          // Play the announcement delayed by 10 seconds using the Sonos API
          setTimeout(function() {
              log("Ansage wird gespielt");
          
          ansagenSonos(Ansage);//Funktion mit HttpGet in Global
          }, 6000);
      
          // Set the input back to TV
          setTimeout(function() {
          setStateDelayed(idDenonInput, "TV", 2000);
          log("idDenonInput auf TV zurueck");
          // Volume zurücksetzen
          // setState(idDenonVolume, alterWertVolume);
          // Turn off the Denon adapter
          setStateDelayed(idDenonPower, false, 4000);
          log("idDenonPower aus");
          }, 30000);
      
          }; // Ende If ist AN Z.302
         
          } // Ende If Wohnzimmer Z. 289
      
          
       } // Ende If aus on Ansage Z. 100
       
      }); // Ende ON Zeile 98
      

      ...und hier das zugehörige globale Script

      function ansagenSonos(url) {
          httpGet(url, {timeout: 30000}, (error) => {
              if(error) {
                  console.error(error);
              }        
          });
      }
      

      Bis zum update auf Node.js: v20.18.0 haben die Sripte perfekt funktioniert. Da mein Linux unter VirtualBox von Oracle läuft, konnte ich diesen Zusammenhang reproduzieren. indem ich auf einen früheren Snapshot mit der 18er Version zurückgegangen bin. Da läuft alles sauber.

      Hat jemand einen Tip für mich?

      Ro75R Online
      Ro75R Online
      Ro75
      schrieb am zuletzt editiert von
      #2

      @skorpil schau mal nach, in welchem zeitlichen Rahmen da Aktionen laufen. Sprich wie oft Daten via httpget abgerufen werden. Wenn zu oft, dann "blockieren" manchmal die aufzurufenden. Dann wäre die Meldung logisch.

      Ro75

      SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

      S 1 Antwort Letzte Antwort
      1
      • Ro75R Ro75

        @skorpil schau mal nach, in welchem zeitlichen Rahmen da Aktionen laufen. Sprich wie oft Daten via httpget abgerufen werden. Wenn zu oft, dann "blockieren" manchmal die aufzurufenden. Dann wäre die Meldung logisch.

        Ro75

        S Offline
        S Offline
        skorpil
        schrieb am zuletzt editiert von
        #3

        @ro75 danke, ich checke das

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

          Zur Info: es scheint kein Problem von httpGet zu sein, wie ich zunächst vermutete, sondern ein Problem der node-sonos-http-api in Verbindung mit Node.js 20. Der Entwickler schrieb mir dazu auf GitHub:

          I think this is related to this global change in Node 20:

          nodejs/node#43522

          The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player.

          Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random.

          I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time.

          Hat jemand ähnliche Probleme mit der node-sonos-http-api?

          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

          814

          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