Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Selector mit variabler Raumbezeichnung

    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 variabler Raumbezeichnung

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

      Guten Morgen Community,
      ich bin schon eine ganze Weile auf der Suche nach einer Möglichkeit, den Selector dynamisch zu gestalten, um nicht für jeden Raum ein eigenes Script basteln zu müssen. Habe eine Möglichkeit gefunden, die aber nicht mehr funktioniert...
      Re: $-Selector / Raum dynamisch?

      Kann mit vielleicht jemand helfen, dieses Problem zu beheben oder für nicht behebbar zu erklären?
      Da ich keine Ahnung von Java habe, arbeite ich mit Blockly. Mein Selector sieht bis jetzt so aus:
      5d245513-d012-4812-8d17-67b3a803065b-grafik.png
      Die Zeile im Selector lautet: state[id=*](rooms=' + TESTRAUM + ')
      Hierbei werden allerdings keine Geräte ausgegeben.

      bahnuhr 1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @HobbyBastler last edited by bahnuhr

        @hobbybastler
        Der im Link genannte Befehl funktioniert einwandfrei.

        var cacheSelectorFenster = $('channel[state.id=*.STATE](functions=Verschluss)(rooms=' + VARIABLE + ')');
        

        Kann es sein, dass hinter ) noch ein ' muss ?
        auch dürfte [ am Anfang falsch gesetzt sein.

        Vergleiche den Befehl ganz genau !

        H 1 Reply Last reply Reply Quote 0
        • H
          HobbyBastler @bahnuhr last edited by

          @bahnuhr Danke schon mal für die frühe Antwort 🙂
          Gut zu wissen, dass es in Java funktioniert. Aber wie "übersetze" ich das für mich in Blockly?
          Wenn ich mein Blockly-Idee in Java übersetze sieht es so aus:

          SelektorUeberAlleRaeume = Array.prototype.slice.apply($('state[id=*](rooms=\' + TESTRAUM + \')'));
          

          Dabei irritieren mich die "" vor und nach der Variable etwas, aber die werden wohl automatisch erzeugt...

          bahnuhr paul53 3 Replies Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active @HobbyBastler last edited by bahnuhr

            @hobbybastler sagte in Selector mit variabler Raumbezeichnung:

            state[id=*]

            Meinen Beitrag hast du aber schon gelesen.

            Dein state passt doch nicht zum Muster, oder ?

            Was hast du probiert ?

            Blockly mach ich nicht, da muss im Zweifel jemand anders helfen.

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @HobbyBastler last edited by bahnuhr

              @hobbybastler
              a6bd0e1f-8127-4eca-ae92-b2fa4ad39bf6-image.png

              An diesen Stellen stimmt es nicht !
              Nochmal:
              Vergleich dein Script mit dem Muster !

              Und hier:
              77c4576a-972a-4da8-97f0-3c940dc419d0-image.png
              stimmt es auch nicht.

              H 1 Reply Last reply Reply Quote 0
              • H
                HobbyBastler @bahnuhr last edited by

                @bahnuhr ich habe das Script jetzt noch mal deutlicher angepasst. Es sieht jetzt so aus

                SelektorUeberAlleRaeume = Array.prototype.slice.apply($('channel[state.id=*.STATE](rooms=\' + TESTRAUM + \')'));
                

                und funktioniert immer noch nicht. Du müsstest mir allerdings mal erklären wofür das ".STATE" steht, ich ging immer davon aus, dass es ein Platzhalter für den tatsächlichen State ist. Aber wenn ich es für dich anpassen sollte, scheint es ja eine andere Funktion zu haben... Welche?
                Die "\" vor und nach der Variablen werden scheinbar automatisch erzeugt beim transkribieren von Blockly in Java. Die kann ich auch leider nicht entfernen... Aber schon plausibel, dass das dann letztlich die Probleme wären, oder?

                H bahnuhr 2 Replies Last reply Reply Quote 0
                • H
                  HobbyBastler @HobbyBastler last edited by HobbyBastler

                  @hobbybastler JA, das war das Problem. Weiss zwar noch nicht, wie ich es löse, aber die "\" müssen aus dem Selektor raus! Danke für deine Unterstützung!!!!!

                  1 Reply Last reply Reply Quote 0
                  • bahnuhr
                    bahnuhr Forum Testing Most Active @HobbyBastler last edited by

                    @hobbybastler
                    Was willst du denn machen ?
                    Hab ich bisher nicht gelesen; oder überlesen.

                    Erklärung:
                    Mit dem Selektor kannst du DP ermitteln mit denen du dann weiterarbeiten kannst.

                    *.STATE
                    findet alle DP im DP das Wort STATE drin haben.
                    Also alle DP die geschaltet werden können.
                    Mit dem \ weiß ich nicht. Kann sein, dass Blockly das rein macht.

                    Aber Blockly kann ich nicht.

                    H 1 Reply Last reply Reply Quote 0
                    • H
                      HobbyBastler @bahnuhr last edited by HobbyBastler

                      @bahnuhr Der Plan ist folgender:
                      ich möchte ein einzelnes Script erstellen, dass prüft, ob in einem Raum die Fenster offen und die Heizung eingeschaltet ist. Der Selektor soll also alle Fenster (functions) aufrufen die im Raum (z.B. Badezimmer) sind. Da ich nun aber nicht für jeden Raum ein eigenes Script erstellen will, soll der Raum dynamisch sein. Also eine Variable, genauso wie in dem Link, den ich anfangs beigefügt hab. Das hat irgendwann auch mal funktionier, aber schon seit einer Weile nicht mehr. Und wenn ich das Blockly(!) jetzt neu erstelle, kommen immer die "\" dazwischen, die das Ganze dann aushebeln. Wüsste also jetzt nur noch gerne, wie ich die weg bekomme... Aber das ist dann ein Blockly-Problem

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

                        @hobbybastler sagte: Das hat irgendwann auch mal funktionier, aber schon seit einer Weile nicht mehr.

                        Siehe hier.

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

                          @hobbybastler sagte: Aber wie "übersetze" ich das für mich in Blockly?

                          JS-Funktion mit Ergebnis. Beispiel:

                          return $('*(rooms=' + room + ')').toArray();
                          

                          room ist der Funktionsparameter.

                          H 1 Reply Last reply Reply Quote 0
                          • H
                            HobbyBastler @paul53 last edited by

                            @paul53 DAS ist natürlich ne super Idee. Werd ich gleich mal testen!!!

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              HobbyBastler @HobbyBastler last edited by HobbyBastler

                              @paul53
                              hat funktioniert. Und um die Objekt-ID auch noch variabel zu gestalten, habe ich den Code noch variiert zu

                              return $('state[id=' + varState + '](rooms=' + room + ')').toArray();
                              

                              Damit wende ich das jetzt auf alle Geräte im Script an. HERZLICHEN DANK!!! und einen schönen Feiertag
                              Für andere mit dem selben Problem: habe für Blockly nun folgende Funktion erstellt, mit der man flexibel die Objekte, Räume und Funktionen einstellen, wahlweise auch freilassen kann:
                              653c4e3b-2275-4e46-8d7a-d2a1c1083c3e-image.png
                              mit der JS-Funktion

                              return $('state' + 
                                  (Objekte ? '[id=' + Objekte + ']' : '') + 
                                  (Raum ? '(rooms=' + Raum + ')' : '') + 
                                  (Funktion ? '(functions=' + Funktion + ')' : '')
                              ).toArray()
                              
                              T 1 Reply Last reply Reply Quote 0
                              • T
                                TobiB @HobbyBastler last edited by

                                @hobbybastler

                                Hallo zusammen,

                                ich bin gerade auf diesen Beitrag gestoßen und erhoffe mir, dass ich hier vielleicht den Denkanstoß für mein vorhaben bekomme.

                                Ich möchte in Blockly abbilden, dass wenn Windstärke x m/s erreicht hat, dass alle Rollos in Raum oder Räumen x hochgefahren werden dazu muss der wert 0 in "ID" Position eingetragen werden.

                                Wie weiße ich deiner Funktion die passenden Objekte und Raum zu?

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

                                  @tobib sagte: alle Rollos

                                  Welche eindeutige Gemeinsamkeit haben die Rollos (in der ID und/oder im Gewerk)?

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    TobiB @paul53 last edited by

                                    @paul53

                                    Ich würde alle Rollos jeweils natürlich einen Raum zuweisen und auch ein Geschoss sowie jedem Rollo die Funktion "Rolladen" damit sollten sie auffindbar sein. Ich bin leider noch relativ neu daher verzeih mir meine Unwissenheit.

                                    Da ich noch nicht alle Rollos ausgestattet habe und nicht für jedes neue Rollo die Logik anpassen wollte klang das für mich nach einer dynamischen Lösung.

                                    Wenn es eine einfachere Lösung gibt bin ich dafür auch offen.

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

                                      @tobib sagte: dynamischen Lösung.

                                      Das könnte etwa so aussehen:

                                      Blockly_temp.JPG

                                      Die Schreibweise im Selektor muss wie in den IDs sein.

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        TobiB @paul53 last edited by TobiB

                                        @paul53

                                        Ich habe das eben auch nachgebaut - Danke dafür.

                                        Leider löst es noch nicht aus.

                                        Hier ist z.B. das Rollo für mein Büro und der Funktion "Rolladen", welche in den Kategorien mit shutters hinterlegt is.

                                        0e657295-c299-4573-b996-c53d373c62f7-image.png

                                        Ich habe jetzt zum testen das Bad-Licht als Trigger genommen:

                                        87bd36f0-947e-473e-84fe-94c2d3088c3b-image.png

                                        *EDIT FEHLER GEFUNDEN.

                                        Wie kann ich jetzt festlegen, dass ich z.B. nur die Rollos die dem Raum "Erdgeschoss" zugewiesen sind angesteuert werden?

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

                                          @tobib sagte: nur die Rollos die dem Raum "Erdgeschoss" zugewiesen sind angesteuert werden?

                                          Wenn es einen zugewiesenen Raum "enum.rooms.EG" gibt:

                                          Blockly_temp.JPG

                                          Wenn es alles gleiche Shellys für die Rollos sind, kann auf das Gewerk verzichtet werden:

                                          Blockly_temp.JPG

                                          T 1 Reply Last reply Reply Quote 0
                                          • T
                                            TobiB @paul53 last edited by

                                            @paul53

                                            Wow. Danke!

                                            Aktuell habe ich noch Shellys verbaut werde aber nach und nach auf HM ändern aber ich denke, dass die vermutlich auch "*Shutter.Position" als ID haben.

                                            Wie kriege ich hier noch ein Raum A und Raum B hin oder Raum "Haus" außer Raum "Schlafzimmer" falls es mal einen Verwendungszeck dafür gibt?

                                            ae70dd58-88e3-4ee1-a45d-cd0aafad17f9-image.png

                                            paul53 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            414
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            22
                                            706
                                            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