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

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

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

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

[Skript] Absolute Feuchte berechnen

Geplant Angeheftet Gesperrt Verschoben JavaScript
740 Beiträge 96 Kommentatoren 224.5k 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.
  • 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 Online
      JoJo58J Online
      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 Online
            JoJo58J Online
            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 Online
                  JoJo58J Online
                  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 Online
                    JoJo58J Online
                    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 Online
                        JoJo58J Online
                        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 Online
                            JoJo58J Online
                            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 Offline
                              BananaJoeB Offline
                              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 Online
                                      JoJo58J Online
                                      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
                                        • HomoranH Homoran

                                          @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ß

                                          JoJo58J Online
                                          JoJo58J Online
                                          JoJo58
                                          schrieb am zuletzt editiert von
                                          #690

                                          @homoran @paul53
                                          Guten Morgen,
                                          ich hab dann doch noch mal 2 Fragen zu dem Script, aber eines nach dem Anderen. Das Script legt ja den Datenpunkt "0_userdata.0.Raumklima.JSON" an und befüllt diesen mit den Räumen und Außensensoren. Bei mir steht bei allen Räumen bei den DETAILS_Lueftungsempfehlung ein NaN. Woran kann das liegen. Hier mal das Beispiel für die Küche:

                                            {
                                              "Raum": "Kueche",
                                              "Feuchtegehalt_Absolut": "9.60",
                                              "relative_Luftfeuchtigkeit": "53.83",
                                              "Taupunkt": "13.40",
                                              "Temperatur": "23.26",
                                              "DETAILS.Enthalpie": "47.82",
                                              "DETAILS.Sättigungsdampfdruck": "28.54",
                                              "DETAILS.Dampfdruck": "15.36",
                                              "Dampfgewicht": "11.23",
                                              "DETAILS.Dampfgewicht_maximal": "20.86",
                                              "Lüftungsempfehlung": "false",
                                              "DETAILS_Lueftungsempfehlung.Lüften_b1_Entfeuchten": "NaN",
                                              "DETAILS_Lueftungsempfehlung.Lüften_b2_Kühlen": "NaN",
                                              "DETAILS_Lueftungsempfehlung.Lüften_b3_Auskühlschutz": "NaN",
                                              "DETAILS_Lueftungsempfehlung.Lüften_b4_Raumfeuchte": "NaN",
                                              "DETAILS_Lueftungsempfehlung.Lüften_Hysterese": "NaN",
                                              "DETAILS_Lueftungsempfehlung.Lüftungsempfehlung_Beschreibung": "Fenster zu:<br>Entfeuchten:    Außenluft ist zu feucht<br>"
                                            }
                                          

                                          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 :-)

                                          P 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

                                          712

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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