Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. If State exists

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    If State exists

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

      Hallo,

      Irgendwie scheitere ich an einer Funktion die ich mir aus einem anderem Skript kopiert habe.
      Damals hat mjtodas @paul53 gezeigt.

      Ich möchte prüfen ob ein State existiert und dann eine Variable mit dem Wert beschreiben.

      Hier die Funktion (am Smartphone kann man da leider keinen Text markieren um es als Code zu posten):

      Screenshot_20240304_095250_Chrome.jpg

      Hier ist es im Script eingebaut.
      Screenshot_20240304_094425_Chrome.jpg

      Die Variable HDD2 Word immer auf -1 gesetzt
      Screenshot_20240304_095933_Chrome.jpg

      Wenn ich die Funktion weg lasse klappt alles, schmeißt eben Fehler, wenn die DPs nicht vorhanden sind.

      paul53 1 Reply Last reply Reply Quote 0
      • MartinP
        MartinP last edited by MartinP

        @david-g Möchtest Du prüfen, ob der State existiert, oder ob das Object existiert? Es gibt auch eine Funktion

        existsObject();

        existsState();

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @David G. last edited by

          @david-g sagte: Hier die Funktion

          An diese Funktion muss die ID übergeben werden - nicht der Wert. Sie liefert den Wert bei Existenz zurück.

          MartinP David G. 3 Replies Last reply Reply Quote 0
          • MartinP
            MartinP @paul53 last edited by

            @paul53 Interessant ist auch die Anmerkung in der Doku...

            If the option "Do not subscribe all states on start" is deactivated, you can use simpler call:

            existsObject(id)

            1 Reply Last reply Reply Quote 0
            • David G.
              David G. @paul53 last edited by David G.

              @paul53

              🫣 Augen auf am Steuer. Die Fehlermeldungen sind jetzt weg.

              Frage mich warum in der Funktion die -1 steht.
              So hat er die Variable immer damit beschrieben, wenn es den DP nicht gibt. Ohne klappt es wunderbar. In len anderen Scripten habe ich die drinnen.

              @MartinP
              Danke dur die Hinweise.

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

                @paul53 said in If State exists:

                Sie liefert den Wert bei Existenz zurück.

                Sie liefert true zurück., wenn der State existiert, und false sonst ...

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @David G. last edited by

                  @david-g sagte: warum in der Funktion die -1 steht.

                  Das ist der Wert bei Nichtexistenz. Andernfalls würde bei Nichtexistenz undefined zurück geliefert.

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

                    @paul53 Ist aber etwas, was Programmierer, die von streng typisierten Sprachen kommen irritiert ....

                    Im Erfolgsfall true/false zurück, und im Fehlerfall -1 ....

                    Die Architektur der Funktion scheint mir da sowieso nicht besonders praktisch zu sein ...

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

                      @martinp sagte: Die Architektur der Funktion scheint mir da sowieso nicht besonders praktisch zu sein ...

                      Das stimmt. Ursprünglich sollten wohl 3 Symbole (wahr / falsch / nicht vorhanden) für die Visualisierung erzeugt werden.

                      David G. 2 Replies Last reply Reply Quote 0
                      • David G.
                        David G. @paul53 last edited by David G.

                        @paul53 sagte in If State exists:

                        Das stimmt. Ursprünglich sollten wohl 3 Symbole (wahr / falsch / nicht vorhanden) für die Visualisierung erzeugt werden.

                        Das stimmt sogar.
                        Hab ich aus meinem Batteriescript kopiert.
                        Für Batterie voll/leer/nicht vorhanden.

                        EDIT
                        Wie müsste es denn besser gemacht werden, wenn ich nur prüfen möchte ob der DP existiert und falls ja, den Wert in die Variable schreiben möchte?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @David G. last edited by paul53

                          @david-g sagte: nur prüfen möchte ob der DP existiert und falls ja, den Wert in die Variable schreiben möchte?

                          Was soll die Variable enthalten, wenn der DP nicht existiert? Wie wird die Variable ausgewertet?

                          David G. 1 Reply Last reply Reply Quote 0
                          • David G.
                            David G. @paul53 last edited by

                            @paul53

                            Bisher habe ich immer auf Null geprüft.

                            Screenshot_20240304_140400_Chrome.jpg

                            Dann kann man es für alles verwenden.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @David G. last edited by paul53

                              @david-g sagte: auf Null geprüft.

                              Dann ändere die zweite Zeile in der JS-Funktion in

                              return null;
                              

                              oder lasse sie ganz weg: Im Vergleich liefern null und undefined das gleiche Ergebnis.

                              1 Reply Last reply Reply Quote 0
                              • David G.
                                David G. @paul53 last edited by

                                Okay, dachte da wäre noch mehr unlogisch/nicht gut nach diesem Satz.

                                @paul53 sagte in If State exists:

                                Die Architektur der Funktion scheint mir da sowieso nicht besonders praktisch zu sein ...

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @David G. last edited by

                                  @david-g sagte: dachte da wäre noch mehr unlogisch/nicht gut nach diesem Satz.

                                  Die Variable enthält bei vorhandenem DP eine Zahl zwischen 0 und 100. Damit wäre die -1 wieder logisch und man müsste auf >= 0 prüfen.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  515
                                  Online

                                  32.0k
                                  Users

                                  80.4k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  258
                                  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