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. getState - warning log / JS Dokumentation

NEWS

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

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

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

getState - warning log / JS Dokumentation

Geplant Angeheftet Gesperrt Verschoben JavaScript
17 Beiträge 5 Kommentatoren 2.0k Aufrufe 4 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.
  • _ Offline
    _ Offline
    _steven_
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich bastel mir gerade 2 Scripte um mir das Wetter bei http://openweathermap.org/
    sowie das Tv programm aus einer Seite zu parsen, so dass ich mir die nächsten x Tagen anzeigen kann.

    Funktioniert auch soweit ganz gut.
    Nun aber zu meiner Frage:

    ich muss überprüfen, ob es einen State gibt, also frage ich diesen mit "getState" ab.
    Wenn nun der State nicht existiert, bekomme ich im Log eine Warning. Wieso?
    das ein state nicht existiert, ist doch valide.

    Kann man irgendwie anders überprfüen, ob ein State existiert, ohne dass ich eine Warning bekomme?

    Noch zu einem anderen Problem.
    Ich benutze die Doku von hier: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md
    jedoch finde ich diese persönlich nicht sehr gelungen.

    Es sind u.a. nicht alle Varianten, return values, sync oder async beschrieben.
    Derzeit schaue ich in die das TypeScript.
    Gibt es hier ggf. eine bessere Anleitung?
    (Und ja, natürlich ist es schön, erstmal eine Doku zuhaben :), Danke auch dafür.

    Viele Grüße
    Steven

    S 1 Antwort Letzte Antwort
    0
    • _ _steven_

      Hallo,
      ich bastel mir gerade 2 Scripte um mir das Wetter bei http://openweathermap.org/
      sowie das Tv programm aus einer Seite zu parsen, so dass ich mir die nächsten x Tagen anzeigen kann.

      Funktioniert auch soweit ganz gut.
      Nun aber zu meiner Frage:

      ich muss überprüfen, ob es einen State gibt, also frage ich diesen mit "getState" ab.
      Wenn nun der State nicht existiert, bekomme ich im Log eine Warning. Wieso?
      das ein state nicht existiert, ist doch valide.

      Kann man irgendwie anders überprfüen, ob ein State existiert, ohne dass ich eine Warning bekomme?

      Noch zu einem anderen Problem.
      Ich benutze die Doku von hier: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md
      jedoch finde ich diese persönlich nicht sehr gelungen.

      Es sind u.a. nicht alle Varianten, return values, sync oder async beschrieben.
      Derzeit schaue ich in die das TypeScript.
      Gibt es hier ggf. eine bessere Anleitung?
      (Und ja, natürlich ist es schön, erstmal eine Doku zuhaben :), Danke auch dafür.

      Viele Grüße
      Steven

      S Offline
      S Offline
      SaschaS
      schrieb am zuletzt editiert von
      #2

      @_steven_ hast du eine Lösung dafür gefunden?

      T 1 Antwort Letzte Antwort
      0
      • S SaschaS

        @_steven_ hast du eine Lösung dafür gefunden?

        T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von
        #3

        @SaschaS sagte in getState - warning log / JS Dokumentation:

        @_steven_ hast du eine Lösung dafür gefunden?

        var myState = $('state[state.id=javascript.0.test5.0.test]');
        if (Array.isArray(myState) &&  myState[0] == 'javascript.0.test5.0.test') {
          console.log('da');
        } else {
          console.log('weg');
        }
        

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        S 1 Antwort Letzte Antwort
        0
        • T ticaki

          @SaschaS sagte in getState - warning log / JS Dokumentation:

          @_steven_ hast du eine Lösung dafür gefunden?

          var myState = $('state[state.id=javascript.0.test5.0.test]');
          if (Array.isArray(myState) &&  myState[0] == 'javascript.0.test5.0.test') {
            console.log('da');
          } else {
            console.log('weg');
          }
          
          S Offline
          S Offline
          SaschaS
          schrieb am zuletzt editiert von SaschaS
          #4

          @ticaki @_steven_
          Danke für deine Antwort @ticaki. Allerdings komme ich mit deinem Code nicht weiter. Kannst du noch einmal prüfen.
          Er springt bei beiden Objekten in die Else-Bedingung..

          Nachtrag: Es liegt vermutlich am Array.isArray(myState). Wird der Array mit Einträgen beschrieben, dann hat er folgendes Format:

          javascript.0 (13463) script.js.Tests.Statusabfrage: {'0':'javascript.0.LWZ.ABTAUEN_VERDAMPFER','1':'javascript.0.LWZ.HEIZEN','2':
          

          und dieses Format wird von Array.isArray() nicht wie erhofft interpretiert.

          Array.isArray([1, 2, 3]);  // true
          Array.isArray({foo: 123}); // false
          Array.isArray('foobar');   // false
          Array.isArray(undefined);  // false
          
          // State ist true
          var myState = $('state[state.id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV]');
          if (Array.isArray(myState) &&  myState[0] == 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV') {
            console.log('da');
          } else {
            console.log("State existiert: " + Array.isArray(myState));  
            console.log("State existiert: " + myState[0]);
            console.log('weg');
          }
          
          //State existiert nicht
          var myState = $('state[state.id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN]');
          if (Array.isArray(myState) &&  myState[0] == 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN') {
            console.log('da');
          } else {
            console.log("State existiert nicht: " + Array.isArray(myState));  
            console.log("State existiert nicht: " + myState[0]);
            console.log('weg');
          }
          

          Im Log:

          17:50:49.415	info	javascript.0 (13463) Start javascript script.js.Tests.Statusabfrage
          17:50:49.452	info	javascript.0 (13463) script.js.Tests.Statusabfrage: State existiert: false
          17:50:49.453	info	javascript.0 (13463) script.js.Tests.Statusabfrage: State existiert: stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV
          17:50:49.453	info	javascript.0 (13463) script.js.Tests.Statusabfrage: weg
          17:50:49.470	info	javascript.0 (13463) script.js.Tests.Statusabfrage: State existiert nicht: false
          17:50:49.471	info	javascript.0 (13463) script.js.Tests.Statusabfrage: State existiert nicht: stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN
          17:50:49.471	info	javascript.0 (13463) script.js.Tests.Statusabfrage: weg
          17:50:49.471	info	javascript.0 (13463) script.js.Tests.Statusabfrage: registered 0 subscriptions and 0 schedules
          
          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            SaschaS
            schrieb am zuletzt editiert von
            #5

            Irgendwas passt da nicht zusammen.
            Ich gehe davon aus, dass beim obigen Code in der Zeile

            var myState = $('state[state.id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN]');
            

            ein 'state' zu viel drin ist. Denn mit der Zeile

            console.log($('state[id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.]'));
            

            erhalte ich:

            18:40:38.156	info	javascript.0 (13463) script.js.Tests.Statusabfrage: {'0':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.ABTAUEN_VERDAMPFER','1':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN','2':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV','length':3}
            

            Allerdings passt das nicht zu der Anzahl der states auf dem Bild... Ich erkenne keine Logik..
            006df1bc-3ae3-4d47-bae1-dd11ff7f30c1-image.png

            1 Antwort Letzte Antwort
            0
            • T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #6

              Ich muß jetzt mal kurz meinem Ärger Luft machen, dass alles was man nicht testet auch nicht so funktioniert wie man erhofft. :)

              Jetzt gehts:

              var myState = $('state[state.id=javascript.0.test5.0.test]');
              if (myState['length'] > 0) {
                console.log('da');
              } else {
                console.log('weg');
              }
              

              Die 2 Bedingung in if ist unnötig.
              Sry, hab dir bestimmt unnötige arbeit gemacht. :)

              Zu deinen weiteren Anmerkungen hab ich mich noch nicht tief genug eingearbeitet. Diese Selektor werden dafür verwendet "Arrays" bzw. Json von Objekten zu bekommen.
              z.B

              $('state[state.id=javascript.0.test5.0.*]');
              

              gibt dir alles unterhalb von ...test5.0.

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                SaschaS
                schrieb am zuletzt editiert von
                #7

                @ticaki Danke, dass du dir das noch einmal angeschaut hast. Brauchst dir aber keine Vorwürfe machen. Ich hab in der Zeit einiges dazugelernt.

                Muss dennoch noch einmal einhaken.

                @ticaki said in getState - warning log / JS Dokumentation:

                Zu deinen weiteren Anmerkungen hab ich mich noch nicht tief genug eingearbeitet. Diese Selektor werden dafür verwendet "Arrays" bzw. Json von Objekten zu bekommen.
                z.B
                $('state[state.id=javascript.0.test5.0.*]');

                gibt dir alles unterhalb von ...test5.0.

                Bei mir stimmt das nicht. Mit

                console.log($('state[id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.]'));
                

                oder

                console.log($('state[id=stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.*]'));
                

                sollte ich ja erhalten:
                992e7df2-1e9f-407f-99b3-6bb9d2dba92c-image.png

                Ich erhalte aber lediglich:

                07:31:21.722	info	javascript.0 (13463) script.js.Tests.Statusabfrage: {'0':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV','length':1}
                

                Und gestern Abend habe ich mit selbiger Abfrage mehr erhalten:

                18:40:38.156 info javascript.0 (13463) script.js.Tests.Statusabfrage: {'0':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.ABTAUEN_VERDAMPFER','1':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN','2':'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.SCHALTPROGRAMM_AKTIV','length':3}
                
                1 Antwort Letzte Antwort
                0
                • T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von
                  #8

                  Da muß ich passen, bei mir geht es in jedem von mir getesteten Zweig mit diesen beiden und zeigt auch den richtigen Inhalt an. Ist es möglich das die States garnicht existieren? Hast du unmittelbar um den Test herum ein Reload des Objekttab gemacht?

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  S 1 Antwort Letzte Antwort
                  0
                  • C Offline
                    C Offline
                    CruziX
                    schrieb am zuletzt editiert von CruziX
                    #9

                    Das sollte glaube auch so gehen

                    let exists = $(idVomDp);
                    

                    Müsste dann false sein, wenn er nicht vorhanden ist.
                    bzw. prüfe ich dann immer
                    if(!exists) {}

                    1 Antwort Letzte Antwort
                    0
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      Hallo zusammen, nehmt doch einfach existsState(id) :)

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      C S T 3 Antworten Letzte Antwort
                      3
                      • AlCalzoneA AlCalzone

                        Hallo zusammen, nehmt doch einfach existsState(id) :)

                        C Offline
                        C Offline
                        CruziX
                        schrieb am zuletzt editiert von
                        #11

                        @AlCalzone sagte in getState - warning log / JS Dokumentation:

                        existsState

                        Die Funktion gibt es?
                        Ist gar nicht in der Doku beschrieben

                        AlCalzoneA 1 Antwort Letzte Antwort
                        0
                        • C CruziX

                          @AlCalzone sagte in getState - warning log / JS Dokumentation:

                          existsState

                          Die Funktion gibt es?
                          Ist gar nicht in der Doku beschrieben

                          AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          @CruziX Ja gibt es. Sollte eigentlich auch im Dropdown für autocomplete auftauchen:

                          	/**
                          	 * Checks if the state with the given ID exists
                          	 */
                          	function existsState(id: string): boolean;
                          	/**
                          	 * Checks if the object with the given ID exists
                          	 */
                          	function existsObject(id: string): boolean;
                          

                          Wenn sie nicht in der Doku steht, ist natürlich doof.

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          C 1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA AlCalzone

                            @CruziX Ja gibt es. Sollte eigentlich auch im Dropdown für autocomplete auftauchen:

                            	/**
                            	 * Checks if the state with the given ID exists
                            	 */
                            	function existsState(id: string): boolean;
                            	/**
                            	 * Checks if the object with the given ID exists
                            	 */
                            	function existsObject(id: string): boolean;
                            

                            Wenn sie nicht in der Doku steht, ist natürlich doof.

                            C Offline
                            C Offline
                            CruziX
                            schrieb am zuletzt editiert von
                            #13

                            @AlCalzone Das ist natürlich praktisch ^^
                            Wo kann man denn die Funktionen im Code direkt ansehen?

                            AlCalzoneA 1 Antwort Letzte Antwort
                            0
                            • C CruziX

                              @AlCalzone Das ist natürlich praktisch ^^
                              Wo kann man denn die Funktionen im Code direkt ansehen?

                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              @CruziX Diese Datei enthält die Definitionen für Auto-Complete und Syntax-Check:
                              https://github.com/ioBroker/ioBroker.javascript/blob/master/lib/javascript.d.ts
                              Interessant wird es ab https://github.com/ioBroker/ioBroker.javascript/blob/5055cc9cb5e017c37eb9a64f0084e2a76fba26f2/lib/javascript.d.ts#L537

                              Die Funktionen selbst kannst du dir hier anschauen (sandbox-Objekt):
                              https://github.com/ioBroker/ioBroker.javascript/blob/5055cc9cb5e017c37eb9a64f0084e2a76fba26f2/lib/sandbox.js#L452

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              1 Antwort Letzte Antwort
                              1
                              • T ticaki

                                Da muß ich passen, bei mir geht es in jedem von mir getesteten Zweig mit diesen beiden und zeigt auch den richtigen Inhalt an. Ist es möglich das die States garnicht existieren? Hast du unmittelbar um den Test herum ein Reload des Objekttab gemacht?

                                S Offline
                                S Offline
                                SaschaS
                                schrieb am zuletzt editiert von
                                #15

                                @ticaki Der Cache des Browers hat mich in die Irre geführt.

                                1 Antwort Letzte Antwort
                                0
                                • AlCalzoneA AlCalzone

                                  Hallo zusammen, nehmt doch einfach existsState(id) :)

                                  S Offline
                                  S Offline
                                  SaschaS
                                  schrieb am zuletzt editiert von
                                  #16

                                  @AlCalzone said in getState - warning log / JS Dokumentation:

                                  Hallo zusammen, nehmt doch einfach existsState(id) :)

                                  Die macht das Leben so viel einfacher. Die kannte ich in der Tat noch nicht..Genial :-)

                                  1 Antwort Letzte Antwort
                                  0
                                  • AlCalzoneA AlCalzone

                                    Hallo zusammen, nehmt doch einfach existsState(id) :)

                                    T Nicht stören
                                    T Nicht stören
                                    ticaki
                                    schrieb am zuletzt editiert von
                                    #17

                                    @AlCalzone
                                    Danke

                                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                    Spenden

                                    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

                                    794

                                    Online

                                    32.4k

                                    Benutzer

                                    81.6k

                                    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