Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. String nach Boolean

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    String nach Boolean

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

      Hallo alle

      Ich habe ein Script gebaut, das wie folgt funktioniert: Es reagiert auf eine Systemvariable die Boolean ist:

      on(id_boolscheSysvar, function (obj) 
       {
          if (obj.newState.val=="ist wahr") {
              ... Code ...
          }
       }
      );
      

      Scheinbar kommt also aus obj.newState.val ein String zurück.

      Wie kann man denn dafür sorgen, dass entweder der richtige Datentyp zurückkommt, oder man wenigstens diesen String in eine Boolsche Variable wandeln kann, damit die If-Abfrage kein Stringvergleich mehr ist?

      Und: Wie kann man Methoden die man in einem Script definiert hat in einem anderen Script aufrufen? Kennen die Scripe sich gegenseitig oder muss man die irgendwie referenzieren?

      Gruss Ralf

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

        Wenn der Vergleich

        if (obj.newState.val=="ist wahr")
        

        funktioniert, kann Datenpunktwert nicht vom Typ Boolean sein.
        @derrapf:

        Wie kann man denn dafür sorgen, dass entweder der richtige Datentyp zurückkommt `
        Indem der richtige Typ geschrieben wird (z.B. mit setState(id, val)).
        @derrapf:

        Und: Wie kann man Methoden die man in einem Script definiert hat in einem anderen Script aufrufen? Kennen die Scripe sich gegenseitig oder muss man die irgendwie referenzieren? `
        Skripte kennen sich untereinander nicht. Man kann nur Funktionen von Skripten, die als global deklariert wurden (Gruppe "global") aus anderen Skripten aufrufen.

        1 Reply Last reply Reply Quote 0
        • D
          derrapf last edited by

          Hallo Paul
          @paul53:

          Wenn der Vergleich

          if (obj.newState.val=="ist wahr")
          

          funktioniert, kann Datenpunktwert nicht vom Typ Boolean sein. `
          Die Variable ist bei mir in der CCU als "Logikwert" definiert mit den Werten wahr = "ist wahr", falsch = "ist falsch"

          Das habe ich bisher als einen internen Boolean verstanden der bei false "ist falsch" und bei true "ist wahr" an's Webinterfce bzw. die Programmierschnittstelle liefert, damit man einfacher damit umgehen kann.

          In IoBroker unter Zustände wird diese Systemvariable auch mit der Werteliste true, false angezeigt. Für mich war das immer ziemlich boolean.

          Oder ist die Variable jetzt tatsächlich ein String?????

          Kennt die CCU gar keine echten Booleans?

          @derrapf:

          Indem der richtige Typ geschrieben wird (z.B. mit setState(id, val)). `
          Verstehe ich nicht. Die Variable ist ja durch die CCU definiert und wird durch obj.newState.val nur referenziert.

          Oder hab ich jetzt was falsch verstaden?

          @derrapf:

          Man kann nur Funktionen von Skripten, die als global deklariert wurden (Gruppe "global") aus anderen Skripten aufrufen. `
          Ah. Das heisst wenn ich Methoden habe die ich in vielen Scripten verwenden möchte, dann sammle ich diese in einem Script und hake dort "global" an. Dann kann ich sie von überall her aufrufen. Hab ich das richtig verstanden?

          Gruss Ralf

          1 Reply Last reply Reply Quote 0
          • blauholsten
            blauholsten Developer last edited by

            @derrapf:

            Ah. Das heisst wenn ich Methoden habe die ich in vielen Scripten verwenden möchte, dann sammle ich diese in einem Script und hake dort "global" an. Dann kann ich sie von überall her aufrufen. Hab ich das richtig verstanden?

            Gruss Ralf `

            Hi,

            ja. Wenn du global z.B. eine function deklarierst

            function global(){
            log('hallo Welt')}
            

            Kannst du diese von überall aufrufen.

            Zum Thema boolsche Werte, probier doch mal

                on(id_boolscheSysvar, function (obj) {
                log(obj.newState.val);
                }
            
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by

              @derrapf:

              Die Variable ist bei mir in der CCU als "Logikwert" definiert mit den Werten wahr = "ist wahr", falsch = "ist falsch"

              Das habe ich bisher als einen internen Boolean verstanden der bei false "ist falsch" und bei true "ist wahr" an's Webinterfce bzw. die Programmierschnittstelle liefert, damit man einfacher damit umgehen kann. `
              Ja an das Webinterface und an die WebUI Porogrammierschnittstelle wird der Zustandstext geliefert, nicht jedoch an HM Script.

              Ich vermute allerdings, dass Du den Wert der Variablen im Reiter "Zustände" manuell geändert hast. Das funktioniert leider (noch) nicht. Bei manueller Änderung wird der Wert zum String, indem "ist wahr" bzw. "ist falsch" in den Wert eingetragen wird.

              Also Logikwerte aus der CCU vorläufig nicht in ioBroker manuell ändern ! Bei allen anderen Datenpunkttypen funktioniert die manuelle Änderung im Reiter "Zustände" korrekt (auch bei "Werteliste").

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

                @blauholsten:

                Wenn du global z.B. eine function deklarierst

                function global(){
                log('hallo Welt')}
                

                Kannst du diese von überall aufrufen. `
                Wenn Du eine Funktion innerhalb eines globalen Skriptes (Skript in Gruppe "global") deklarierst,

                function meine_globale_Funktion(x, y) {
                   mache was mit x und y
                }
                

                kannst Du diese Funktion von überall aufrufen.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                1.2k
                Online

                31.7k
                Users

                79.7k
                Topics

                1.3m
                Posts

                3
                6
                1122
                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