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. [Skript] Absolute Feuchte berechnen

NEWS

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

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

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

[Skript] Absolute Feuchte berechnen

Geplant Angeheftet Gesperrt Verschoben JavaScript
740 Beiträge 96 Kommentatoren 224.9k Aufrufe 81 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.
  • T TT-Tom

    @jojo58

    Die Zeilennummern passen nicht genau. Es werden nur reine Codezeilen gezählt. Also schau mal im Bereich oberhalb von der Zeile.

    JoJo58J Offline
    JoJo58J Offline
    JoJo58
    schrieb am zuletzt editiert von
    #670

    @tt-tom Da sind noch sehr viele Zeilen an Code, wüßte nicht wonach ich da suchen soll? Hab leider keine Ahnung von Javascript.
    Wenn nur reine Codezeilen gezählt werden und keine Kommentar oder Leerzeilen, dann müßte das ja etwa am Ende des Scripts sein.
    Ich habe auch mal unter Objekte nachgesehen, die Datenpunkte werden auch nicht angelegt.

    Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
    Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
    Einfach ein tolles Hobby :-)

    T 1 Antwort Letzte Antwort
    0
    • JoJo58J JoJo58

      @tt-tom Da sind noch sehr viele Zeilen an Code, wüßte nicht wonach ich da suchen soll? Hab leider keine Ahnung von Javascript.
      Wenn nur reine Codezeilen gezählt werden und keine Kommentar oder Leerzeilen, dann müßte das ja etwa am Ende des Scripts sein.
      Ich habe auch mal unter Objekte nachgesehen, die Datenpunkte werden auch nicht angelegt.

      T Offline
      T Offline
      TT-Tom
      schrieb am zuletzt editiert von
      #671

      @jojo58

      Das ist schwer ohne das Script zu sehen. Zeige mal den Teil ab Zeile 1445.

      Gruß Tom
      https://github.com/tt-tom17
      Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

      NSPanel Script Wiki
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      NSPanel Adapter Wiki
      https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

      JoJo58J 1 Antwort Letzte Antwort
      0
      • T TT-Tom

        @jojo58

        Das ist schwer ohne das Script zu sehen. Zeige mal den Teil ab Zeile 1445.

        JoJo58J Offline
        JoJo58J Offline
        JoJo58
        schrieb am zuletzt editiert von
        #672

        @tt-tom
        Das sind die Codezeilen.

              // Fenster zu. Ein Ausschlusskriterium reicht für die Empfehlung "Fenster zu".
        
              lueftenText = "Fenster zu:
        
        ";
        
              if (b1ln) lueftenText += b1lnText + "
        
        ";
        
              if (b2ln) lueftenText += b2lnText + "
        
        ";
        
              if (b3ln) lueftenText += b3lnText + "
        
        ";
        
              setState(idLueften, false);
        
              setState(idLueftenHys,false);
        
              if (debug) log(raum + ': **Empfehlung Fenster zu**');
        
          } else {
        
              // Hysterese. Keine Änderung der bisherigen Empfehlung.
        
              if (debug) log(raum + ': **im Bereich der Hysterese** (keine Änderung der Lüftungsempfehlung');
        
              if (getState(idLueften).val === null) setState(idLueften,false); // noch keine Empfehlung vorhanden, "Fenster zu" empfehlen
        
              lueftenText = "Hysterese, keine Änderung der Lüftungsempfehlung";
        
              setState(idLueftenHys,true);
        
          }
        
          setState(idLueftenText, lueftenText);
        
           /* Erklärung Lüftungslogik (von Paul53)
        
          Lüften:
        
          wenn    abs. Aussenfeuchte  <   abs. Innenfeuchte     - Hysterese (Entfeuchten)
        
          UND     Aussentemperatur    <   Innentemperatur       - Hysterese (Kühlen)
        
          UND     Innentemperatur     >=  Raumtemperaturminimum + Hysterese (Auskühlschutz)
        
          */
        
           // lüften (und - Alle Bedingungen müssen erfüllt sein):
        
          // #1 - Entfeuchten:    Außenluft ist mind. (hysEntfeuchten + 0,1) trockener als Innen
        
          // #2 - Kühlen:         Außentemperatur ist mindestens 0,6 Grad kühler als innen TODO: im Winter auch?
        
          // #3 - Auskühlschutz:  Innentemperatur ist höher als die Mindesttemperatur
        
           // nicht lüften (oder):
        
          // #1 - Außenluft ist zu feucht
        
          // #2 - Außentemperatur zu warm
        
          // #3 - Innentemperatur niedriger als Mindestraumtemperatur
        
           if (debug) log(raum + ":" + cob(b3ln) + " Außenluft ist zu feucht (b3ln): ");
        
          if (debug) log(raum + ":" + cob(b2ln) + " Außentemperatur zu warm (b2ln): ");
        
          if (debug) log(raum + ":" + cob(b1ln) + " Außenluft ist zu feucht (b1ln): " + ": xa: " + xa + " >= (xi - 0.1) " + (xi - 0.1));
        
          if (debug) log(raum + ": Fenster zu (ein true reicht):");
        
        
        
          //if (debug) log(raum + ": b1lp: " + b1lp+ ", b2lp: " + b2lp+ ", b3lp: " + b3lp);
        
          if (debug) log(raum + ":" + cob(b3lp) + " Innentemperatur ist höher als die Mindesttemperatur (b3lp): ");
        
          if (debug) log(raum + ":" + cob(b2lp) + " Außentemperatur ist mindestens 0,6 Grad kühler als innen (b2lp): ");
        
          if (debug) log(raum + ":" + cob(b1lp) + " Außenluft ist mind. 0,4° trockener als Innen (b1lp):  xa: " + xa + " <= (xi - 0.4) " + (xi - 0.4));
        
          if (debug) log(raum + ": Lüftungsempfehlung (alle Bedingungen auf true):");
        
           if (debug) log(raum + ", ti:"+ti+", ta: "+ta+", xi:"+xi+", xa: "+xa+", mih:"+mih+", mit:"+mit,"info");
        
          if (debug) log("**------ " + raum + " ------- Aussensensor: " + aussen + " -----------**");
        
        }
        
        //eric2905 Erzeuge JSON und setzen Variablen "anyLueften" und "countLueften"
        
        // -----------------------------------------------------------------------------
        
        function createJSON() {
        
          // alle Daten im JSON werden als String abgelegt
        
          if (debug) log("=========================================================");
        
          if (debug) log("Erzeugung JSON Start");
        
          if (debug) log("=========================================================");
        
           var anyLueften          = false;
        
          var countLueften        = 0;
        
          var raeumeLueftenListe  = [];
        
        
        
          var temppfad = "";
        
          var tempraum = "";
        
          var tempVal = "";
        
          var strJSONfinal = "[";
        
          var strJSONtemp = "";
        
           for (var raum in raeume) {
        
              strJSONtemp = strJSONtemp + "{";
        
              strJSONtemp = strJSONtemp + "\"Raum\":\"" + raum + "\",";
        
               for (var datenpunktID in raumDatenpunkte) {
        
        
        
                  // Aussensensor ja oder nein 
        
                  var aussensensor = false;
        
                  if (lueftenDp(datenpunktID)) {
        
                      if (!raeume[raum].Aussensensor) {
        
                          aussensensor = true;
        
                      }
        
                  }
        
        
        
                  temppfad = pfad + raumPfad + raum + "." + raumDatenpunkte[datenpunktID].DpName;
        
                  tempraum = pfad + raumPfad + raum;
        
                   tempVal = (!aussensensor ? getState(temppfad).val : "");            // kein Aussensenosr: Lüftungsempfehlung auslesen, Aussensensor: Lüftungsempfehlung freilassen
        
                  if (tempVal === null) tempVal = "";
        
                  if(raumDatenpunkte[datenpunktID].DpName != "Lüftungsempfehlung") {
        
                      tempVal = parseFloat(tempVal);
        
                      tempVal = tempVal.toFixed(2);
        
                  } else {
        
                      if (tempVal === true) {
        
                          anyLueften = true;
        
                          countLueften = countLueften + 1;
        
                          raeumeLueftenListe.push(raum);
        
                      }
        
                  }
        
                  strJSONtemp = strJSONtemp + "\"" + raumDatenpunkte[datenpunktID].DpName + "\":\"" + tempVal + "\",";
        
        
        
              }
        
              strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
        
              strJSONtemp = strJSONtemp + "},";
        
           }
        
           strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
        
          strJSONfinal = strJSONfinal + strJSONtemp + "]";
        
          if (debug) log("strJSONfinal = " + strJSONfinal);
        
          if (debug) log("anyLueften = " + anyLueften + ", Anzahl Lüftungsempfehlungen: " + countLueften);
        
        
        
          setState(pfad + 'Lüften'                    , anyLueften);
        
          setState(pfad + 'Lüften_Liste'              , writeJson(raeumeLueftenListe));
        
          setState(pfad + 'Lüften_Anzahl'             , countLueften);
        
          setState(pfad + 'JSON'                      , strJSONfinal);
        
          setState(pfad + 'Aktualsierung'             , formatDate(new Date(), strDatum));
        
        
        
          if (debug) log("=========================================================");
        
          if (debug) log("Erzeugung JSON Ende");
        
          if (debug) log("=========================================================");
        
        }
        
        // eric2905 Ende ---------------------------------------------------------------
        
        function calcDelayed(raum, delay) {
        
          setTimeout(function () {
        
              calc(raum);
        
          }, delay || 0);
        
        }
        
        function creatJSONDelayed() {
        
          setTimeout(function () {
        
              createJSON();
        
          }, 4000); 
        
        }
        
        // Klimadaten in allen Räumen berechnen 
        
        function calcAll() {
        
          for (var raum in raeume) {
        
              calcDelayed(raum,delayRooms);       // Räume verzögerd nacheinander abarbeiten
        
          }
        
        }
        
        // finde anhand der Sensor ID einen zugeordneten Raum
        
        function findRoom(sensor) {
        
          for (var raum in raeume) {
        
              if (raeume[raum].Sensor_TEMP == sensor) return raum;
        
              if (raeume[raum].Sensor_HUM == sensor) return raum;
        
          }
        
          return null;
        
        }
        
        // Änderung eines Sensors (Temperatur oder Luftfeuchtigkeit)
        
        function valChange(obj) {
        
          var raumname = findRoom(obj.id);
        
          if (raumname) {
        
              if (debug) log('**Änderung:' + raumname + ": " + obj.id + ": " + obj.state.val + '**');
        
              calcDelayed(raumname,delayRooms);
        
          }
        
          // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
        
          // -----------------------------------------------------------------------------
        
          creatJSONDelayed();
        
          // eric2905 Ende ---------------------------------------------------------------
        
        }
        
        // Datenpunkte für alle Räume anlegen
        
        function createOn() {
        
          var dpId    = "";
        
           // TODO: Im Modus CONTROL über Objekte: Bei Änderung der OFFSETS, Temperatur_Minimum werden die Änderung erst nach Aktualisierung der Messwerte oder nach Zeit erneuert (auf on() reagieren) 
        
          var i =0;
        
           for (var raum in raeume) {
        
               if (raeume[raum].Sensor_TEMP) {
        
                  dpId = raeume[raum].Sensor_TEMP;
        
                  i++;
        
                  on({id: dpId ,change:'ne'}, function (obj) {
        
                      valChange(obj);
        
                  });
        
                  if (debug) log("on: " + dpId + " angelegt.");
        
              }
        
               if (raeume[raum].Sensor_HUM) {
        
                  dpId = raeume[raum].Sensor_HUM;
        
                  i++;
        
                  on({id: dpId ,change:'ne'}, function (obj) {
        
                      valChange(obj)
        
                  });
        
                  if (debug) log("on: " + dpId + " angelegt.");
        
              }
        
          }
        
          log("Subscriptions angelegt: " + i);
        
        }
        
        // Schedule
        
        // =============================================================================
        
        // Nach Zeit alle Räume abfragen
        
        schedule(cronStr, function () {
        
          calcAll();
        
          // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
        
          creatJSONDelayed();
        
          // eric2905 Ende ---------------------------------------------------------------
        
        });
        
        // main()
        
        // =============================================================================
        
        function main() {
        
          calcAll();
        
          setTimeout(calcAll,2000);
        
          // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
        
          creatJSONDelayed();
        
          // eric2905 Ende ---------------------------------------------------------------
        
        }
        
        // Skriptstart
        
        // =============================================================================
        
        createDp();                 // Datenpunkte anlegen
        
        setTimeout(createOn,2000);  // Subscriptions anlegen
        
        setTimeout(main,    4000);  // Zum Skriptstart ausführen
        

        Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
        Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
        Einfach ein tolles Hobby :-)

        T paul53P 2 Antworten Letzte Antwort
        0
        • JoJo58J JoJo58

          @tt-tom
          Das sind die Codezeilen.

                // Fenster zu. Ein Ausschlusskriterium reicht für die Empfehlung "Fenster zu".
          
                lueftenText = "Fenster zu:
          
          ";
          
                if (b1ln) lueftenText += b1lnText + "
          
          ";
          
                if (b2ln) lueftenText += b2lnText + "
          
          ";
          
                if (b3ln) lueftenText += b3lnText + "
          
          ";
          
                setState(idLueften, false);
          
                setState(idLueftenHys,false);
          
                if (debug) log(raum + ': **Empfehlung Fenster zu**');
          
            } else {
          
                // Hysterese. Keine Änderung der bisherigen Empfehlung.
          
                if (debug) log(raum + ': **im Bereich der Hysterese** (keine Änderung der Lüftungsempfehlung');
          
                if (getState(idLueften).val === null) setState(idLueften,false); // noch keine Empfehlung vorhanden, "Fenster zu" empfehlen
          
                lueftenText = "Hysterese, keine Änderung der Lüftungsempfehlung";
          
                setState(idLueftenHys,true);
          
            }
          
            setState(idLueftenText, lueftenText);
          
             /* Erklärung Lüftungslogik (von Paul53)
          
            Lüften:
          
            wenn    abs. Aussenfeuchte  <   abs. Innenfeuchte     - Hysterese (Entfeuchten)
          
            UND     Aussentemperatur    <   Innentemperatur       - Hysterese (Kühlen)
          
            UND     Innentemperatur     >=  Raumtemperaturminimum + Hysterese (Auskühlschutz)
          
            */
          
             // lüften (und - Alle Bedingungen müssen erfüllt sein):
          
            // #1 - Entfeuchten:    Außenluft ist mind. (hysEntfeuchten + 0,1) trockener als Innen
          
            // #2 - Kühlen:         Außentemperatur ist mindestens 0,6 Grad kühler als innen TODO: im Winter auch?
          
            // #3 - Auskühlschutz:  Innentemperatur ist höher als die Mindesttemperatur
          
             // nicht lüften (oder):
          
            // #1 - Außenluft ist zu feucht
          
            // #2 - Außentemperatur zu warm
          
            // #3 - Innentemperatur niedriger als Mindestraumtemperatur
          
             if (debug) log(raum + ":" + cob(b3ln) + " Außenluft ist zu feucht (b3ln): ");
          
            if (debug) log(raum + ":" + cob(b2ln) + " Außentemperatur zu warm (b2ln): ");
          
            if (debug) log(raum + ":" + cob(b1ln) + " Außenluft ist zu feucht (b1ln): " + ": xa: " + xa + " >= (xi - 0.1) " + (xi - 0.1));
          
            if (debug) log(raum + ": Fenster zu (ein true reicht):");
          
          
          
            //if (debug) log(raum + ": b1lp: " + b1lp+ ", b2lp: " + b2lp+ ", b3lp: " + b3lp);
          
            if (debug) log(raum + ":" + cob(b3lp) + " Innentemperatur ist höher als die Mindesttemperatur (b3lp): ");
          
            if (debug) log(raum + ":" + cob(b2lp) + " Außentemperatur ist mindestens 0,6 Grad kühler als innen (b2lp): ");
          
            if (debug) log(raum + ":" + cob(b1lp) + " Außenluft ist mind. 0,4° trockener als Innen (b1lp):  xa: " + xa + " <= (xi - 0.4) " + (xi - 0.4));
          
            if (debug) log(raum + ": Lüftungsempfehlung (alle Bedingungen auf true):");
          
             if (debug) log(raum + ", ti:"+ti+", ta: "+ta+", xi:"+xi+", xa: "+xa+", mih:"+mih+", mit:"+mit,"info");
          
            if (debug) log("**------ " + raum + " ------- Aussensensor: " + aussen + " -----------**");
          
          }
          
          //eric2905 Erzeuge JSON und setzen Variablen "anyLueften" und "countLueften"
          
          // -----------------------------------------------------------------------------
          
          function createJSON() {
          
            // alle Daten im JSON werden als String abgelegt
          
            if (debug) log("=========================================================");
          
            if (debug) log("Erzeugung JSON Start");
          
            if (debug) log("=========================================================");
          
             var anyLueften          = false;
          
            var countLueften        = 0;
          
            var raeumeLueftenListe  = [];
          
          
          
            var temppfad = "";
          
            var tempraum = "";
          
            var tempVal = "";
          
            var strJSONfinal = "[";
          
            var strJSONtemp = "";
          
             for (var raum in raeume) {
          
                strJSONtemp = strJSONtemp + "{";
          
                strJSONtemp = strJSONtemp + "\"Raum\":\"" + raum + "\",";
          
                 for (var datenpunktID in raumDatenpunkte) {
          
          
          
                    // Aussensensor ja oder nein 
          
                    var aussensensor = false;
          
                    if (lueftenDp(datenpunktID)) {
          
                        if (!raeume[raum].Aussensensor) {
          
                            aussensensor = true;
          
                        }
          
                    }
          
          
          
                    temppfad = pfad + raumPfad + raum + "." + raumDatenpunkte[datenpunktID].DpName;
          
                    tempraum = pfad + raumPfad + raum;
          
                     tempVal = (!aussensensor ? getState(temppfad).val : "");            // kein Aussensenosr: Lüftungsempfehlung auslesen, Aussensensor: Lüftungsempfehlung freilassen
          
                    if (tempVal === null) tempVal = "";
          
                    if(raumDatenpunkte[datenpunktID].DpName != "Lüftungsempfehlung") {
          
                        tempVal = parseFloat(tempVal);
          
                        tempVal = tempVal.toFixed(2);
          
                    } else {
          
                        if (tempVal === true) {
          
                            anyLueften = true;
          
                            countLueften = countLueften + 1;
          
                            raeumeLueftenListe.push(raum);
          
                        }
          
                    }
          
                    strJSONtemp = strJSONtemp + "\"" + raumDatenpunkte[datenpunktID].DpName + "\":\"" + tempVal + "\",";
          
          
          
                }
          
                strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
          
                strJSONtemp = strJSONtemp + "},";
          
             }
          
             strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
          
            strJSONfinal = strJSONfinal + strJSONtemp + "]";
          
            if (debug) log("strJSONfinal = " + strJSONfinal);
          
            if (debug) log("anyLueften = " + anyLueften + ", Anzahl Lüftungsempfehlungen: " + countLueften);
          
          
          
            setState(pfad + 'Lüften'                    , anyLueften);
          
            setState(pfad + 'Lüften_Liste'              , writeJson(raeumeLueftenListe));
          
            setState(pfad + 'Lüften_Anzahl'             , countLueften);
          
            setState(pfad + 'JSON'                      , strJSONfinal);
          
            setState(pfad + 'Aktualsierung'             , formatDate(new Date(), strDatum));
          
          
          
            if (debug) log("=========================================================");
          
            if (debug) log("Erzeugung JSON Ende");
          
            if (debug) log("=========================================================");
          
          }
          
          // eric2905 Ende ---------------------------------------------------------------
          
          function calcDelayed(raum, delay) {
          
            setTimeout(function () {
          
                calc(raum);
          
            }, delay || 0);
          
          }
          
          function creatJSONDelayed() {
          
            setTimeout(function () {
          
                createJSON();
          
            }, 4000); 
          
          }
          
          // Klimadaten in allen Räumen berechnen 
          
          function calcAll() {
          
            for (var raum in raeume) {
          
                calcDelayed(raum,delayRooms);       // Räume verzögerd nacheinander abarbeiten
          
            }
          
          }
          
          // finde anhand der Sensor ID einen zugeordneten Raum
          
          function findRoom(sensor) {
          
            for (var raum in raeume) {
          
                if (raeume[raum].Sensor_TEMP == sensor) return raum;
          
                if (raeume[raum].Sensor_HUM == sensor) return raum;
          
            }
          
            return null;
          
          }
          
          // Änderung eines Sensors (Temperatur oder Luftfeuchtigkeit)
          
          function valChange(obj) {
          
            var raumname = findRoom(obj.id);
          
            if (raumname) {
          
                if (debug) log('**Änderung:' + raumname + ": " + obj.id + ": " + obj.state.val + '**');
          
                calcDelayed(raumname,delayRooms);
          
            }
          
            // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
          
            // -----------------------------------------------------------------------------
          
            creatJSONDelayed();
          
            // eric2905 Ende ---------------------------------------------------------------
          
          }
          
          // Datenpunkte für alle Räume anlegen
          
          function createOn() {
          
            var dpId    = "";
          
             // TODO: Im Modus CONTROL über Objekte: Bei Änderung der OFFSETS, Temperatur_Minimum werden die Änderung erst nach Aktualisierung der Messwerte oder nach Zeit erneuert (auf on() reagieren) 
          
            var i =0;
          
             for (var raum in raeume) {
          
                 if (raeume[raum].Sensor_TEMP) {
          
                    dpId = raeume[raum].Sensor_TEMP;
          
                    i++;
          
                    on({id: dpId ,change:'ne'}, function (obj) {
          
                        valChange(obj);
          
                    });
          
                    if (debug) log("on: " + dpId + " angelegt.");
          
                }
          
                 if (raeume[raum].Sensor_HUM) {
          
                    dpId = raeume[raum].Sensor_HUM;
          
                    i++;
          
                    on({id: dpId ,change:'ne'}, function (obj) {
          
                        valChange(obj)
          
                    });
          
                    if (debug) log("on: " + dpId + " angelegt.");
          
                }
          
            }
          
            log("Subscriptions angelegt: " + i);
          
          }
          
          // Schedule
          
          // =============================================================================
          
          // Nach Zeit alle Räume abfragen
          
          schedule(cronStr, function () {
          
            calcAll();
          
            // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
          
            creatJSONDelayed();
          
            // eric2905 Ende ---------------------------------------------------------------
          
          });
          
          // main()
          
          // =============================================================================
          
          function main() {
          
            calcAll();
          
            setTimeout(calcAll,2000);
          
            // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
          
            creatJSONDelayed();
          
            // eric2905 Ende ---------------------------------------------------------------
          
          }
          
          // Skriptstart
          
          // =============================================================================
          
          createDp();                 // Datenpunkte anlegen
          
          setTimeout(createOn,2000);  // Subscriptions anlegen
          
          setTimeout(main,    4000);  // Zum Skriptstart ausführen
          

          T Offline
          T Offline
          TT-Tom
          schrieb am zuletzt editiert von
          #673

          @jojo58

          Das ist reiner Code, ich gehe davon aus hier hast du nix verändert. Prüfe nochmal deine Änderungen. Text muss in „“ und Zahlen haben ein Punkt statt Komma.

          Gruß Tom
          https://github.com/tt-tom17
          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

          NSPanel Script Wiki
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          NSPanel Adapter Wiki
          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

          1 Antwort Letzte Antwort
          0
          • JoJo58J JoJo58

            @tt-tom
            Das sind die Codezeilen.

                  // Fenster zu. Ein Ausschlusskriterium reicht für die Empfehlung "Fenster zu".
            
                  lueftenText = "Fenster zu:
            
            ";
            
                  if (b1ln) lueftenText += b1lnText + "
            
            ";
            
                  if (b2ln) lueftenText += b2lnText + "
            
            ";
            
                  if (b3ln) lueftenText += b3lnText + "
            
            ";
            
                  setState(idLueften, false);
            
                  setState(idLueftenHys,false);
            
                  if (debug) log(raum + ': **Empfehlung Fenster zu**');
            
              } else {
            
                  // Hysterese. Keine Änderung der bisherigen Empfehlung.
            
                  if (debug) log(raum + ': **im Bereich der Hysterese** (keine Änderung der Lüftungsempfehlung');
            
                  if (getState(idLueften).val === null) setState(idLueften,false); // noch keine Empfehlung vorhanden, "Fenster zu" empfehlen
            
                  lueftenText = "Hysterese, keine Änderung der Lüftungsempfehlung";
            
                  setState(idLueftenHys,true);
            
              }
            
              setState(idLueftenText, lueftenText);
            
               /* Erklärung Lüftungslogik (von Paul53)
            
              Lüften:
            
              wenn    abs. Aussenfeuchte  <   abs. Innenfeuchte     - Hysterese (Entfeuchten)
            
              UND     Aussentemperatur    <   Innentemperatur       - Hysterese (Kühlen)
            
              UND     Innentemperatur     >=  Raumtemperaturminimum + Hysterese (Auskühlschutz)
            
              */
            
               // lüften (und - Alle Bedingungen müssen erfüllt sein):
            
              // #1 - Entfeuchten:    Außenluft ist mind. (hysEntfeuchten + 0,1) trockener als Innen
            
              // #2 - Kühlen:         Außentemperatur ist mindestens 0,6 Grad kühler als innen TODO: im Winter auch?
            
              // #3 - Auskühlschutz:  Innentemperatur ist höher als die Mindesttemperatur
            
               // nicht lüften (oder):
            
              // #1 - Außenluft ist zu feucht
            
              // #2 - Außentemperatur zu warm
            
              // #3 - Innentemperatur niedriger als Mindestraumtemperatur
            
               if (debug) log(raum + ":" + cob(b3ln) + " Außenluft ist zu feucht (b3ln): ");
            
              if (debug) log(raum + ":" + cob(b2ln) + " Außentemperatur zu warm (b2ln): ");
            
              if (debug) log(raum + ":" + cob(b1ln) + " Außenluft ist zu feucht (b1ln): " + ": xa: " + xa + " >= (xi - 0.1) " + (xi - 0.1));
            
              if (debug) log(raum + ": Fenster zu (ein true reicht):");
            
            
            
              //if (debug) log(raum + ": b1lp: " + b1lp+ ", b2lp: " + b2lp+ ", b3lp: " + b3lp);
            
              if (debug) log(raum + ":" + cob(b3lp) + " Innentemperatur ist höher als die Mindesttemperatur (b3lp): ");
            
              if (debug) log(raum + ":" + cob(b2lp) + " Außentemperatur ist mindestens 0,6 Grad kühler als innen (b2lp): ");
            
              if (debug) log(raum + ":" + cob(b1lp) + " Außenluft ist mind. 0,4° trockener als Innen (b1lp):  xa: " + xa + " <= (xi - 0.4) " + (xi - 0.4));
            
              if (debug) log(raum + ": Lüftungsempfehlung (alle Bedingungen auf true):");
            
               if (debug) log(raum + ", ti:"+ti+", ta: "+ta+", xi:"+xi+", xa: "+xa+", mih:"+mih+", mit:"+mit,"info");
            
              if (debug) log("**------ " + raum + " ------- Aussensensor: " + aussen + " -----------**");
            
            }
            
            //eric2905 Erzeuge JSON und setzen Variablen "anyLueften" und "countLueften"
            
            // -----------------------------------------------------------------------------
            
            function createJSON() {
            
              // alle Daten im JSON werden als String abgelegt
            
              if (debug) log("=========================================================");
            
              if (debug) log("Erzeugung JSON Start");
            
              if (debug) log("=========================================================");
            
               var anyLueften          = false;
            
              var countLueften        = 0;
            
              var raeumeLueftenListe  = [];
            
            
            
              var temppfad = "";
            
              var tempraum = "";
            
              var tempVal = "";
            
              var strJSONfinal = "[";
            
              var strJSONtemp = "";
            
               for (var raum in raeume) {
            
                  strJSONtemp = strJSONtemp + "{";
            
                  strJSONtemp = strJSONtemp + "\"Raum\":\"" + raum + "\",";
            
                   for (var datenpunktID in raumDatenpunkte) {
            
            
            
                      // Aussensensor ja oder nein 
            
                      var aussensensor = false;
            
                      if (lueftenDp(datenpunktID)) {
            
                          if (!raeume[raum].Aussensensor) {
            
                              aussensensor = true;
            
                          }
            
                      }
            
            
            
                      temppfad = pfad + raumPfad + raum + "." + raumDatenpunkte[datenpunktID].DpName;
            
                      tempraum = pfad + raumPfad + raum;
            
                       tempVal = (!aussensensor ? getState(temppfad).val : "");            // kein Aussensenosr: Lüftungsempfehlung auslesen, Aussensensor: Lüftungsempfehlung freilassen
            
                      if (tempVal === null) tempVal = "";
            
                      if(raumDatenpunkte[datenpunktID].DpName != "Lüftungsempfehlung") {
            
                          tempVal = parseFloat(tempVal);
            
                          tempVal = tempVal.toFixed(2);
            
                      } else {
            
                          if (tempVal === true) {
            
                              anyLueften = true;
            
                              countLueften = countLueften + 1;
            
                              raeumeLueftenListe.push(raum);
            
                          }
            
                      }
            
                      strJSONtemp = strJSONtemp + "\"" + raumDatenpunkte[datenpunktID].DpName + "\":\"" + tempVal + "\",";
            
            
            
                  }
            
                  strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
            
                  strJSONtemp = strJSONtemp + "},";
            
               }
            
               strJSONtemp = strJSONtemp.substr(0, strJSONtemp.length - 1);
            
              strJSONfinal = strJSONfinal + strJSONtemp + "]";
            
              if (debug) log("strJSONfinal = " + strJSONfinal);
            
              if (debug) log("anyLueften = " + anyLueften + ", Anzahl Lüftungsempfehlungen: " + countLueften);
            
            
            
              setState(pfad + 'Lüften'                    , anyLueften);
            
              setState(pfad + 'Lüften_Liste'              , writeJson(raeumeLueftenListe));
            
              setState(pfad + 'Lüften_Anzahl'             , countLueften);
            
              setState(pfad + 'JSON'                      , strJSONfinal);
            
              setState(pfad + 'Aktualsierung'             , formatDate(new Date(), strDatum));
            
            
            
              if (debug) log("=========================================================");
            
              if (debug) log("Erzeugung JSON Ende");
            
              if (debug) log("=========================================================");
            
            }
            
            // eric2905 Ende ---------------------------------------------------------------
            
            function calcDelayed(raum, delay) {
            
              setTimeout(function () {
            
                  calc(raum);
            
              }, delay || 0);
            
            }
            
            function creatJSONDelayed() {
            
              setTimeout(function () {
            
                  createJSON();
            
              }, 4000); 
            
            }
            
            // Klimadaten in allen Räumen berechnen 
            
            function calcAll() {
            
              for (var raum in raeume) {
            
                  calcDelayed(raum,delayRooms);       // Räume verzögerd nacheinander abarbeiten
            
              }
            
            }
            
            // finde anhand der Sensor ID einen zugeordneten Raum
            
            function findRoom(sensor) {
            
              for (var raum in raeume) {
            
                  if (raeume[raum].Sensor_TEMP == sensor) return raum;
            
                  if (raeume[raum].Sensor_HUM == sensor) return raum;
            
              }
            
              return null;
            
            }
            
            // Änderung eines Sensors (Temperatur oder Luftfeuchtigkeit)
            
            function valChange(obj) {
            
              var raumname = findRoom(obj.id);
            
              if (raumname) {
            
                  if (debug) log('**Änderung:' + raumname + ": " + obj.id + ": " + obj.state.val + '**');
            
                  calcDelayed(raumname,delayRooms);
            
              }
            
              // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
            
              // -----------------------------------------------------------------------------
            
              creatJSONDelayed();
            
              // eric2905 Ende ---------------------------------------------------------------
            
            }
            
            // Datenpunkte für alle Räume anlegen
            
            function createOn() {
            
              var dpId    = "";
            
               // TODO: Im Modus CONTROL über Objekte: Bei Änderung der OFFSETS, Temperatur_Minimum werden die Änderung erst nach Aktualisierung der Messwerte oder nach Zeit erneuert (auf on() reagieren) 
            
              var i =0;
            
               for (var raum in raeume) {
            
                   if (raeume[raum].Sensor_TEMP) {
            
                      dpId = raeume[raum].Sensor_TEMP;
            
                      i++;
            
                      on({id: dpId ,change:'ne'}, function (obj) {
            
                          valChange(obj);
            
                      });
            
                      if (debug) log("on: " + dpId + " angelegt.");
            
                  }
            
                   if (raeume[raum].Sensor_HUM) {
            
                      dpId = raeume[raum].Sensor_HUM;
            
                      i++;
            
                      on({id: dpId ,change:'ne'}, function (obj) {
            
                          valChange(obj)
            
                      });
            
                      if (debug) log("on: " + dpId + " angelegt.");
            
                  }
            
              }
            
              log("Subscriptions angelegt: " + i);
            
            }
            
            // Schedule
            
            // =============================================================================
            
            // Nach Zeit alle Räume abfragen
            
            schedule(cronStr, function () {
            
              calcAll();
            
              // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
            
              creatJSONDelayed();
            
              // eric2905 Ende ---------------------------------------------------------------
            
            });
            
            // main()
            
            // =============================================================================
            
            function main() {
            
              calcAll();
            
              setTimeout(calcAll,2000);
            
              // eric2905 Aufruf eingebaut zum JSON erzeugen und Datenpunkt befüllen
            
              creatJSONDelayed();
            
              // eric2905 Ende ---------------------------------------------------------------
            
            }
            
            // Skriptstart
            
            // =============================================================================
            
            createDp();                 // Datenpunkte anlegen
            
            setTimeout(createOn,2000);  // Subscriptions anlegen
            
            setTimeout(main,    4000);  // Zum Skriptstart ausführen
            

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #674

            @jojo58 sagte: Das sind die Codezeilen.

            Offenbar ein Fehler beim C&P: Die "; müssen an das Zeilenende darüber.

            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

            JoJo58J HomoranH 2 Antworten Letzte Antwort
            0
            • paul53P paul53

              @jojo58 sagte: Das sind die Codezeilen.

              Offenbar ein Fehler beim C&P: Die "; müssen an das Zeilenende darüber.

              JoJo58J Offline
              JoJo58J Offline
              JoJo58
              schrieb am zuletzt editiert von JoJo58
              #675

              @paul53 Was meinst du mit "Fehler beim C&P:" ? In welcher Zeile muss das mit "; angepasst werden?

              Ich habs kapiert, du meinst Copy und Paste.

              Ich seh noch mal nach dem Original, wie das da aussieht. Das ist wohl überall verrutscht.

              Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
              Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
              Einfach ein tolles Hobby :-)

              1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @jojo58 sagte: Das sind die Codezeilen.

                Offenbar ein Fehler beim C&P: Die "; müssen an das Zeilenende darüber.

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #676

                @paul53 sagte in [Skript] Absolute Feuchte berechnen:

                @jojo58 sagte: Das sind die Codezeilen.

                Offenbar ein Fehler beim C&P: Die "; müssen an das Zeilenende darüber.

                da scheint sogar noch eine Leerzeile dazwischen zu sein. zu erkennen an der {1}

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                JoJo58J 1 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  TT-Tom
                  schrieb am zuletzt editiert von
                  #677

                  @paul53

                  Bin davon ausgegangen, das es im Original richtig ist und nur ein Darstellungsfehler am Handy.

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  1 Antwort Letzte Antwort
                  0
                  • HomoranH Homoran

                    @paul53 sagte in [Skript] Absolute Feuchte berechnen:

                    @jojo58 sagte: Das sind die Codezeilen.

                    Offenbar ein Fehler beim C&P: Die "; müssen an das Zeilenende darüber.

                    da scheint sogar noch eine Leerzeile dazwischen zu sein. zu erkennen an der {1}

                    JoJo58J Offline
                    JoJo58J Offline
                    JoJo58
                    schrieb am zuletzt editiert von JoJo58
                    #678

                    @homoran In der Version 0.6.4 fehlt dieses "select all", deswegen habe ich alles markiert und dann kopiert. Schätze das hängt damit zusammen.

                    Kann man dieses "select all" noch reinsetzten?

                    Das Original von oben hat 933 Zeilen und nach dem kopieren hab ich 1865 Zeilen. :astonished:

                    Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                    Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                    Einfach ein tolles Hobby :-)

                    JoJo58J paul53P 2 Antworten Letzte Antwort
                    0
                    • JoJo58J JoJo58

                      @homoran In der Version 0.6.4 fehlt dieses "select all", deswegen habe ich alles markiert und dann kopiert. Schätze das hängt damit zusammen.

                      Kann man dieses "select all" noch reinsetzten?

                      Das Original von oben hat 933 Zeilen und nach dem kopieren hab ich 1865 Zeilen. :astonished:

                      JoJo58J Offline
                      JoJo58J Offline
                      JoJo58
                      schrieb am zuletzt editiert von JoJo58
                      #679

                      @paul53 @Homoran Ich hab die 3 Zeilen geändert und die "" korrigiert.

                      Jetzt bekomme ich diese Fehlermeldung:

                      12:15:29.721	info	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                      12:15:29.725	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: TypeError: DP is not a constructor
                      12:15:29.726	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:861:15
                      12:15:29.726	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:1826:3
                      

                      Zeile 1826 habe ich nicht, hört bei 1825 auf und in Zeile 861 steht:

                      
                      var xdp     = new DP(hunn);
                      
                      var pbar    = luftdruck(hunn);          // individueller Luftdruck      in bar (eigene Höhe)
                      

                      Zumindest wurde unter Javascript der Ordner Raumklima und darunter der Ordner Skriptinfos angelegt.

                      Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                      Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                      Einfach ein tolles Hobby :-)

                      1 Antwort Letzte Antwort
                      0
                      • JoJo58J JoJo58

                        @homoran In der Version 0.6.4 fehlt dieses "select all", deswegen habe ich alles markiert und dann kopiert. Schätze das hängt damit zusammen.

                        Kann man dieses "select all" noch reinsetzten?

                        Das Original von oben hat 933 Zeilen und nach dem kopieren hab ich 1865 Zeilen. :astonished:

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #680

                        @jojo58 sagte: Das Original von oben hat 933 Zeilen und nach dem kopieren hab ich 1865 Zeilen.

                        Firefox? Nimm für das Forum einen anderen Browser.

                        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

                        JoJo58J 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @jojo58 sagte: Das Original von oben hat 933 Zeilen und nach dem kopieren hab ich 1865 Zeilen.

                          Firefox? Nimm für das Forum einen anderen Browser.

                          JoJo58J Offline
                          JoJo58J Offline
                          JoJo58
                          schrieb am zuletzt editiert von
                          #681

                          @paul53 Habe jetzt den Edge genommen. Der kopiert das besser, sind keine Leerzeilen dazwischen. Die 3 Zeilen mit den Zeilenumbruch zwischen den "" waren allerdings auch da falsch. Ist im Originalcode ab Zeile 723 genauso. Wenn ich das wieder korrigiere, dann bin ich wieder bei den Meldungen:

                          13:08:01.768	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: Error: Cannot find module 'dewpoint'
                          13:08:01.769	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:82:13
                          13:08:01.769	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:914:3
                          13:08:01.772	info	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                          13:08:01.774	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: TypeError: DP is not a constructor
                          13:08:01.774	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:431:15
                          13:08:01.774	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:914:3
                          

                          Jetzt meckert der zusätzlich, dass er das Module dewpoint nicht findet. Das Module ist aber installiert und vorher wurde es ja scheinbar auch gefunden.
                          Zeile 914 gibts wieder nicht, 913 ist die letzte Zeile mit:

                          setTimeout(main,    4000);  // Zum Skriptstart ausführen
                          

                          Und in 431 steht das mit var xdp:

                          // globale Skript-Variablen/Objekte
                          //------------------------------------------------------------------------------
                          var xdp     = new DP(hunn);
                          var pbar    = luftdruck(hunn);          // individueller Luftdruck      in bar (eigene Höhe)
                          

                          Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                          Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                          Einfach ein tolles Hobby :-)

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • JoJo58J JoJo58

                            @paul53 Habe jetzt den Edge genommen. Der kopiert das besser, sind keine Leerzeilen dazwischen. Die 3 Zeilen mit den Zeilenumbruch zwischen den "" waren allerdings auch da falsch. Ist im Originalcode ab Zeile 723 genauso. Wenn ich das wieder korrigiere, dann bin ich wieder bei den Meldungen:

                            13:08:01.768	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: Error: Cannot find module 'dewpoint'
                            13:08:01.769	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:82:13
                            13:08:01.769	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:914:3
                            13:08:01.772	info	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                            13:08:01.774	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen: TypeError: DP is not a constructor
                            13:08:01.774	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:431:15
                            13:08:01.774	error	javascript.0 (7373) at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:914:3
                            

                            Jetzt meckert der zusätzlich, dass er das Module dewpoint nicht findet. Das Module ist aber installiert und vorher wurde es ja scheinbar auch gefunden.
                            Zeile 914 gibts wieder nicht, 913 ist die letzte Zeile mit:

                            setTimeout(main,    4000);  // Zum Skriptstart ausführen
                            

                            Und in 431 steht das mit var xdp:

                            // globale Skript-Variablen/Objekte
                            //------------------------------------------------------------------------------
                            var xdp     = new DP(hunn);
                            var pbar    = luftdruck(hunn);          // individueller Luftdruck      in bar (eigene Höhe)
                            
                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #682

                            @jojo58 sagte: Und in 431 steht das mit var xdp:

                            Das ist offenbar ein Folgefehler von

                            Error: Cannot find module 'dewpoint'
                            

                            Das NPM-Modul "dewpoint" ist in der Konfiguration der Javascript-Instanz eingetragen?

                            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

                            JoJo58J BananaJoeB 2 Antworten Letzte Antwort
                            1
                            • paul53P paul53

                              @jojo58 sagte: Und in 431 steht das mit var xdp:

                              Das ist offenbar ein Folgefehler von

                              Error: Cannot find module 'dewpoint'
                              

                              Das NPM-Modul "dewpoint" ist in der Konfiguration der Javascript-Instanz eingetragen?

                              JoJo58J Offline
                              JoJo58J Offline
                              JoJo58
                              schrieb am zuletzt editiert von
                              #683

                              @paul53 Ja klar, habe es hinzugefügt bevor ich das Script überhaupt kopiert hatte. Bei den anderen Versuchen wurde das ja auch nicht bemängelt. Jetzt habe ich das Modul nochmal gelöscht und neu hinzugefügt.

                              Und es funktioniert :+1: :+1: :+1:

                              Man war das eine schwere Geburt... Aber jetzt bin ich begeistert :grin:

                              @paul53 @Homoran Vielen Dank für eure Hilfe!!!

                              Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                              Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                              Einfach ein tolles Hobby :-)

                              1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @jojo58 sagte: Und in 431 steht das mit var xdp:

                                Das ist offenbar ein Folgefehler von

                                Error: Cannot find module 'dewpoint'
                                

                                Das NPM-Modul "dewpoint" ist in der Konfiguration der Javascript-Instanz eingetragen?

                                BananaJoeB Online
                                BananaJoeB Online
                                BananaJoe
                                Most Active
                                schrieb am zuletzt editiert von
                                #684

                                @paul53 sagte in [Skript] Absolute Feuchte berechnen:

                                @jojo58 sagte: Und in 431 steht das mit var xdp:

                                Das ist offenbar ein Folgefehler von

                                Error: Cannot find module 'dewpoint'
                                

                                Das NPM-Modul "dewpoint" ist in der Konfiguration der Javascript-Instanz eingetragen?

                                Hatte ich das nicht extra umgebaut das dieses Modul eben nicht mehr gebraucht wird? Seit Version 0.6.6 braucht es die nicht mehr. https://forum.iobroker.net/post/920343

                                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                HomoranH 1 Antwort Letzte Antwort
                                0
                                • BananaJoeB BananaJoe

                                  @paul53 sagte in [Skript] Absolute Feuchte berechnen:

                                  @jojo58 sagte: Und in 431 steht das mit var xdp:

                                  Das ist offenbar ein Folgefehler von

                                  Error: Cannot find module 'dewpoint'
                                  

                                  Das NPM-Modul "dewpoint" ist in der Konfiguration der Javascript-Instanz eingetragen?

                                  Hatte ich das nicht extra umgebaut das dieses Modul eben nicht mehr gebraucht wird? Seit Version 0.6.6 braucht es die nicht mehr. https://forum.iobroker.net/post/920343

                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #685

                                  @bananajoe und wo ist dieser code?
                                  dann würde ich den Startpost bearbeiten und dorthin verlinken.

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  paul53P 1 Antwort Letzte Antwort
                                  0
                                  • HomoranH Homoran

                                    @bananajoe und wo ist dieser code?
                                    dann würde ich den Startpost bearbeiten und dorthin verlinken.

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #686

                                    @homoran sagte: wo ist dieser code?

                                    Die letzte Version ist wohl 0.6.8.

                                    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

                                    HomoranH 1 Antwort Letzte Antwort
                                    0
                                    • paul53P paul53

                                      @homoran sagte: wo ist dieser code?

                                      Die letzte Version ist wohl 0.6.8.

                                      HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #687

                                      @paul53 DANKE!

                                      aber!
                                      der erste Beitrag lässt sich nicht mehr editieren. Stammt noch aus der alten Forensoftware. Hier ist der Inhalt zu groß

                                      Meint ihr ich könnte die alten Skript rauswerfen, oder sollten sie als Historie drin bleiben?

                                      Ich werdenoch was versuchen, schaff ich aber heute nicht mehr

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      JoJo58J 1 Antwort Letzte Antwort
                                      1
                                      • HomoranH Homoran

                                        @paul53 DANKE!

                                        aber!
                                        der erste Beitrag lässt sich nicht mehr editieren. Stammt noch aus der alten Forensoftware. Hier ist der Inhalt zu groß

                                        Meint ihr ich könnte die alten Skript rauswerfen, oder sollten sie als Historie drin bleiben?

                                        Ich werdenoch was versuchen, schaff ich aber heute nicht mehr

                                        JoJo58J Offline
                                        JoJo58J Offline
                                        JoJo58
                                        schrieb am zuletzt editiert von
                                        #688

                                        @homoran @paul53
                                        Guten Morgen,

                                        die Version 0.6.8 habe ich nicht gesehen. Ich muss auch zugeben, das ich nicht alle 660 Beiträge gelesen habe. Ich habe natürlich die aktuelle Version ausprobiert und die lief sofort problemlos.

                                        Gibt es nicht eine Möglichkeit, am Anfang solcher Beiträge eine Art Inhaltsverzeichnis über die geposteten Versionen zu erstellen? Ist nur eine Frage und keine Kritik. Bin ja froh das es solche Skripts überhaupt und vor allem auch noch kostenlos, gibt.

                                        Bin mal wieder begeistert, was kluge Kopfe mit JavaScript alles möglich machen. Vielen Dank an alle Beteiligten.

                                        Gruß Johannes

                                        Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                                        Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                                        Einfach ein tolles Hobby :-)

                                        HomoranH 1 Antwort Letzte Antwort
                                        0
                                        • JoJo58J JoJo58

                                          @homoran @paul53
                                          Guten Morgen,

                                          die Version 0.6.8 habe ich nicht gesehen. Ich muss auch zugeben, das ich nicht alle 660 Beiträge gelesen habe. Ich habe natürlich die aktuelle Version ausprobiert und die lief sofort problemlos.

                                          Gibt es nicht eine Möglichkeit, am Anfang solcher Beiträge eine Art Inhaltsverzeichnis über die geposteten Versionen zu erstellen? Ist nur eine Frage und keine Kritik. Bin ja froh das es solche Skripts überhaupt und vor allem auch noch kostenlos, gibt.

                                          Bin mal wieder begeistert, was kluge Kopfe mit JavaScript alles möglich machen. Vielen Dank an alle Beteiligten.

                                          Gruß Johannes

                                          HomoranH Nicht stören
                                          HomoranH Nicht stören
                                          Homoran
                                          Global Moderator Administrators
                                          schrieb am zuletzt editiert von
                                          #689

                                          @jojo58 sagte in [Skript] Absolute Feuchte berechnen:

                                          Gibt es nicht eine Möglichkeit, am Anfang solcher Beiträge eine Art Inhaltsverzeichnis über die geposteten Versionen zu erstellen?

                                          as i told

                                          @homoran sagte in [Skript] Absolute Feuchte berechnen:

                                          @bananajoe und wo ist dieser code?
                                          dann würde ich den Startpost bearbeiten und dorthin verlinken.

                                          @homoran sagte in [Skript] Absolute Feuchte berechnen:

                                          @paul53 DANKE!

                                          aber!
                                          der erste Beitrag lässt sich nicht mehr editieren. Stammt noch aus der alten Forensoftware. Hier ist der Inhalt zu groß

                                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                          JoJo58J 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          828

                                          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