Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Bitte um Kurzcheck Blockly und Datentypen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Bitte um Kurzcheck Blockly und Datentypen

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

      @paul53

      Darf ich nochmal dumm zum Verständnis fragen. Hatte es vorher auf "Wert von" und dann direkt auf den Mqtt DP laufen:
      6553769c-a8e9-406a-8f00-01d9913c1a2d-grafik.png

      Das hat bis Admin5/JS3.3 funktioniert. Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist. Der sollte doch dann keinen Wert haben oder?

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Guest last edited by mickym

        @pete0815 Weil Du grundsätzlich auch Strings vergleichen kannst - das nennt man dann sortieren:

        A ist kleiner als B. 😉

        und auch

        1 ist keiner als 2

        allerdings wird

        2 größer als 12 sein. 😉

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @mickym last edited by

          @mickym said in Bitte um Kurzcheck Blockly und Datentypen:

          @pete0815 Weil Du grundsätzlich auch Strings vergleichen kannst - das nennt man dann sortieren:

          A ist kleiner als B. 😉

          und auch

          1 ist keiner als 2

          allerdings wird

          2 größer als 12 sein. 😉

          Aaah ok. Vielen Dank! da wäre ich nie drauf gekommen 🤦‍♂️

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

            @pete0815 sagte: Das hat bis Admin5/JS3.3 funktioniert.

            Jetzt nicht mehr?

            @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

            Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist

            Wenn eine Seite eines Vergleichs eine Zahl enthält, macht Javascript eine implizite Typwandlung des Strings auf der anderen Seite in eine Zahl.

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @paul53 last edited by

              @paul53 said in Bitte um Kurzcheck Blockly und Datentypen:

              @pete0815 sagte: Das hat bis Admin5/JS3.3 funktioniert.

              Jetzt nicht mehr?

              Nuja, die Schaltung funktioniert noch, aber der Log lief auf einmal bei mir voll. Ein paar Tage habe ich nichts bemerkt und heute hatte ich einen 16MB Log.

              2021-08-17 23:55:45.896 - info: mqtt.0 (843) State value to set for "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string" 
              

              Hieraus die Intention dies zu Verbessern und richtig umzusetzen.

              @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

              Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist

              Wenn eine Seite eines Vergleichs eine Zahl enthält, macht Javascript eine implizite Typwandlung des Strings auf der anderen Seite in eine Zahl.

              danke.Widerspricht sich das zur Auskunft von @mickym ?
              Alleine kann ich Beides nachvollziehen, aber zusammen tue ich mich schwer.

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Guest last edited by mickym

                @pete0815 Na ja mein Beispiel mit den Zahlen war nicht ganz richtig und die implizite Typumwandlung in Zahlen findet halt statt, wenn die Strings beides in 2 Zahlen gewandelt werden kann. Ist jedoch eines der beiden Typen ein String und das andere eine Zahl, wird auch das andere ein String. (siehe Beispiel unten 52)

                https://www.w3schools.com/js/js_type_conversion.asp

                9a3b8677-d20b-4ccb-a1f6-3a3f7d13e805-image.png

                Im Endeffekt hat @paul53 natürlich mal wieder Recht, wenn beide Strings in Zahlen gewandelt werden kann. Allerdings weiß ich nicht, ob diese implizierte Konvertierung tatsächlich bei Vergleichsoperationen stattfindet - oder nur wenn damit gerechnet wird. 😉 - Aber das kann @paul53 sicher auch klären.

                ? paul53 2 Replies Last reply Reply Quote 0
                • ?
                  A Former User @mickym last edited by

                  @mickym
                  Danke, jetzt habe ich es wohl verstanden und die Helligkeit ist in der Zwischenzeit zur Dunkelheit geworden und die Rollos haben sich ohne Meldung im Log wie gewünscht geschlossen. Besten Dank!

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

                    @mickym sagte: wenn beide Strings in Zahlen gewandelt werden kann.

                    Wenn beide Seiten eines Vergleichs Strings enthalten, erfolgt keine Typwandlung, sondern ein String-Vergleich wie Du ihn beschrieben hast.

                    @mickym sagte in Bitte um Kurzcheck Blockly und Datentypen:

                    ob diese implizierte Konvertierung tatsächlich bei Vergleichsoperationen stattfindet - oder nur wenn damit gerechnet wird.

                    Auch, wenn gerechnet wird, außer bei + (Addition): Wenn bei + nur an einer Stelle ein String vorkommt, erfolgt immer eine String-Verkettung. Beispiel: "4" + 1 + 2 = 4 + "1" + 2 = "412".

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @paul53 last edited by

                      @paul53

                      Ich glaube, ich habe eine Idee woher die Log Einträge kommen. Die kamen nur zwischen 20:45h und 06:30h. Das dürfte grob eine Zeit sein, wo der Mqtt String 0 gewesen ist (Dunkel).

                      Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

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

                        @pete0815 sagte: Mqtt String 0 gewesen ist (Dunkel).

                        Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

                        Wo machst Du eine Division? "0" ist nichts besonderes.

                         "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string"
                        

                        Das ist ein Fehler im MQTT-Adapter, da der Datenpunkt den falschen Typ "number" hat. Dieser Fehler ist früher nicht aufgefallen, da nicht angemeckert.

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @paul53 last edited by A Former User

                          @paul53 said in Bitte um Kurzcheck Blockly und Datentypen:

                          @pete0815 sagte: Mqtt String 0 gewesen ist (Dunkel).

                          Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

                          Wo machst Du eine Division? "0" ist nichts besonderes.

                          Bei dem DP handelt es sich um die Helligkeit in Lux. Da die Meldung nur im Log zwischen ca. 20:45h und 6:30h alle 20 Sekunden auftaucht war dies für mich ein Ansatz/Frage da die Helligkeit in der Zeit 0 Lux ist.
                          Da aber nicht anwendbar, ok und verworfen.

                           "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string"
                          

                          Das ist ein Fehler im MQTT-Adapter, da der Datenpunkt den falschen Typ "number" hat. Dieser Fehler ist früher nicht aufgefallen, da nicht angemeckert.

                          Edit: Aah, habe es gefunden. Adapter gestopt, Datenpunkte gelöscht und Adapter gestartet. Die alten DPs waren "number". Die neuen sind "string".
                          Das dürfte es gewesen sein 🙂

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          603
                          Online

                          32.0k
                          Users

                          80.5k
                          Topics

                          1.3m
                          Posts

                          4
                          16
                          576
                          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