Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Bug in Javascript?

    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

    [gelöst] Bug in Javascript?

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      iob69 last edited by iob69

      Hallo, ich hab ein Phänomen, das wie ein Bug aussieht, obwohl ich mir das fast nicht vorstellen, kann, dass so was essenzielles falsch laufen kann. Vielleicht hab ich nur Tomaten auf den Augen 🤔

      Ich hab folgender Script-Teil:

              let state: boolean = getState(DPOccupancy).val;
              if (state == true) {
                  // einschalten
                  console.log('occupancy for on:' + state);
              } else {
                  // ausschalten
                  console.log('occupancy for off:' + state);
               }
      

      mit folgender Ausgabe:

      occupancy for off:true
      

      Komisch, nicht?
      Der debugger bestätigt mir, dass er trotz state==true (siehe unten im watch) in den else - Zweig geht!?
      22fb0f75-f669-4028-b827-f1a0620afbd0-grafik.png

      Was mach ich hier falsch???

      OliverIO 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer last edited by ticaki

        @iob69

        Hehe das ist ein String den getState dir da liefert.

        Edit: wobei ich jetzt angenommen hätte das bei einem == Vergleich gleich True ist

        I haus-automatisierung 2 Replies Last reply Reply Quote 0
        • I
          iob69 @ticaki last edited by

          @ticaki sagte in Bug in Javascript?:

          das ist ein String den getState dir da liefert

          Wie bitte?

          T 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @ticaki last edited by

            @ticaki sagte in Bug in Javascript?:

            Hehe das ist ein String den getState dir da liefert.
            Edit: wobei ich jetzt angenommen hätte das bei einem == Vergleich gleich True ist

            Nein. true == 'true' ist nie wahr. Das wär ja übel 🙂

            I 1 Reply Last reply Reply Quote 0
            • I
              iob69 @haus-automatisierung last edited by iob69

              @ticaki
              Das kann nicht sein. Ich hab ja
              let state: boolean = getstate(...
              Das ist typescript. Da könnte nie ein string zugeordnet werden.

              T haus-automatisierung 2 Replies Last reply Reply Quote 0
              • T
                ticaki Developer @iob69 last edited by

                @iob69

                Ich hab das Zeichen nicht aufm Handy. Da sind Gänsefüßchen um das true um debugfenster das bedeutet üblicherweise das es ein String ist

                1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @iob69 last edited by

                  @iob69

                  ja string und du bist in die
                  truthy / falsy falle getappt

                  https://developer.mozilla.org/en-US/docs/Glossary/Truthy
                  https://developer.mozilla.org/en-US/docs/Glossary/Falsy

                  I 1 Reply Last reply Reply Quote 0
                  • I
                    iob69 @OliverIO last edited by

                    @oliverio
                    Nein, state kann kein String sein, er wird ja als boolean deklariert

                    1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @iob69 last edited by

                      @iob69

                      Typescript prüft keine Werte zur Laufzeit

                      I 1 Reply Last reply Reply Quote 0
                      • I
                        iob69 @ticaki last edited by

                        @ticaki
                        Aber der Datentyp des Datenpunktes ist auch Boolean!

                        T 1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @iob69 last edited by

                          @iob69 sagte in Bug in Javascript?:

                          Das ist typescript. Da könnte nie ein string zugeordnet werden.

                          Das ist nicht so ganz richtig, .val kann alles mögliche auf einem State sein. Der Typ ist als any definiert.

                          Screenshot 2025-02-11 at 15.21.27.png

                          @iob69 sagte in Bug in Javascript?:

                          Aber der Datentyp des Datenpunktes ist auch Boolean!

                          Und der aktuelle Wert in dem Datenpunkt auch? Weil man aktuell noch andere Datentypen schreiben kann, als der State vorgibt. Das erzeugt nur eine Warnung im Log.

                          1 Reply Last reply Reply Quote 1
                          • T
                            ticaki Developer @iob69 last edited by

                            @iob69

                            Teste es doch mit einem typeof Ich kann nur sagen was ich sehe

                            I 1 Reply Last reply Reply Quote 1
                            • I
                              iob69 @ticaki last edited by

                              @ticaki
                              Ok, stimmt, typeof liefert string!???
                              Wieso liefert mir val einen String wenn der Datenpunkt vom typ boolean ist? wozu gibt man denn den typen in einem Datentyp überhaupt an???

                              haus-automatisierung 1 Reply Last reply Reply Quote 0
                              • haus-automatisierung
                                haus-automatisierung Developer Most Active @iob69 last edited by

                                @iob69 sagte in Bug in Javascript?:

                                wozu gibt man denn den typen in einem Datentyp überhaupt an???

                                Wie gesagt, man bekommt eine Warnung wenn man einen anderen Datentyp schreibt als angegeben. Wie genau hast den Datenpunkt denn geschrieben?

                                I 1 Reply Last reply Reply Quote 2
                                • I
                                  iob69 @haus-automatisierung last edited by

                                  @haus-automatisierung
                                  Der wird von einem Sensor geliefert:

                                  2b0b9d54-9914-4d15-b63b-511c919ba496-grafik.png

                                  Dann ist der wohl ein string, so n sch...
                                  Und den mappe ich dann auf einen boolean. Ok, danke ich weiss jetzt etwa wo ich suchen muss, danke an alle!

                                  haus-automatisierung 1 Reply Last reply Reply Quote 0
                                  • haus-automatisierung
                                    haus-automatisierung Developer Most Active @iob69 last edited by

                                    @iob69 sagte in Bug in Javascript?:

                                    Der wird von einem Sensor geliefert:

                                    Dann bitte einen Issue im Adapter öffnen, welcher den State falsch setzt. Falls Du eh mit einem Alias arbeitest, dann kannst ja einfach die Lesefunktion nutzen, um daraus ein Boolean zu machen:

                                    val === 'true'

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      iob69 @haus-automatisierung last edited by

                                      @haus-automatisierung
                                      Nein, der Adapter kann nichts dafür, der DP ist string. Ich hab den mal gelöscht und beim wiedererstellen hab ich das offenbar nicht wieder auf bool geändert.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      423
                                      Online

                                      31.8k
                                      Users

                                      80.0k
                                      Topics

                                      1.3m
                                      Posts

                                      4
                                      17
                                      458
                                      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