Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. JavaScript
  5. catch error bei setState

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

catch error bei setState

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 2 Kommentatoren 414 Aufrufe 1 Watching
  • Ä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
    DerT
    Forum Testing
    schrieb am zuletzt editiert von
    #1

    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

    paul53P 1 Antwort Letzte Antwort
    0
    • D DerT

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @DerT sagte:

      erhalte ich einen Fehler.

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

      if(typeof state == 'number') setState(lightId, state);
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      D 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @DerT sagte:

        erhalte ich einen Fehler.

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

        if(typeof state == 'number') setState(lightId, state);
        
        D Offline
        D Offline
        DerT
        Forum Testing
        schrieb am zuletzt editiert von
        #3

        @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

        paul53P 1 Antwort Letzte Antwort
        0
        • D DerT

          @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

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @DerT sagte:

          abzufragen um welchen Typ es sich beim Datenpunkt handelt?

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

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          D 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @DerT sagte:

            abzufragen um welchen Typ es sich beim Datenpunkt handelt?

            if(typeof state == getObject(lightId).common.type) setState(lightId, state);
            
            D Offline
            D Offline
            DerT
            Forum Testing
            schrieb am zuletzt editiert von
            #5

            @paul53 sagte in catch error bei setState:

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

            perfekt.
            Genau danach habe ich gesucht.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            781

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            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