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.4k 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.
  • steffen rothS steffen roth

    Hallo zusammen,

    es ist mir ja ein wenig peinlich aber ich bringe es leider nicht auf die Kette.
    Folgendes:
    Ich habe das wunderbare Raumklima Script am laufen.
    Ich habe eine dezentrale Lüftungsanlage von Lunos.
    Die Schalter habe ich durch shellys ersetzt.
    AktueScreenshot_2023-06-25-10-06-59-570-edit_com.android.chrome.jpg ll Steuer ich die Lüftung über blockly siehe Bild
    Warum über blockly weil ich zu doof bin über Java 🙈 und das als Programmierer 🙈

    Kann mir da jemand helfen wie ich es direkt im Raumklima Script einbinde.

    Grüße
    Steffen

    Screenshot_2023-06-25-10-06-59-570-edit_com.android.chrome.jpg

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

    @steffen-roth sagte: Steuer ich die Lüftung über blockly

    Nimm den DP "Lüftungsempfehlung" als Trigger auf "wurde geändert":

    Blockly_temp.JPG

    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

    B 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @steffen-roth sagte: Steuer ich die Lüftung über blockly

      Nimm den DP "Lüftungsempfehlung" als Trigger auf "wurde geändert":

      Blockly_temp.JPG

      B Offline
      B Offline
      Biele
      schrieb am zuletzt editiert von
      #667

      @paul53 Super Danke....
      Jetzt hab ich noch eine spezielle Frage.

      Bei meiner Lüftung gibt es eine Sommerlüften-Funktion.
      Dazu müssen beide Schalter auf an sein, durch 1 x Schalten aus/an wird die Sommerluftfunktion für 8h gestartet.

      Wie kann ich sowas in Blockly machen? Steh komplett auf dem Schlauch.

      Grüße

      Steffen

      1 Antwort Letzte Antwort
      0
      • JoJo58J Offline
        JoJo58J Offline
        JoJo58
        schrieb am zuletzt editiert von
        #668

        @paul53 Guten Morgen,

        ich hab die aktuelle Skriptversion "Raumklima - v0.6.4" genommen und die Räume sowie Aussen entsprechend abgeändert. Wenn ich jetzt das Script starte, bekomme ich folgende Fehlermeldung:

        09:11:49.559	info	javascript.0 (7373) Start javascript script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen
        09:11:49.562	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen compile failed: at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:1445
        

        Ich gehe davon aus das mit 1445 die Zeilennummer vom Script gemeint ist, oder? Dort steht bei mir:

               // Fenster zu. Ein Ausschlusskriterium reicht für die Empfehlung "Fenster zu".
        
               lueftenText = "Fenster zu:
        ";
        

        Woran kann das liegen? Kann mir da jemand bitte weiterhelfen?

        Noch eine Info. Alle Instanzen sind bei mir aktuell und nodejs ist die Version 18.16.1 und Javascript die v7.0.3.

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

        T 1 Antwort Letzte Antwort
        0
        • JoJo58J JoJo58

          @paul53 Guten Morgen,

          ich hab die aktuelle Skriptversion "Raumklima - v0.6.4" genommen und die Räume sowie Aussen entsprechend abgeändert. Wenn ich jetzt das Script starte, bekomme ich folgende Fehlermeldung:

          09:11:49.559	info	javascript.0 (7373) Start javascript script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen
          09:11:49.562	error	javascript.0 (7373) script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen compile failed: at script.js.VIS_Scripte.Luftfeuchtigkeit_berechnen:1445
          

          Ich gehe davon aus das mit 1445 die Zeilennummer vom Script gemeint ist, oder? Dort steht bei mir:

                 // Fenster zu. Ein Ausschlusskriterium reicht für die Empfehlung "Fenster zu".
          
                 lueftenText = "Fenster zu:
          ";
          

          Woran kann das liegen? Kann mir da jemand bitte weiterhelfen?

          Noch eine Info. Alle Instanzen sind bei mir aktuell und nodejs ist die Version 18.16.1 und Javascript die v7.0.3.

          Gruß Johannes

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

          @jojo58

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

          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

            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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          689

                                          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