Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Script vergleicht Werte falsch

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    SOLVED Script vergleicht Werte falsch

    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Olivbus last edited by Jey Cee

      Ich habe ein Blocky Skript erstellt in dem zwei Temperaturen (DewPoint von zwei verschiedenen Netatmo - Sensoren) verglichen werden. Wenn die Temperatur am Sensor A größer als die Temperatur am Sensor B ist, soll in einen Datenpunkt 1 geschrieben werden. Wenn die Temperatur von A kleiner gleich B ist soll 0 in den Datenpunkt geschrieben werden.

      Die Temperaturen werden parallel in einem Flot Chart aufgezeichnet. Im Flot Chart ist der Wertebereich (x Achse) von 10 bis 16 Grad Celsius eingestellt.

      Die Temperaturwerte beider Sensoren werden unter Objekte und in der History korrekt angezeigt.

      Bei Änderung des Werts des Datenpunkts erfolgt über ein anderes Skript die Meldung via Telegramm.

      Das Skript (Vergleich der Temperaturen und setzten des Datenpunkts mit 1 oder 0) funktioniert solange korrekt, wie sich die Temperaturwerte im Wertebereich des Flotcharts (10-16 C) befinden. Sobald ein Wert den Bereich des Flotcharts nach unten verläßt, also kleiner als 10 Grad Celsius beträgt, meint das Skript, dass dieser Wert größer als der andere ist, obwohl der Wert ja kleiner als 10 und der andere Wert noch im Chartbereich (10 - 16) und damit eigentlich größer ist.
      Der Schnittpunkt -der Linie der Temperatur, die dann kleiner als 10 Grad ist- mit der Y Achse (Zeit) stimmt genau mit dem Zeitpunkt der dann falschen Telegrammmeldung überein. Der Fehler ist so exakt reproduzierbar.

      Es ist also so, dass das Blocky Skript die Werte aus dem Flotchart vergleicht und nicht die Werte des eigentlichen Objekts.

      Liegt hier ein allgemeiner Fehler vor oder habe ich irgendetwas falsch gemacht?

      on({id: 'netatmo.0.Station.Bad.Temperature.DewPoint', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("netatmo.0.Station.Bad.Temperature.DewPoint").val > getState("netatmo.0.Unnamed.Temperature.DewPoint").val) {
          setStateDelayed('admin.0.Datenpunkte.Badtüre', 1, false, parseInt(0, 10), false);
        } else {
          setStateDelayed('admin.0.Datenpunkte.Badtüre', 0, false, parseInt(0, 10), false);
        }
      });
      
      
      1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @Olivbus last edited by

        @Olivbus
        so vielleicht ? (nicht probiert)

        Bildschirmfoto 2019-08-22 um 23.40.11.png

        setState("Object ID", parseFloat(getState("ID auswählen").val));
        
        paul53 1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active last edited by

          Dann werden die Felder keine Zahlen sondern einen String enthalten und dort ist 9 größer als 17 da dort nur das erste Zeichen verglichen wird bzw so lange wie es eindeutig ist.

          Bei 17 und 19 klappt es also weil 1 und 1 identisch ist also prüft er 7 und 9.

          Am Besten also den string in eine Zahl umwandeln

          O 1 Reply Last reply Reply Quote 0
          • O
            Olivbus @cash last edited by Olivbus

            ![Bild Text](aea543f9-52e7-4826-afa0-160bfb1232cc-image.png Bild Link)
            Hört sich logisch an, aber der Wert der Temperatur ist als Zahl angelegt

            1 Reply Last reply Reply Quote 0
            • cash
              cash Most Active last edited by

              Ergänze mal in Deinen Script eine log mit typeof sollte etwa so aussehen:

              log(typeof getState("weatherunderground.0.forecast.0d.tempMax").val);
              ```` `

              Da kommt dann im Log ein string wenn ich recht habe. Falls dort number stehen sehen wir weiter. Sehr unwahrscheinlich...

              O 1 Reply Last reply Reply Quote 0
              • O
                Olivbus @cash last edited by

                @cash sagte in Script vergleicht Werte falsch:

                log(typeof getState("weatherunderground.0.forecast.0d.tempMax").val);
                ```` `

                richtig, es kommt string raus. Wie kann ich das ändern? Unter Objekt steht, wie ich oben gezeigt habe Zahl.

                paul53 dslraser 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Olivbus last edited by

                  @Olivbus sagte:

                  Wie kann ich das ändern?

                  Blöcke "Konvertierung": nach Zahl

                  1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @Olivbus last edited by

                    @Olivbus
                    so vielleicht ? (nicht probiert)

                    Bildschirmfoto 2019-08-22 um 23.40.11.png

                    setState("Object ID", parseFloat(getState("ID auswählen").val));
                    
                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @dslraser last edited by

                      @dslraser sagte:

                      so vielleicht ?

                      Im Prizip ja, aber für die beiden Werte, die verglichen werden.

                      1 Reply Last reply Reply Quote 0
                      • O
                        Olivbus last edited by

                        Ihr seid wirklich Klasse. So funktioniert es.
                        Vielen, vielen Dank Euch allen.

                        1 Reply Last reply Reply Quote 0
                        • Negalein
                          Negalein Global Moderator last edited by

                          Wenn ein Thema gelöst wurde bitte den Beitrag der die Lösung beinhaltet als gelöst Markieren. -> 3 Punkte Menü rechts unten am Beitrag -> Mark this post as the correct answer

                          sigi234 O 2 Replies Last reply Reply Quote 0
                          • sigi234
                            sigi234 Forum Testing Most Active @Negalein last edited by sigi234

                            @Negalein sagte in (gelöst)Script vergleicht Werte falsch:

                            Wenn ein Thema gelöst wurde bitte den Beitrag der die Lösung beinhaltet als gelöst Markieren. -> 3 Punkte Menü rechts unten am Beitrag -> Mark this post as the correct answer

                            Das Blau ist bei mir schwer lesbar.........

                            1 Reply Last reply Reply Quote 0
                            • O
                              Olivbus @Negalein last edited by

                              @Negalein Bei mir steht unter dem 3 Punktemenü unter dem Beitrag nur Lesezeichen (Herzchen) und Beitrag melden.

                              Negalein 1 Reply Last reply Reply Quote 0
                              • Negalein
                                Negalein Global Moderator @Olivbus last edited by

                                @Olivbus sagte in Script vergleicht Werte falsch:

                                @Negalein Bei mir steht unter dem 3 Punktemenü unter dem Beitrag nur Lesezeichen (Herzchen) und Beitrag melden.

                                Ja, weil die passende Antwort bereits als Lösung markiert wurde.
                                Siehst du an dem grünen Rahmen des Beitrags.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                601
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                block scrit flotchart netatmo wertevergleich
                                6
                                13
                                575
                                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