Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. catch error bei setState

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    catch error bei setState

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

      Hallo zusammen,

      ich arbeite an einem Skript um meine Geräte über rhasspy zu steuern.
      Das ganze funktioniert auch schon recht gut.
      Allerdings kann es bei der Sprachsteuerung auch vorkommen, dass rhasspy einen Satz erkennt der nicht korrekt aufgelöst werden kann.

      z.B.
      Rollo Wohnzimmer ein

      Der Zustand welcher den Rollo schaltet erwaret allerdings eine Zahl zwischen 0 und 100 und somit wirft die folgende Zeile in meinem Skript einen Fehler.

      setState(lightId, state);
      

      In dem Beispiel hat "state" den wert true. (Weil im Satz das Wort "ein" kam)

      Folglich korrekt erhalte ich einen Fehler.

      You are assigning a boolean to the state "shelly.0.SHSW-25#691E51#1.Shutter.Position" which expects a number. Please fix your code to use a number or change the state type to boolean.
      

      An der Stelle würde ich gerne ein Error Handling einbauen und hatte das über "Try...Catch" versucht.
      Allerginds klappt das nicht.

      try {
         setState(lightId, state);
      }
         catch (e) {
         //do something
      }
      

      Kann ich bei setState kein "Try...Catch" verwenden oder mache ich es falsch?

      Alternativ müsste ich vorher Abfragen welchen Wert der Zustand erwartet und selbst eine If Abfrage bauen.

      Gruß
      T

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

        @DerT sagte:

        erhalte ich einen Fehler.

        Wenn man die Warnung vermeiden will, muss man prüfen

        if(typeof state == 'number') setState(lightId, state);
        
        D 1 Reply Last reply Reply Quote 0
        • D
          DerT Forum Testing @paul53 last edited by

          @paul53
          Danke für die Info.
          Allerdings ist es nicht ganz so einfach.
          Es kann an dieser Stelle im Skript durchaus sein dass setState mit einem boolschen Wert benötigt wird.

          Wenn zum Beispiel der Satz lautet.

          Licht Wohnzimmer an.

          Wird bei setState(lightId, state) ein boolscher Wert erwartet.

          Habe ich die Möglichkeit im Skript abzufragen um welchen Typ es sich beim Datenpunkt handelt?

          Sowas wie.

          const type = getStateType(lightId); //Liefert den Typen des Datenpunkts zurück
          if (typeof state === type) {
              //do something;
          } 
          else {
             //error handling;
          }
          

          Gruß
          T

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

            @DerT sagte:

            abzufragen um welchen Typ es sich beim Datenpunkt handelt?

            if(typeof state == getObject(lightId).common.type) setState(lightId, state);
            
            D 1 Reply Last reply Reply Quote 0
            • D
              DerT Forum Testing @paul53 last edited by

              @paul53 sagte in catch error bei setState:

              if(typeof state == getObject(lightId).common.type) setState(lightId, state);

              perfekt.
              Genau danach habe ich gesucht.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              966
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              310
              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