Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Blockly Prüfung auf "null"?

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Blockly Prüfung auf "null"?

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

      @paul53 said in Blockly Prüfung auf "null"?:

      @flitzpiepe
      Lass den Vergleich weg und prüfe "falls Wert vom Objekt ...".
      Es wird auch (null) im Tab "Objekte" angezeigt, wenn kein Zustand zum Datenpunkt existiert. Führe mal die Maus über den Wert.

      Hi.. danke für die Antwort, aber ich blicke es noch nicht: Der Vergleich soll weggelassen werden und stattdessen soll "falls Wert vom Objekt ..." genutzt werden? Wie sieht das in Blockly aus?

      Grüße..

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

        @flitzpiepe sagte: Wie sieht das in Blockly aus?

        Bild_2021-10-18_000342.png

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

          @paul53 said in Blockly Prüfung auf "null"?:

          @flitzpiepe sagte: Wie sieht das in Blockly aus?

          Bild_2021-10-18_000342.png

          Hi,
          auch wenn ich wahrscheinlich den Wald vor lauter Bäumen nicht sehe:

          b217a54f-5b11-415e-9a95-07ef5b781163-image.png

          Liefert bei mir immer true, also egal ob null, oder ein Wert vorhanden ist:

          null:
          d95a26ac-753b-4349-a5f1-40c06e0a8a00-image.png

          abctest:
          4c9be3f4-1665-48c3-8b1b-a5dcc6cfa1e0-image.png

          War das so gemeint 😕 ?

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

            @flitzpiepe sagte: null:

            "null" als String ergibt wahr bei er impliziten Typwandlung.

            1 Reply Last reply Reply Quote 0
            • F
              flitzpiepe last edited by

              @paul53 said in Blockly Prüfung auf "null"?:

              @flitzpiepe sagte: null:

              "null" als String ergibt war bei er impliziten Typwandlung.

              ok, es scheint, dass da bei mir irgendwo jemand auf der Leitung steht, da ich mir auch nach mehrmaligem Lesen der Info nicht erschließen kann, was gemeint sein könnte und wie ich letztendlich einen funktionierenden null check erreiche.
              Hier ging es auch um dieses Thema und die Abfrage war m.E. so formuliert wie bei mir.

              Habe es jetzt anders für mich gelöst und prüfe, ob die Länge des Strings > 5 ist. true: Wert vorhanden bei false: kein Wert vorhanden.

              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @flitzpiepe last edited by

                @flitzpiepe sagte in Blockly Prüfung auf "null"?:

                @paul53 said in Blockly Prüfung auf "null"?:

                @flitzpiepe sagte: null:

                "null" als String ergibt war bei er impliziten Typwandlung.

                ok, es scheint, dass da bei mir irgendwo jemand auf der Leitung steht, da ich mir auch nach mehrmaligem Lesen der Info nicht erschließen kann, was gemeint sein könnte und wie ich letztendlich einen funktionierenden null check erreiche.
                Hier ging es auch um dieses Thema und die Abfrage war m.E. so formuliert wie bei mir.

                Habe es jetzt anders für mich gelöst und prüfe, ob die Länge des Strings > 5 ist. true: Wert vorhanden bei false: kein Wert vorhanden.

                Ich versuch mal dich von dem Schlauch zu holen:

                Wenn du im ioBroker "null" stehen siehst, dann kann das auf 2 Arten passieren:

                • der Datenpunkt hat den expliziten Wert null.
                • im Datenpunkt steht der Text "null".

                Die von Dir im Skript oben eingebaute Überprüfung prüft auf den expliziten Wert null, das worauf du prüfen möchtest ist aber der Text "null"

                Nun zum Thema Vergleich:
                Im Kontext Falls Wert mache wird Wert als wahr angesehen wenn

                • Wert ein Text mit einem oder mehr Zeichen ist ("null", "leer", "hierstehtwas", "1", " ")
                • Wert eine Zahl ist die nicht 0 ist
                • Wert explizit wahr beinhaltet
                • Wert einen der beiden intern definierten Werte NaN und infinity beinhaltet (diese entstehen automatisch bei mathematischen Operationen die ungültig sind, z.Bsp. 1/0 oder sqrt(-2)

                Im Kontext Falls Wert mache wird Wert als falsch angesehen wenn

                • Wert ein Text ohne Zeichen ist ("")
                • Wert die Zahl 0 ist
                • Wert explizit falsch beinhaltet
                • Wert einen dieser intern definierten Werte beinhaltet: null, undefined

                Nun dazu wie du auf den Text "null" prüfen kannst: In deinem Originalen Blockly ersetzt du den Baustein mit null durch einen mit dem Text "null".

                A.

                F 1 Reply Last reply Reply Quote 0
                • F
                  flitzpiepe @Asgothian last edited by

                  @asgothian said in Blockly Prüfung auf "null"?:

                  @flitzpiepe sagte in Blockly Prüfung auf "null"?:

                  @paul53 said in Blockly Prüfung auf "null"?:

                  @flitzpiepe sagte: null:

                  "null" als String ergibt war bei er impliziten Typwandlung.

                  ok, es scheint, dass da bei mir irgendwo jemand auf der Leitung steht, da ich mir auch nach mehrmaligem Lesen der Info nicht erschließen kann, was gemeint sein könnte und wie ich letztendlich einen funktionierenden null check erreiche.
                  Hier ging es auch um dieses Thema und die Abfrage war m.E. so formuliert wie bei mir.

                  Habe es jetzt anders für mich gelöst und prüfe, ob die Länge des Strings > 5 ist. true: Wert vorhanden bei false: kein Wert vorhanden.

                  Ich versuch mal dich von dem Schlauch zu holen:

                  Nun dazu wie du auf den Text "null" prüfen kannst: In deinem Originalen Blockly ersetzt du den Baustein mit null durch einen mit dem Text "null".

                  A.

                  Hi,
                  danke für den ausführlichen Kommentar und ich denke wir nähern uns dem Problem:
                  Das bedeute aber auch, dass die Zuweisungen:

                  0dfd719d-0efd-4844-bbe8-13e83b641d9e-image.png

                  ... ein und dasselbe aussagen? Davon bin ich bisher nicht ausgegangen und da lag dann mein Gedankenfehler? Ich dachte vom Block null wird der Datenpunkt auf den expliziten Wert null gesetzt und von der String-Zuweisung erhält der Datenpunkt den String "null". Ich habe den Block null in der Zuweisung verwendet und deswegen auch mit dem Block auf null geprüft.

                  Im Java-ScriptCode:

                      setState("javascript.0.scriptEnabled.System.PushOver.PushOverSysVar.PushOver_File"/*varPushOver_File*/, null, true);
                      setState("javascript.0.scriptEnabled.System.PushOver.PushOverSysVar.PushOver_File"/*varPushOver_File*/, 'null', true);
                  

                  ... ist hier ja auch der Unterschied zu sehen durch Verwendung der Anführungszeichen bei String-Zuweisung.

                  Ist hier meine eigentliche Frage vielleicht, warum mein Datenpunkt nicht auf den expliziten Wert null gesetzt wurde, obwohl ich die Zuweisung über den null-Block gemacht habe?

                  Asgothian paul53 2 Replies Last reply Reply Quote 0
                  • Asgothian
                    Asgothian Developer @flitzpiepe last edited by

                    @flitzpiepe sagte in Blockly Prüfung auf "null"?:

                    i,
                    danke für den ausführlichen Kommentar und ich denke wir nähern uns dem Problem:
                    Das bedeute aber auch, dass die Zuweisungen:

                    ... ein und dasselbe aussagen? Davon bin ich bisher nicht ausgegangen und da lag dann mein Gedankenfehler?

                    Nein, diese Zuweisungen sind nicht identisch. Die erste weist dem State den Wert null zu, der zweite den text "null". Allerdings kann es sein das der JS-Controller eine Typconvertierung vornimmt da der Datenpunkt als "string" angelegt ist.

                    Du solltest im Übrigen (sofern du den aktuellen JS Controller mit Admin 5 nutzt eine Warnmeldung bekommen wenn du versuchst null in einen State zu schreiben der als "string" definiert ist.

                    A.

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

                      @flitzpiepe sagte: obwohl ich die Zuweisung über den null-Block gemacht habe?

                      Da der Datenpunkt von Typ "string" ist, ist die Zuweisung von null (Typ "object") falsch. Um ihn zu löschen, weise einen Leerstring zu. Dann funktioniert ebenfalls die Prüfung "falls Wert von DP" , da die implizite Typwandlung des Leerstrings false ergibt.

                      1 Reply Last reply Reply Quote 0
                      • N
                        niiccooo1 last edited by niiccooo1

                        [GELÖST]
                        Hallo Zusammen,

                        ich knüpfe mal an das Thema an, da ich an einem ähnlichen Punkt bin, aber ich einfach nicht weiter komme.
                        Ich möchte ebenfalls eine Abfrage auf null / kein Inhalt überprüfen. Es handelt sich bei mir jedoch um eine Abfrage aus der InfluxDB.
                        Über ein Javascript lasse ich mir aus dem InfluxDB folgendes Ergebnis als JSON ausgeben:

                        {"result":[[{"result":"_result","table":0,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":-1536525,"_field":"T0201","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":1,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":22.59207,"_field":"T0202","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":2,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":22.78723,"_field":"T0203","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":3,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":22.32642,"_field":"T0204","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":4,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":22.2529,"_field":"T0205","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":5,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":-1669286,"_field":"T0206","_measurement":"VST3","ts":1728546318091},{"result":"_result","table":6,"_start":"2024-10-10T06:45:18.1890708Z","_stop":"2024-10-10T07:45:18.1890708Z","_time":"2024-10-10T07:45:18.0914702Z","_value":-2018108,"_field":"T0207","_measurement":"VST3","ts":1728546318091}]],"ts":1728546318199,"error":null}
                        

                        Anschließend filtere ich über folgendes Blockly mir den Feldnamen aus:
                        8f4326a2-a10b-4a0f-8468-ef41e3f6cbc7-image.png

                        "j" ist meine Zählvariable welche über eine Schleife hochgezählt wird und "ergebnis" das oben gezeigte JSON

                        Nun möchte ich über die Schleife den value an einen Datenpunkt geben solange bis die Filterung keinen weiteren Feldname mehr findet. Ich bekomme diese Überprüfung nicht hin.

                        Ich habe probiert es über null zu vergleichen, über db66cdc2-c9c8-4f95-a27a-de17a205d2ef-image.png

                        Folgendes klappt auch nicht:
                        af809b1f-a86c-4ef7-8178-f819f19011a0-image.png

                        Was mir aufgefallen ist, dass sich der Typ von string nach object ändert sobald kein Inhalt mehr da ist.

                        cdb267aa-1669-40a2-80d6-d3eb9294c6e5-image.png

                        Log:

                        javascript.0	09:54:41.561	info	script.js.ESPEasy.Test: Typ von: string:T0204
                        javascript.0	09:54:42.571	info	script.js.ESPEasy.Test: Typ von: string:T0205
                        javascript.0	09:54:43.587	info	script.js.ESPEasy.Test: Typ von: string:T0206
                        javascript.0	09:54:44.595	info	script.js.ESPEasy.Test: Typ von: string:T0207
                        javascript.0	09:54:45.603	info	script.js.ESPEasy.Test: Typ von: object:
                        javascript.0	09:54:46.606	info	script.js.ESPEasy.Test: Typ von: object:
                        

                        Kann mir jemand helfen?

                        Codierknecht N 2 Replies Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @niiccooo1 last edited by Codierknecht

                          @niiccooo1

                          Das hier funktioniert:

                          b91923da-8277-4b81-a5f1-a6db8a540083-image.png
                          Aber da sind ja auch alle Pärchen sauber gefüllt.

                          Edit

                          meine Zählvariable welche über eine Schleife hochgezählt wird

                          Die Frage wäre: Wie hast Du Deine Schleife konstruiert?

                          N 1 Reply Last reply Reply Quote 0
                          • N
                            Nordischerjung @niiccooo1 last edited by

                            @niiccooo1 kann der hier helfen?

                            8443033b-1fd6-4eb3-837b-5fb6b311e9bb-image.png

                            N 1 Reply Last reply Reply Quote 0
                            • N
                              niiccooo1 @Codierknecht last edited by

                              @codierknecht
                              Die Schleife habe ich so aufgebaut:
                              9c6ef13a-6784-47ef-b63b-ca57d5abe293-image.png

                              Wobei die Prüfung nicht funktioniert hat.

                              Dein Vorschlag funktioniert wunderbar 🙂

                              Vielen Dank!

                              Codierknecht 1 Reply Last reply Reply Quote 0
                              • N
                                niiccooo1 @Nordischerjung last edited by

                                @nordischerjung

                                Damit klappt es nicht so wie gewünscht. Die Lösung @Codierknecht passt zu meinem Vorhaben besser.

                                Vielen Dank trotzdem!

                                1 Reply Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @niiccooo1 last edited by

                                  @niiccooo1
                                  Ein "wiederhole solange" kann kritisch werden. Wenn es keine saubere Abbbruchbedingung gibt, hat man sich schnell eine Endlosschleife produziert.
                                  Ein Schleife über die Elemente kennt bereits die Anzahl der Durchläufe ... nämlich die Zahl der Elemente.
                                  Die ist für sowas in aller Regel besser geeignet.

                                  Wenn's läuft, bearbeite bitte Deinen Eingangspost und setze ein "[gelöst] " vor den Titel.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  822
                                  Online

                                  31.6k
                                  Users

                                  79.5k
                                  Topics

                                  1.3m
                                  Posts

                                  6
                                  17
                                  1126
                                  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