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. $-Selektor und Funktion?

NEWS

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

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

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

$-Selektor und Funktion?

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 3 Kommentatoren 1.0k Aufrufe 2 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.
  • GarfonsoG Offline
    GarfonsoG Offline
    Garfonso
    Developer
    schrieb am zuletzt editiert von
    #1

    Hi,

    irgendwie kriege ich es gerade nicht hin mit dem $-Selektor nach Funktionen zu filtern.
    Ich habe folgende Objekte:
    iobrokre-alias-plugs.PNG
    In jedem der Ordner gibt es einen state "state" den ich selektieren möchte für alle Geräte mit Funktion "Hintergrundbeleuchtung" (id: enums.functions.backlight).

    Probiert habe ich die folgenden (und auch mal Reihenfolge [] und () vertauscht, was nichts geändert hat):

    $('state(functions="backlight")[id=alias.0.plugs.*.state]'); //liefert einfach alle ...
    $('state(functions="Hintergrundbeleuchtung")[id=alias.0.plugs.*.state]'); //0 Elemtente ausgewählt
    

    Mit

    $('state(rooms="esszimmer")[id=alias.0.plugs.*.state]')
    

    kriege ich korrekt "{"0":"alias.0.plugs.ColaUhr.state","length":1}" als Ergebnis. Warum schaffe ich es nicht mit Funktion? grübel

    Jemand eine Idee?

    Dank :-)
    Garfonso

    Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

    Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

    paul53P 1 Antwort Letzte Antwort
    0
    • GarfonsoG Garfonso

      Hi,

      irgendwie kriege ich es gerade nicht hin mit dem $-Selektor nach Funktionen zu filtern.
      Ich habe folgende Objekte:
      iobrokre-alias-plugs.PNG
      In jedem der Ordner gibt es einen state "state" den ich selektieren möchte für alle Geräte mit Funktion "Hintergrundbeleuchtung" (id: enums.functions.backlight).

      Probiert habe ich die folgenden (und auch mal Reihenfolge [] und () vertauscht, was nichts geändert hat):

      $('state(functions="backlight")[id=alias.0.plugs.*.state]'); //liefert einfach alle ...
      $('state(functions="Hintergrundbeleuchtung")[id=alias.0.plugs.*.state]'); //0 Elemtente ausgewählt
      

      Mit

      $('state(rooms="esszimmer")[id=alias.0.plugs.*.state]')
      

      kriege ich korrekt "{"0":"alias.0.plugs.ColaUhr.state","length":1}" als Ergebnis. Warum schaffe ich es nicht mit Funktion? grübel

      Jemand eine Idee?

      Dank :-)
      Garfonso

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

      @Garfonso sagte:

      "Hintergrundbeleuchtung" (id: enums.functions.backlight).

      Dann muss (functions=backlight) verwendet werden; mit dem Namen funktioniert es nicht.

      @Garfonso sagte in $-Selektor und Funktion?:

      //liefert einfach alle ...

      Hast Du nach dem Zuordnen des Gewerkes mal die Javascript-Instanz neu gestartet ? Der Puffer ist sonst nicht aktuell.

      Schau mal in die Doku unter Objekttypen: Gerät sollte Eltern von Kanälen sein und nicht umgekehrt.

      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

      GarfonsoG 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Garfonso sagte:

        "Hintergrundbeleuchtung" (id: enums.functions.backlight).

        Dann muss (functions=backlight) verwendet werden; mit dem Namen funktioniert es nicht.

        @Garfonso sagte in $-Selektor und Funktion?:

        //liefert einfach alle ...

        Hast Du nach dem Zuordnen des Gewerkes mal die Javascript-Instanz neu gestartet ? Der Puffer ist sonst nicht aktuell.

        Schau mal in die Doku unter Objekttypen: Gerät sollte Eltern von Kanälen sein und nicht umgekehrt.

        GarfonsoG Offline
        GarfonsoG Offline
        Garfonso
        Developer
        schrieb am zuletzt editiert von
        #3

        @paul53 said in $-Selektor und Funktion?:

        @Garfonso sagte:

        "Hintergrundbeleuchtung" (id: enums.functions.backlight).

        Dann muss (functions=backlight) verwendet werden; mit dem Namen funktioniert es nicht.

        wenn functions=backlight in den String so einfüge, kriege ich wieder alle nicht nur die in Hintergrundbeleuchtung.

        @Garfonso sagte in $-Selektor und Funktion?:

        //liefert einfach alle ...

        Hast Du nach dem Zuordnen des Gewerkes mal die Javascript-Instanz neu gestartet ? Der Puffer ist sonst nicht aktuell.

        Sollte schonmal passiert sein, habe es zur Sicherheit nun noch einmal gemacht -> keine Änderung.

        Schau mal in die Doku unter Objekttypen: Gerät sollte Eltern von Kanälen sein und nicht umgekehrt.

        Hast recht, habe channel durch folder ersetzt.

        Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

        Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

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

          Kann zwar nicht dein Problem lösen jedoch diese 3 Strings funktionieren bei mir problemlos.

          'state[role=switch](functions=beleuchtung)'
          'state[role=value.temperature][state.id=linkeddevices.0.Haus.*](functions=temperatursensor)'
          'state[id=deconz.*.1.*](functions=beleuchtung)'
          

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          paul53P 1 Antwort Letzte Antwort
          0
          • T ticaki

            Kann zwar nicht dein Problem lösen jedoch diese 3 Strings funktionieren bei mir problemlos.

            'state[role=switch](functions=beleuchtung)'
            'state[role=value.temperature][state.id=linkeddevices.0.Haus.*](functions=temperatursensor)'
            'state[id=deconz.*.1.*](functions=beleuchtung)'
            
            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @ticaki sagte:

            funktionieren bei mir problemlos.

            Bei mir funktioniert es ebenfalls mit z.B.

            $('(functions=fenster)[id=alias.0.*]').each(function(id, i) {
                log(id);
            });
            

            wobei das Gewerk "Fenster" einem Gerät zugeordnet ist.

            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

            1 Antwort Letzte Antwort
            0
            • GarfonsoG Offline
              GarfonsoG Offline
              Garfonso
              Developer
              schrieb am zuletzt editiert von
              #6

              ok, danke für die Rückmeldungen.

              Dann gucke ich mal, ob es an der anderen Zuordnung liegt (obwohl es mit Raum so klappt).

              Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

              Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

              1 Antwort Letzte Antwort
              0
              • GarfonsoG Offline
                GarfonsoG Offline
                Garfonso
                Developer
                schrieb am zuletzt editiert von Garfonso
                #7

                Ok.. strange... da muss ich mal suchen oder ein issue aufmachen, glaube ich...

                Das hier funktioniert, aber nur, wenn der Javascript Adapter nicht alle states abonniert.

                $('[id=alias.0.plugs.*.state](functions=backlight)').each((id) => log(id));
                

                Wenn ich das aktiviere, dann spukt er wieder alle states aus. Wenn es deaktiviert ist, kommen nur, die, die ich will.

                //EDIT: Ok, daran lag es auch nicht... keine Ahnung, woran es genau liegt... eine Instanz, die wenige Skripte hat, funktioniert meistens (aber auch nicht immer). Die Instanz, wo viele Skripte drauf laufen und die ich seltener Neustarte produziert das Problem.
                Es gibt auch ein Issue dazu: https://github.com/ioBroker/ioBroker.javascript/issues/523 - mal sehen, ob ich was finden kann (aber da ich noch nicht weiß, wie man es reproduziert, ist das schwierig... hm).

                Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

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

                  Danke für das Wühlen nach dem Fehler. Ich denke das mein Problem mit "rooms" auch daran gelegen hatte. Hatte in fast allen Lampen-Objekten einen zweiten nicht löschbaren Raum drin, den ich mit:

                              if (enumObj.common.members.findIndex((a) => {return obj.includes(a)}) == -1 ) return;
                  

                  säubern mußte.

                  Mit functions hatte ich aber kein einziges Problem.

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  GarfonsoG 1 Antwort Letzte Antwort
                  0
                  • T ticaki

                    Danke für das Wühlen nach dem Fehler. Ich denke das mein Problem mit "rooms" auch daran gelegen hatte. Hatte in fast allen Lampen-Objekten einen zweiten nicht löschbaren Raum drin, den ich mit:

                                if (enumObj.common.members.findIndex((a) => {return obj.includes(a)}) == -1 ) return;
                    

                    säubern mußte.

                    Mit functions hatte ich aber kein einziges Problem.

                    GarfonsoG Offline
                    GarfonsoG Offline
                    Garfonso
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @ticaki
                    Gut, das du schreibst. ;-) Der Fehler ist in 4.5.0 behoben (in latest jetzt).

                    Der Fehler war so, dass sich die functions und rooms eine Objektes auf die höchsten Eltern übertragen haben. Und zwar immer nur die vom ersten betrachteten Objekt. Die haben die dann an alle ihre Kinder weitervererbt (was auch so gedacht ist). Besonders verwirrend war, das die Reihenfolge der Objekte dabei zufällig ist und der Fehler damit nicht immer auftritt (also er passiert schon immer, aber oft passiert halt nichts schlimmes -> der war schon recht lange da).

                    Also aus meinem Screenshot am Anfang als Beispiel:
                    Wenn der state "alias.0.plugs.Deko_Einfahrt.state" als erstes genommen wird, wird dabei auch das devices "alias.0.plugs.Deko_Einfahrt" betrachtet mit Funktion "Hintergrundbeleuchtung" und "Steckdose" und Raum "Innenhof". Diese drei Eigenschaften wurden dann falscherweise an "alias.0" vererbt -> für den Rest der Laufzeit haben alle Objekte in alias.0 diese Eigenschaften vererbt bekommen (die Vererbung nach unten, also von alias.0.plugs.Deko_Einfahrt auf alias.0.plugs.Deko_Einfahrt.state ist, wie im Admin angedeutet, so vorgesehen. Aber nach oben ist natürlich Quatsch). -> jedenfalls, wenn ein Objekt mit "Hintergrundbeleuchtung" als erstes angefasst wurde, hatten alle Objekte diese Funktion, wenn nicht, dann lief es richtig.

                    Vermutlich tritt der Fehler sehr selten auf, wenn die meisten states auf einer Ebene keine Funktionen / Räume haben. Aber in meinem Fall trat es halt recht häufig auf. Und ja, Räume sind genauso betroffen gewesen.

                    So, nun behoben. Gleichzeitig wurde auch das Cache Update verbessert -> wenn es sonst da keine Fehler gibt, sollten enum-Updates jetzt auch keinen Neustart vom javascript adapter mehr erfordern (habe ich aber nicht ausführlich getestet).

                    Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                    Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                    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

                    387

                    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