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. Berechnung der abs. Luftfeuchte - komisches Verhalten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    552

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    622

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Berechnung der abs. Luftfeuchte - komisches Verhalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 4 Kommentatoren 981 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • dontobiD Offline
    dontobiD Offline
    dontobi
    schrieb am zuletzt editiert von dontobi
    #1

    Guten Morgen zusammen

    Ich benötige eure Hilfe, denn ich komme nicht mehr weiter. Bevor ich zu meinem Problem komme, erst einmal der Ist-Zustand und eine kurze Erläuterung dazu.

    Ich habe bis vor zwei Wochen den Accuweather Adapter verwendet, um die Wetterdaten und eine Berechnung der absoluten Luftfeuchte in meiner Lovelace UI anzeigen zu lassen. Da die Anzeige der Accuweather Daten im Lovelace nicht einwandfrei funktionierte, bin ich nun auf den Adapter DasWetter umgestiegen. Mit diesem klappt die Wetteranzeige im Lovelace einwandfrei, aber die Berechnung der absoluten Luftfeuchte klappt aus irgendeinem Grund nicht vernünftig.

    Für diese Berechnung habe ich folgenden Code verwendet:

    on({id: new RegExp('daswetter.0.NextHours.Location_1.Day_1.current.temp_value' + "|" + 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value'), change: "ne"}, function (obj) {
        setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity", Math.round(((6.112 * Math.pow(Math.E, ((17.67 * getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val) / (getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val + 243.5))) * getState("daswetter.0.NextHours.Location_1.Day_1.current.humidity_value").val * 2.1674)) / (273.15 + getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val) * 100) / 100, 5000, false);
    });
    

    Jedoch wurde dann die Variable "javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity" mit einem unplausiblen Wert beschrieben. Ich habe dann rum gerätselt, was es sein könnte und am Ende kann es nur sein, dass die an die BErechnung übergebenen Werte nicht richtig sind.

    175470c9-31fb-4df4-a0a6-6f0880e6986a-image.png
    73b36c38-fe99-4971-b365-4481b1982dd4-image.png
    Wie man sehen kann, steht der Wert der Variable auf 3,45g/m³ und die Ausgangswerte von DasWetter auf 70% bzw. 20°C. Wenn ich mit diesem Wert auf jeweils einen der Ausgangswerte zurück rechne, kommt folgendes raus.
    cb2c78ac-48a8-4e8a-8b0e-1e32972c2c6c-image.png
    Bei dieser Rechnung wurde 3,45g/m³ und 20°C eingegeben und es würde eine rel. Luftfeuchte von 20% raus kommen, was unrealistisch ist.

    Ich habe dann die Werte von DasWetter mal mit einem 5 Sekunden Delay in eine neue Variable geschrieben (siehe Code unten), aber das Problem bleibt das gleich. Wobei ich nicht weiß, wann das verzögerte schreiben einer Variable den Wert ermittelt... direkt beim ausführen des Befehls oder erst nachdem das Delay abgelaufen ist?!?

    Kurios wird es aber, wenn ich die Variable "javascript.0.Luftfeuchtigkeit.OutdoorTemperature" erneut auf die Temperatur schreibe (in diesem Fall steht vorher 20 drin und ich setze noch einmal die 20), wird die Berechnung sauber durchgeführt. Wenn ich das ganze mit der rel. Luftfeuchte mache, bleibt alles beim alten. Also ist irgendetwas mit dem Wert der Temperatur im argen.
    e72f7765-2f19-476f-9001-79ce59f320ee-image.png

    Aber hier nun der Code den ich aktuell im ioBroker drin habe. Vielleicht erkennt ja jemand das Problem und kann mir helfen.

    createState(`javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity`, { name: `Absolute Luftfeuchtigkeit`, type: `number`, read: true, write: false, unit: `g/m³` });
    createState(`javascript.0.Luftfeuchtigkeit.OutdoorTemperature`, { name: `Temperatur Außen`, type: `number`, read: true, write: true, default: `0`, min: `-30`, max: `40` });
    createState(`javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity`, { name: `Rel. Luftfeuchte Außen`, type: `number`, read: true, write: true, default: `0`, min: `1`, max: `100` });
    on({id: new RegExp('daswetter.0.NextHours.Location_1.Day_1.current.humidity_value' + "|" + 'daswetter.0.NextHours.Location_1.Day_1.current.temp_value'), change: "ne"}, function (obj) {
        setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorTemperature", getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val, 5000, false);
        setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity", getState("daswetter.0.NextHours.Location_1.Day_1.current.humidity_value").val, 5000, false);
    });
    on({id: new RegExp('javascript.0.Luftfeuchtigkeit.OutdoorTemperature' + "|" + 'javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity'), change: "ne"}, function (obj) {
        setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity", Math.round(((6.112 * Math.pow(Math.E, ((17.67 * getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val) / (getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val + 243.5))) * getState("javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity").val * 2.1674)) / (273.15 + getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val) * 100) / 100, 5000, false);
    });
    

    Und wie gesagt... mit dem ersten Code (lediglich die Variablen von Accuweather), hat die Berechnung einwandfrei funktioniert.

    Gruß aus dem Rheinland.
    Tobi

    Smart Home Zentrale: Raspberry Pi 4 4GB
    Meine Homepage: https://www.myHome.zone

    HomoranH 1 Antwort Letzte Antwort
    0
    • dontobiD dontobi

      Guten Morgen zusammen

      Ich benötige eure Hilfe, denn ich komme nicht mehr weiter. Bevor ich zu meinem Problem komme, erst einmal der Ist-Zustand und eine kurze Erläuterung dazu.

      Ich habe bis vor zwei Wochen den Accuweather Adapter verwendet, um die Wetterdaten und eine Berechnung der absoluten Luftfeuchte in meiner Lovelace UI anzeigen zu lassen. Da die Anzeige der Accuweather Daten im Lovelace nicht einwandfrei funktionierte, bin ich nun auf den Adapter DasWetter umgestiegen. Mit diesem klappt die Wetteranzeige im Lovelace einwandfrei, aber die Berechnung der absoluten Luftfeuchte klappt aus irgendeinem Grund nicht vernünftig.

      Für diese Berechnung habe ich folgenden Code verwendet:

      on({id: new RegExp('daswetter.0.NextHours.Location_1.Day_1.current.temp_value' + "|" + 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value'), change: "ne"}, function (obj) {
          setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity", Math.round(((6.112 * Math.pow(Math.E, ((17.67 * getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val) / (getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val + 243.5))) * getState("daswetter.0.NextHours.Location_1.Day_1.current.humidity_value").val * 2.1674)) / (273.15 + getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val) * 100) / 100, 5000, false);
      });
      

      Jedoch wurde dann die Variable "javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity" mit einem unplausiblen Wert beschrieben. Ich habe dann rum gerätselt, was es sein könnte und am Ende kann es nur sein, dass die an die BErechnung übergebenen Werte nicht richtig sind.

      175470c9-31fb-4df4-a0a6-6f0880e6986a-image.png
      73b36c38-fe99-4971-b365-4481b1982dd4-image.png
      Wie man sehen kann, steht der Wert der Variable auf 3,45g/m³ und die Ausgangswerte von DasWetter auf 70% bzw. 20°C. Wenn ich mit diesem Wert auf jeweils einen der Ausgangswerte zurück rechne, kommt folgendes raus.
      cb2c78ac-48a8-4e8a-8b0e-1e32972c2c6c-image.png
      Bei dieser Rechnung wurde 3,45g/m³ und 20°C eingegeben und es würde eine rel. Luftfeuchte von 20% raus kommen, was unrealistisch ist.

      Ich habe dann die Werte von DasWetter mal mit einem 5 Sekunden Delay in eine neue Variable geschrieben (siehe Code unten), aber das Problem bleibt das gleich. Wobei ich nicht weiß, wann das verzögerte schreiben einer Variable den Wert ermittelt... direkt beim ausführen des Befehls oder erst nachdem das Delay abgelaufen ist?!?

      Kurios wird es aber, wenn ich die Variable "javascript.0.Luftfeuchtigkeit.OutdoorTemperature" erneut auf die Temperatur schreibe (in diesem Fall steht vorher 20 drin und ich setze noch einmal die 20), wird die Berechnung sauber durchgeführt. Wenn ich das ganze mit der rel. Luftfeuchte mache, bleibt alles beim alten. Also ist irgendetwas mit dem Wert der Temperatur im argen.
      e72f7765-2f19-476f-9001-79ce59f320ee-image.png

      Aber hier nun der Code den ich aktuell im ioBroker drin habe. Vielleicht erkennt ja jemand das Problem und kann mir helfen.

      createState(`javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity`, { name: `Absolute Luftfeuchtigkeit`, type: `number`, read: true, write: false, unit: `g/m³` });
      createState(`javascript.0.Luftfeuchtigkeit.OutdoorTemperature`, { name: `Temperatur Außen`, type: `number`, read: true, write: true, default: `0`, min: `-30`, max: `40` });
      createState(`javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity`, { name: `Rel. Luftfeuchte Außen`, type: `number`, read: true, write: true, default: `0`, min: `1`, max: `100` });
      on({id: new RegExp('daswetter.0.NextHours.Location_1.Day_1.current.humidity_value' + "|" + 'daswetter.0.NextHours.Location_1.Day_1.current.temp_value'), change: "ne"}, function (obj) {
          setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorTemperature", getState("daswetter.0.NextHours.Location_1.Day_1.current.temp_value").val, 5000, false);
          setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity", getState("daswetter.0.NextHours.Location_1.Day_1.current.humidity_value").val, 5000, false);
      });
      on({id: new RegExp('javascript.0.Luftfeuchtigkeit.OutdoorTemperature' + "|" + 'javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity'), change: "ne"}, function (obj) {
          setStateDelayed("javascript.0.Luftfeuchtigkeit.OutdoorAbsoluteHumidity", Math.round(((6.112 * Math.pow(Math.E, ((17.67 * getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val) / (getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val + 243.5))) * getState("javascript.0.Luftfeuchtigkeit.OutdoorRelativeHumidity").val * 2.1674)) / (273.15 + getState("javascript.0.Luftfeuchtigkeit.OutdoorTemperature").val) * 100) / 100, 5000, false);
      });
      

      Und wie gesagt... mit dem ersten Code (lediglich die Variablen von Accuweather), hat die Berechnung einwandfrei funktioniert.

      Gruß aus dem Rheinland.
      Tobi

      HomoranH Offline
      HomoranH Offline
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von Homoran
      #2

      @dontobi sagte in Berechnung der abs. Luftfeuchte - komisches Verhalten:

      Bei dieser Rechnung wurde 3,45g/m³ und 20°C eingegeben und es würde eine rel. Luftfeuchte von 20% raus kommen, was unrealistisch ist.

      Ist es nicht.
      3,45g sind unrealistisch.

      Ich kann mich nicht erinnern, das es jemals unter 7g war und höchstens bei 17g.
      Screenshot_20200802-082947_Chrome.jpg

      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 -

      dontobiD Basti97B 2 Antworten Letzte Antwort
      0
      • HomoranH Homoran

        @dontobi sagte in Berechnung der abs. Luftfeuchte - komisches Verhalten:

        Bei dieser Rechnung wurde 3,45g/m³ und 20°C eingegeben und es würde eine rel. Luftfeuchte von 20% raus kommen, was unrealistisch ist.

        Ist es nicht.
        3,45g sind unrealistisch.

        Ich kann mich nicht erinnern, das es jemals unter 7g war und höchstens bei 17g.
        Screenshot_20200802-082947_Chrome.jpg

        dontobiD Offline
        dontobiD Offline
        dontobi
        schrieb am zuletzt editiert von
        #3

        @Homoran Danke für die Antwort. Aber mir ist klar, dass 3,45 unrealistisch ist. Deshalb sind ja auch die 20% unrealistisch. Richtig wäre die Angabe im unteren Bild (nachdem ich die 20 neu eingegeben habe).

        Smart Home Zentrale: Raspberry Pi 4 4GB
        Meine Homepage: https://www.myHome.zone

        Jey CeeJ 1 Antwort Letzte Antwort
        0
        • dontobiD dontobi

          @Homoran Danke für die Antwort. Aber mir ist klar, dass 3,45 unrealistisch ist. Deshalb sind ja auch die 20% unrealistisch. Richtig wäre die Angabe im unteren Bild (nachdem ich die 20 neu eingegeben habe).

          Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          schrieb am zuletzt editiert von Jey Cee
          #4

          @dontobi die Lösung ist ganz einfach: Die 20 sind keine Zahl sondern ein String.
          Das ist ein Fehler im Adapter.
          Du kannst dem entgegen wirken in dem du mit parseInt() den String in eine Zahl umwandelst.

          Edit: Ich hab dazu ein issue aufgemacht.

          Persönlicher Support
          Spenden -> paypal.me/J3YC33

          1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @dontobi sagte in Berechnung der abs. Luftfeuchte - komisches Verhalten:

            Bei dieser Rechnung wurde 3,45g/m³ und 20°C eingegeben und es würde eine rel. Luftfeuchte von 20% raus kommen, was unrealistisch ist.

            Ist es nicht.
            3,45g sind unrealistisch.

            Ich kann mich nicht erinnern, das es jemals unter 7g war und höchstens bei 17g.
            Screenshot_20200802-082947_Chrome.jpg

            Basti97B Offline
            Basti97B Offline
            Basti97
            Most Active
            schrieb am zuletzt editiert von
            #5

            @Homoran Wie machst du das mit den Pfeilen bezüglich Steigung oder Fallen der Temperaturwertes. Muss man bei dem Pfeil nur den Temperatur Datenpunkt angeben. Oder braucht man für die Auswertung. Ob dieser gestiegen (winkel des Pfeiles) ist ein zweiten Datenpunkt.

            Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

            HomoranH 1 Antwort Letzte Antwort
            0
            • Basti97B Basti97

              @Homoran Wie machst du das mit den Pfeilen bezüglich Steigung oder Fallen der Temperaturwertes. Muss man bei dem Pfeil nur den Temperatur Datenpunkt angeben. Oder braucht man für die Auswertung. Ob dieser gestiegen (winkel des Pfeiles) ist ein zweiten Datenpunkt.

              HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @Basti97 das sind Widgets mit "indicator"
              Die sind aber nur korrekt, wenn der View offen bleibt.

              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 -

              Basti97B 1 Antwort Letzte Antwort
              0
              • HomoranH Homoran

                @Basti97 das sind Widgets mit "indicator"
                Die sind aber nur korrekt, wenn der View offen bleibt.

                Basti97B Offline
                Basti97B Offline
                Basti97
                Most Active
                schrieb am zuletzt editiert von
                #7

                @Homoran Aso Danke:+1:

                Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

                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

                391

                Online

                32.6k

                Benutzer

                81.9k

                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