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.
  • _ _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

                                  702

                                  Online

                                  32.5k

                                  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