Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] $-Selector liefert keine Werte

    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

    [gelöst] $-Selector liefert keine Werte

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      threedee last edited by

      Hallo,

      ich bin recht neu mit dem ioBrocker am ausprobieren und wollte Testweise ein Script schreiben welches mir alle Objekte der Aufzählung LichtSteuerung = DaemmerungOhneNacht liefert.

      folgendes Script habe ich benutzt

      ! ````
      function main() {
      log('Anfang');
      //$('state[id=*.state]').each(function(id) {
      $('channel(LichtSteuerung="DaemmerungOhneNacht")').each(function(id) {
      var val = getObject(id).common.name;
      log("DeviceST=" + val);
      });
      log('Ende');
      }
      ! main();

      
      leider liefert die Funktion keine Werte zurück.
      
      die Ausgabe im Log ist folgende
      

      09:55:20.595 [info] javascript.1 Start javascript script.js.common.Test.Skript3
      09:55:20.595 [info] javascript.1 script.js.common.Test.Skript3: Anfang
      09:55:20.595 [info] javascript.1 script.js.common.Test.Skript3: Ende
      09:55:20.595 [info] javascript.1 script.js.common.Test.Skript3: registered 0 subscriptions and 0 schedules

      
      wenn ich im Selektor auf alle Objekte mit id=*.state filtere funktioniert es und ich bekomme alle Objekte zurückgeliefert.
      
      Hat jemand eine Idee woran es liegen könnte?
      1 Reply Last reply Reply Quote 0
      • BuZZy
        BuZZy last edited by

        .. verstehe ich es richtig, dass du eine neue Aufzählung mit dem Namen "LichtSteuerung" erstellt hast und da drunter ein Objekt mit "DaemmerungOhneNacht" wo du die States/Gerät eingefügt hast?

        Ich gehe stark davon aus, dass es sich in der Aufzählung bei dir um States und nicht um Channels handelt.

        Dann:

        $('state(lichtsteuerung=daemmerungohnenacht)').each(function(id) {
        		log("State: " + id);
        	}
        );
        

        ****(JavaScript Adapter muss neu gestartet werden nachdem du die Aufzählung angelegt hast)

        Wenn du den JavaScript Adapter nicht neu startest "kennt" dieser die neue Aufzählung nicht.****

        Gruß

        1 Reply Last reply Reply Quote 0
        • T
          threedee last edited by

          Das hat leider auch nichts gebracht.

          Laut der Dokumentation:

          Format of selector:
          
          "name[commonAttr=something1](enumName=something2){nativeName=something3}[id=idfilter][state.id=idfilter]"
          name can be: state, channel or device "idfilter" can have wildcards '*'
          

          ich habe es eben noch mal mit state probiert, da ich in meinem enum nur states eingefügt habe. Dieses hat leider ebenso wenig geklappt wie der Test mit dem enum functions.Licht.

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            Poste mal einen Screenshot von deiner Enum, ist wahrscheinlich nur eine Kleinigkeit.

            1 Reply Last reply Reply Quote 0
            • BuZZy
              BuZZy last edited by

              Hast du den JavaScript Adapter neu gestartet?

              Groß-/Kleinschreibung der Aufzählung beachtet (Manuell erzeugte enums werden glaube ich im Objekt immer klein geschrieben)?

              Genau so funktioniert dein Script bei mir:

              function main() {
                  log('Anfang');
                  //$('state[id=*.state]').each(function(id) {
                  $('state(lichtsteuerung=daemmerungohnenacht)').each(function(id) {
                  var val = getObject(id).common.name;
                  log("DeviceST=" + val);
                  });
                  log('Ende');
              }
              
              main();
              

              Hab es schnell mal bei mir getestet:
              3092_screenshot_-_09.01.2018___11_04_23.png
              3092_screenshot_-_09.01.2018___11_18_47.png
              Gruß

              1 Reply Last reply Reply Quote 0
              • T
                threedee last edited by

                Ich habe 2 Javascript Instanzen. Habe beide neu gestartet. Wahrscheinlich reicht es aber doch nur den neuzustarten auf dem das Script läuft oder?

                Mein enum sieht wie folgt aus:
                2679_fehlerselector.png

                Gross/Kleinschreibung habe ich auch shcon sämtiche Kombinationen durch.

                1 Reply Last reply Reply Quote 0
                • BuZZy
                  BuZZy last edited by

                  Funktioniert bei mir.. Habe auch mal die Aufzählung mit zwei Tradfri Lampen erstellt..

                  Die Tradfri Lampen haben aber im Objekt als Name nur "on/off".. Aber dieser wird von dem Script ja korrekt ausgegeben:

                  3092_screenshot_-_09.01.2018___11_49_03.png
                  3092_screenshot_-_09.01.2018___11_49_19.png

                  Kopier dir hier den kompletten Code nochmal neu und versuch es nochmal.

                  function main() {
                      log('Anfang');
                      //$('state[id=*.state]').each(function(id) {
                      $('state(lichtsteuerung=daemmerungohnenacht)').each(function(id) {
                      var val = getObject(id).common.name;
                      log("DeviceST=" + val);
                      });
                      log('Ende');
                  }
                  
                  main();
                  

                  Gruß

                  1 Reply Last reply Reply Quote 0
                  • T
                    threedee last edited by

                    Heureka!!!!

                    Habe es rausgefunden. Es lag wirklich an der Gross-/Kleinschreibung. Bei mir ist der Name des Enums in Camel-Case geschrieben.

                    Ich Nase habe bei den Test aber dummerweise nur vorne das geändert und nicht im ganzen Namen. Und in meinen Tests habe ich dann wohl immer irgendwelche Kombinationen getestet die irgendeinen Haken drin hatten.

                    Vielen Dank für eure schnelle Hilfe

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    800
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    1745
                    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