Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. $-Selector mit "functions=" liefert zu viele Kanäle

    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

    $-Selector mit "functions=" liefert zu viele Kanäle

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

      Moin,

      ich versuche mich gerade auch am ioBroker. Komme so langsam etwas rein, auch wenn ich mich echt noch orientieren muss.

      Ich habe mich zuerst am "Licht zählen"-Skript versucht.

      Ich verstehe die Rückgabe des $-Selectors bei meinem Test-Homematic-Zwischenstecker nicht.

      Es werden auch die virtuellen? Kanäle 4+5 zurückgegeben, obwohl bei diesen "functions="funcLight" nicht gesetzt ist?

      Test-Skript mit entsprechender Log-Meldung:

      function testFunctionsFilter( obj) {
          $('state[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){
              var status  = getState( id).val;
              var obj     = getObject( id);
      
              log( obj.common.name);
          });
      }
      
      function main() {
          setTimeout( function(){
              testFunctionsFilter( );
          }, 2000);
      }
      
      main();
      
      ---------
      
      Log
      18:50:55.080	[info]	javascript.0 Stop script script.js.common.test_functionsFilter
      18:50:56.301	[info]	javascript.0 Start javascript script.js.common.test_functionsFilter
      18:50:56.301	[info]	javascript.0 script.js.common.test_functionsFilter: registered 0 subscriptions and 0 schedules
      18:50:58.345	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:3.STATE
      18:50:58.346	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:4.STATE
      18:50:58.348	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:5.STATE
      
      ------
      

      9678_bildschirmfoto_2018-11-28_um_20.21.51.png

      Hab ich da eine Denkfehler?

      Danke

      raller09

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

        funcLight ist einem Kanal zugeordenet. Deshalb versuche es mal mit

            $('channel[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){
        
        
        1 Reply Last reply Reply Quote 0
        • R
          raller09 last edited by

          @paul53:

          funcLight ist einem Kanal zugeordenet. Deshalb versuche es mal mit

              $('channel[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){
          
          ```` `  
          

          Damit wird bei mir nichts gefunden.

          Ich gestehe, das mir die Unterscheidung channel/state und Namensgebung in ioBroker noch nicht ganz klar ist.

          Danke,

          raller09

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

            @raller09:

            Damit wird bei mir nichts gefunden. `
            Und so ?

                $('channel[id=*.STATE](functions="funcLight")').each( function( id, i){
            
            

            Stimmt die Schreibweise "funcLight" ? Das ist der Name des Gewerkes, entscheidend ist aber die ID "enum.functions.funcLight" !

            1 Reply Last reply Reply Quote 0
            • R
              raller09 last edited by

              @paul53:

              Und so ?

                  $('channel[id=*.STATE](functions="funcLight")').each( function( id, i){
              
              ```` `  
              

              auch nichts.

              "[role=switch]" hatte ich dazu genommen, da sonst auch der Kanal? "Wohnzimmer.Zwischenstecker:2.STATE" mit gefunden wird. Dieser wird auch beim Umschalten von ":3" einen kurzen Moment auf den gleichen Wert mit geschaltet.

              9678_bildschirmfoto_2018-11-28_um_21.13.01.png

              @paul53:

              Stimmt die Schreibweise "funcLight" ? Das ist der Name des Gewerkes, entscheidend ist aber die ID "enum.functions.funcLight" ! `

              Ich denke, hier mal die "enum.functions":

              9678_bildschirmfoto_2018-11-28_um_21.11.38.png

              Danke,

              raller09

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

                @raller09:

                auch nichts. `
                ?? Bei mir funktioniert es so:

                const hmLicht = $('channel[state.id=*.STATE](functions=funcLight)');
                
                hmLicht.each(function(id, i) {
                    log(id);
                });
                
                

                funcLight ist <u>einem</u> Kanal zugeordnet.

                Welche Version des JS-Adapters ?

                1 Reply Last reply Reply Quote 0
                • R
                  raller09 last edited by

                  Moin,

                  ich habe bei mir den Enum-Namen nach der Lektüre zur Heizungs-Steuerung angepasst (weil das anscheinend dort zu Problemen führen kann), und die englischen "Spezial-Namen" durch ihre deutsche Übersetzung ersetzt (von rega neu einlesen lassen). Danach habe ich auch noch einmal den gesamten rpi neu gestartet.

                  Daher muss ich jetzt "functions=Licht" benutzen.

                  @paul53:

                  ?? Bei mir funktioniert es so:

                  const hmLicht = $('channel[state.id=*.STATE](functions=funcLight)');
                  
                  hmLicht.each(function(id, i) {
                      log(id);
                  });
                  
                  ```` `  
                  

                  Dein alter Aufruf mit "$('channelid=*.STATE')" hat nicht funktioniert.

                  Dein neuer Aufruf mit "$('channelstate.id=*.STATE')" führt bei mir zu folgendem Ergebnis:

                  Log
                  
                  22:39:58.013	[info]	javascript.0 Stop script script.js.common.test_functionsFilter
                  22:39:58.024	[info]	javascript.0 Start javascript script.js.common.test_functionsFilter
                  22:39:58.024	[info]	javascript.0 script.js.common.test_functionsFilter: registered 0 subscriptions and 0 schedules
                  22:40:00.123	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:2.STATE
                  22:40:00.123	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:3.STATE
                  22:40:00.123	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:4.STATE
                  22:40:00.123	[info]	javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:5.STATE
                  

                  9678_bildschirmfoto_2018-11-28_um_22.47.39.png

                  Er findet jetzt ja also das Gewerk "Licht" bei den virtuellen? Kanälen ? :2 - :5, obwohl ich das nur bei :3 eingetragen habe?

                  @paul53:

                  funcLight ist <u>einem</u> Kanal zugeordnet. `

                  Das verstehe ich jetzt nicht. Was meinst du damit?

                  @paul53:

                  Welche Version des JS-Adapters ? `

                  Script Engine - Installierte Version: 3.6.4

                  Danke,

                  raller09

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

                    @raller09:

                    Script Engine - Installierte Version: 3.6.4 `
                    Diese Version verwende ich auch.
                    @raller09:

                    "$('channelstate.id=*.STATE')" führt bei mir zu folgendem Ergebnis: `
                    Sehr eigenartig :shock: Das kann ich bei mir nicht nachvollziehen:

                    Wenn ich das Gewerk nur einem Kanal zuordne, erhalte ich einen Datenpunkt, bei Zuordnung zu 2 Kanälen erhalte ich 2.

                    1 Reply Last reply Reply Quote 0
                    • W
                      Waly_de last edited by Waly_de

                      Bei mir tritt das auch auf. Hast Du inzwischen eine Lösung gefunden?

                      Mein Fall:

                      Ich selektiere mit:

                      $("state[state.id=*.LEVEL](functions='Licht')").each(function(id,i) {
                      

                      …alle Lichter.

                      Es geht dabei ausschließlich um Homematik-Geräte

                      Seit dem Letzten Update des HM-RPC Adapters auf 1.9.2 tritt das Problem bei allen alten (nicht IP) Dimmern auf:

                      2019-01-24 16:51:32.544 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.1.LEVEL name:WZ-Decke-Dimmer:1.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer

                      2019-01-24 16:51:32.546 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.2.LEVEL name:HM-LC-Dim1TPBU-FM JEQ0200834:2.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer

                      2019-01-24 16:51:32.549 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.3.LEVEL name:HM-LC-Dim1TPBU-FM JEQ0200834:3.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer

                      hm-rpc.2.JEQ0200834.2.LEVEL und hm-rpc.2.JEQ0200834.3.LEVEL sind aber nicht "Licht" zugeordnet.

                      Es werden aber auch Kanäle zurückgegeben die nicht dem Gewerk "Licht" zugeordnet sind.

                      In der Admin tauchen die Kanäle nicht unter den Aufzählungen bei "licht" auf.

                      Auch unter den "Objekten" in der Admin nicht.

                      Ich habe das Gerät auch schon komplett gelöscht und wieder angelegt. Ohne Erfolg.

                      Irgend welche Ideen?

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      821
                      Online

                      31.8k
                      Users

                      79.9k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      1590
                      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