Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Skript] Absolute Feuchte berechnen

NEWS

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

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

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

[Skript] Absolute Feuchte berechnen

Geplant Angeheftet Gesperrt Verschoben JavaScript
740 Beiträge 96 Kommentatoren 224.9k Aufrufe 81 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Stadtschloss

    @boriswerner Vielen Dank für das Script! Sehe ich das richtig, dass die Lüftungsempfehlung zum Beispiel. im Wohnzimmer nur angestoßen wird, wenn sich das Thermometer neue Werte liefert?
    Würde es ggf. Sinn machen, wenn auch die Lüftungsempfung neu berechnet wird (für alle Räume), wenn der Außen-Temperatursensor neue Daten liefert?

    @paul53 Wie kommen die 0,6 Grad zu Stande? Haben diese einen Physikalischen Hintergrund? Oder kann ich diesen reduzieren?

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

    @stadtschloss sagte: Wie kommen die 0,6 Grad zu Stande? Haben diese einen Physikalischen Hintergrund? Oder kann ich diesen reduzieren?

    Sie berücksichtigen, dass Messwerterfassung immer toleranzbehaftet ist und trotzdem sicher gekühlt wird. Bei genaueren Messungen kann man auch reduzieren. Ich verwende 0,4 K bei 0,3 K Hysterese (aber anderes Skript).

    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

    1 Antwort Letzte Antwort
    1
    • steffen rothS Offline
      steffen rothS Offline
      steffen roth
      schrieb am zuletzt editiert von
      #665

      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 1 Antwort Letzte Antwort
      0
      • 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 Offline
                            HomoranH Offline
                            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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          820

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe