Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. String nach Boolean

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

String nach Boolean

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 1.3k Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    derrapf
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        derrapf
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • blauholstenB Offline
          blauholstenB Offline
          blauholsten
          Developer
          schrieb am zuletzt editiert von
          #4

          @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);
              }
          
          

          Entwickler vom: - Viessman Adapter
          - Alarm Adapter

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @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").

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @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.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              312

              Online

              33.0k

              Benutzer

              83.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe