Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Skript] Absolute Feuchte berechnen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Skript] Absolute Feuchte berechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @D3ltoroxp last edited by

      @d3ltoroxp sagte: Warum wird er dann immer noch als Räume zum lüften angezeigt ?

      ... weil im Winter die Außenluft immer trockener ist als die Raumluft und die Raumtemperatur höher als die Minimaltemperatur (15 °C) ist.
      Meine Anmerkung zu defaultMaxFeu hast du gesehen?

      D3ltoroxp 1 Reply Last reply Reply Quote 0
      • D3ltoroxp
        D3ltoroxp @paul53 last edited by

        @paul53 Hm irgendwie raff ich das nicht so ganz. Ich dachte immer wenn ich zwischen min und max bin was ich ja wäre, wird der Raum nicht mehr aufgeführt. Default min / max ist doch genau das was der Sensor in % anzeigt oder ?

        Wenn ich im Winter auf max 40 gehe, dann wird der Raum doch permanent zum lüften angezeigt oder ? Die 40% erreiche ich nie.

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @D3ltoroxp last edited by

          @d3ltoroxp sagte: Die 40% erreiche ich nie.

          Erst, wenn defaultMinFeuchte unterschritten wird, ist die Luft zu trocken und es sollte nicht mehr gelüftet werden. defaultMaxFeuchte ist für die Hysterese.

          D3ltoroxp 1 Reply Last reply Reply Quote 0
          • D3ltoroxp
            D3ltoroxp @paul53 last edited by

            @paul53 Also müsste ich minFeuchte auf z.b. 55% stellen, das es bei 50% nicht mehr auftaucht. Ich teste mal. Danke dir.

            1 Reply Last reply Reply Quote 0
            • D3ltoroxp
              D3ltoroxp last edited by D3ltoroxp

              Gibt es die Möglichkeit die Liste mit Räumen die gelüftet werden müssen, anders dar zu stellen ?`

              c3d17f79-82b2-4018-89f2-3e6aa1a7d9c9-image.png

              auflisten lassen kann ? Wenn ich das richtig sehe, sollte er auch alle 30 min prüfen. Oft steht bei mir, das Datum vom Vortag, wenn ich auf den Datenpunkt schaue.

              Leider scheint sich das Script nicht neu zu starten bzw die Prüfung all halbe Stunde auszuführen.

              03f4f644-8bf0-494b-995e-1eedb54e0259-image.png

              var cronStr         = "*/30 * * * *";
              
              JoJo58 1 Reply Last reply Reply Quote 0
              • JoJo58
                JoJo58 @D3ltoroxp last edited by

                @d3ltoroxp sagte in [Skript] Absolute Feuchte berechnen:

                Gibt es die Möglichkeit die Liste mit Räumen die gelüftet werden müssen, anders dar zu stellen ?`

                Ich lasse es so in einem Inventwo Universal Widget anzeigen:

                Luftfeuchte 1.jpg

                Dazu habe ich ein Script, welches den Datenpunkt "0_userdata.0.Raumklima.Lüften_Liste" aufteilt auf mehrere DP und die Länge kann man einstellen. Dazu habe ich 3 Datenpunkte angelegt: "0_userdata.0.Raumklima.Raum_1" bis "Raum_3" und die maximale verfügbare Zeichenzahl auf 35 gestellt. Das passt bei mir perfekt. Wenn ich die Zeichenlänge runtersetze auf 30, sieht es so aus:

                Luftfeuchte 2.jpg

                Das ist das Scipt dazu:

                //Liste_zu_Lueften_aufteilen_Komma
                
                const sourceDpId = '0_userdata.0.Raumklima.Lüften_Liste'; // Datenpunkt mit der Liste der Raumnamen
                const targetDpIds = ['0_userdata.0.Raumklima.Raum_1', '0_userdata.0.Raumklima.Raum_2', '0_userdata.0.Raumklima.Raum_3']; // Zieldatenpunkte
                
                // Funktion zum Aufteilen und Aktualisieren der Zieldatenpunkte
                function splitAndSetDataPoints(value) {
                    // Eckige Klammern entfernen und Raumnamen extrahieren
                    const roomNames = value.slice(1, -1).split(',').map(room => room.trim().replace(/"/g, ''));
                
                    let textBuffer = '';
                    let dpIndex = 0;
                
                    roomNames.forEach(room => {
                        if ((textBuffer + `"${room}"`).length <= 35) {
                            textBuffer += `"${room}"` + ' ';
                        } else {
                            setState(targetDpIds[dpIndex], textBuffer.trim(), true);
                            dpIndex++;
                            textBuffer = `"${room}"` + ' ';
                        }
                
                        if (dpIndex >= targetDpIds.length) {
                            return; // Maximal drei Datenpunkte erreicht
                        }
                    });
                
                    // Letzten Textpuffer aktualisieren
                    setState(targetDpIds[dpIndex], textBuffer.trim(), true);
                    
                    // Leere Datenpunkte, wenn weniger als drei Räume vorhanden sind
                    for (let i = dpIndex + 1; i < targetDpIds.length; i++) {
                        setState(targetDpIds[i], '', true);
                    }
                }
                
                // Datenpunkt abonnieren, um Änderungen zu erkennen
                on({ id: sourceDpId, change: 'ne', ack: false }, event => {
                    const newValue = event.state.val;
                    splitAndSetDataPoints(newValue);
                });
                
                // Initialen Zustand verarbeiten
                const initialSourceValue = getState(sourceDpId).val;
                splitAndSetDataPoints(initialSourceValue);
                
                

                Das Script habe nicht ich geschrieben, sondern ich habe es über ChatGPT schreiben lassen. Ich habe keine Ahnung vom programmieren. Habe es aber schon lange im Einsatz.

                Zu deinem Problem mit der automatischen Aktualisierung, kann ich dir nicht helfen. Hast du dir deine Quelldatenpunkte mal angesehen? Werden die denn regelmäßig aktualisiert?

                1 Reply Last reply Reply Quote 1
                • D
                  DerMarkus last edited by

                  Hallo zusammen,

                  ich habe ein ziemlich altes Haus und komme mit den default Werten nicht so gut zurecht...

                  Kann ich im Skript für jeden einzelnen Sensor (15 St.) nicht nur eine spezifische Mindesttemperatur sondern auch spezifische Mindest- und Maximalfeuchten angeben?

                  VG Markus

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    DerMarkus @DerMarkus last edited by

                    @dermarkus said in [Skript] Absolute Feuchte berechnen:

                    Hallo zusammen,

                    ich habe ein ziemlich altes Haus und komme mit den default Werten nicht so gut zurecht...

                    Kann ich im Skript für jeden einzelnen Sensor (15 St.), also sprich pro Raum, nicht nur eine spezifische Mindesttemperatur sondern auch spezifische Mindest- und Maximalfeuchten angeben?

                    VG Markus

                    1 Reply Last reply Reply Quote -1
                    • Hobbit
                      Hobbit last edited by

                      @paul53 Vielen Dank für dieses tolle Script. Ich habe es in der letzten Version 0.6.8 im Einsatz und es funktioniert weitestgehend grandios.

                      Eine Kleinigkeit wäre, könntet ihr die States alle bestätigt setzen? Sollte die Funktion in keinster Weise einschränken und sieht im 0_userdata Baum einfach besser aus als wenn einem da immer alles Rot entgegen springt 🙂

                      Das Einstellen der Bedingungen pro Raum wäre toll. In meinem Fall habe ich feuchte Kellerräume und ich sollte laut Script immer die Fenster schließen weil es draußen zu warm ist. Ich habe es zwar im Script für mich selber gelöst, aber eventuell könnte es auch anderen helfen.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Hobbit last edited by paul53

                        @hobbit sagte: Vielen Dank für dieses tolle Script. Ich habe es in der letzten Version 0.6.8 im Einsatz

                        Das Skript ist von @Solear und die Version 0.6.8 ist von @boriswerner.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        815
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        96
                        740
                        199109
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo