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. Blockly
  5. [gelöst] Variable in einem "IDs vom Selektor"

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    846

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Variable in einem "IDs vom Selektor"

Geplant Angeheftet Gesperrt Verschoben Blockly
11 Beiträge 3 Kommentatoren 736 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.
  • ? Ein ehemaliger Benutzer

    Moin,
    versuche gerade eine Variable für die "role" in den IDs vom Selektor zu übergeben, finde aber nirgends eine Beschreibung, oder ein Beispiel. Was ich gefunden habe, ist ein offenes Issue im JS Adapter hierzu, allerdings zu der "latest" JS.
    Github Issue JavaScript Adapter
    auch einen alten Forums Beitrag, der aber von @paul53 anscheinend gelöst wurde:
    [gelöst] Variable in einem "IDs vom Selektor"-Array
    Hintergrund ist, dass mit dem LoRaWAN Adapter Installationen von hunderten Heizkörperthermostaten realistisch werden. Der Adapter ist mittlerweile so aufgebaut, dass die Geräte ihre Nutzdaten in eine DB schreiben und steuerbar sind und auch automatisch state.roles bekommen, allein durch das Hinzufügen im LNS und dies geht auch per Bulk Import per JSON, oder cfg Datei. Ziel ist es ohne großen Aufwand einige Automatisierungen vornehmen zu können. Im ersten Schritt war angedacht, dass der Heizkörper runterregelt, wenn in diesem Raum das Fenster geöffnet wird. Den Geräten muss hierfür natürlich der Raum zugewiesen werden. Auch muss einem Fenster-Sensor die [role=sensor.window] zugewiesen sein, dass passiert mittlerweile auch automatisch.
    Ich triggere also auf alle roles=sensor.window in der Lorawan Instanz, hole mit der JS Funktion das Objekt zu dem State und zieh mir dort den Raum raus:
    ea9e7fb2-3a01-47e6-9bd4-b5a1113046a6-image.png

    const rooms=getObject(testID,"rooms")
    return rooms;
    

    673e355f-a156-42ba-8c44-7d530bd89874-image.png
    Nun ist bekannt, dass ein Fenster geöffnet wurde und in welchem Raum, in dem Fall "office"
    Nun soll die TargetTemperatur des entsprechnen Raums (office) auf 6 Grad gestellt werden.
    Wird der IDs vom Selektor ohne Variable, einfach mit (rooms=office) benutzt, so komme ich an den richtigen State.
    Probiere ich es mit der Übergabe als Variable nicht.
    c56ee6d7-32de-407e-ad94-3a3c0373b691-image.png

    f9947955-d5ce-4133-a8cd-371cf9774e48-image.png

    Wie müsste denn die Übergabe der Variable aussehen, damit das klappt?
    Und, gibt es eine Dokumentation, wo das ersichtlich ist?

    Das Blockly in JS Anicht:

    var testID, room2, room3;
    
    // Beschreibe diese Funktion …
    async function rooms() {
        const rooms=getObject(testID,"rooms")
        return rooms;
    }
    
    
    on({ id: [].concat(Array.prototype.slice.apply($('lorawan.1.* [role=sensor.window]'))), change: 'ne' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      testID = ('' + Array.prototype.slice.apply($('lorawan.1.* [role=sensor.window]')));
      console.info((await rooms()));
      room2 = getAttr((await rooms()), 'enumIds.0');
      console.error(room2);
      console.error((room2.slice(11, room2.length)));
      room3 = room2.slice(11, room2.length);
      console.warn(('Variable room3 ist: ' + String(room3)));
      console.info('lorawan.* [role=level.temperature] (rooms=office)');
      console.warn(Array.prototype.slice.apply($('lorawan.* [role=level.temperature] (rooms=office)')));
      console.info('lorawan.* [role=level.temperature] (rooms="+room3+")');
      console.error(Array.prototype.slice.apply($('lorawan.* [role=level.temperature] (rooms="+room3+")')));
      console.info('lorawan.* [role=level.temperature] (rooms=\'+room3+\')');
      console.error(Array.prototype.slice.apply($('lorawan.* [role=level.temperature] (rooms=\'+room3+\')')));
    });
    
    Es funktioniert weder:
    (rooms="+room3+")
    noch:
    (rooms='+room3+')
    
    
    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #2

    @j_paul sagte: Probiere ich es mit der Übergabe als Variable nicht.

    Offenbar wurde der Selektor verändert und es wird nun ein \ vor das Hochkomma gesetzt, womit es nicht funktioniert.
    So funktioniert es:

    return Array.prototype.slice.apply($('*.LoRaWAN.*[role=level.temperature](rooms='+room+')'));
    

    Blockly_temp.JPG

    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
    • paul53P paul53

      @j_paul sagte: Probiere ich es mit der Übergabe als Variable nicht.

      Offenbar wurde der Selektor verändert und es wird nun ein \ vor das Hochkomma gesetzt, womit es nicht funktioniert.
      So funktioniert es:

      return Array.prototype.slice.apply($('*.LoRaWAN.*[role=level.temperature](rooms='+room+')'));
      

      Blockly_temp.JPG

      ? Offline
      ? Offline
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von
      #3

      @paul53
      Vielen Dank, für Deine Antwort. Es ist nicht das erste mal, dass du mit deiner Antwort meinen Karren aus dem Dreck ziehst, ich weiß das zu schätzen. Es ist zwar eine Lösung, aber schön ist das nicht. Dass eine Funktion da war und nun raus genommen wurde ist das eine, dass dies aber

      • nicht in der Dokumentation zu finden ist
      • nicht im Change LOG zu finden ist
      • offen Issues dazu nicht beantwortet werden
        ist das andere. Dein "Offenbar" sagt mir, dass du dazu auch nichts gefunden hast.
        Ich werde es so machen, wie von dir aufgezeigt, nochmals danke!
      haus-automatisierungH 2 Antworten Letzte Antwort
      0
      • ? Ein ehemaliger Benutzer

        @paul53
        Vielen Dank, für Deine Antwort. Es ist nicht das erste mal, dass du mit deiner Antwort meinen Karren aus dem Dreck ziehst, ich weiß das zu schätzen. Es ist zwar eine Lösung, aber schön ist das nicht. Dass eine Funktion da war und nun raus genommen wurde ist das eine, dass dies aber

        • nicht in der Dokumentation zu finden ist
        • nicht im Change LOG zu finden ist
        • offen Issues dazu nicht beantwortet werden
          ist das andere. Dein "Offenbar" sagt mir, dass du dazu auch nichts gefunden hast.
          Ich werde es so machen, wie von dir aufgezeigt, nochmals danke!
        haus-automatisierungH Offline
        haus-automatisierungH Offline
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #4

        @j_paul Ja, das vorher war ein Bug. Richtig. Dass man da quasi per Code Injection Variablen einfügen kann war nie so geplant oder gedacht.

        Kann ich gern im Issue erklären und schließen

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        ? paul53P 2 Antworten Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          @paul53
          Vielen Dank, für Deine Antwort. Es ist nicht das erste mal, dass du mit deiner Antwort meinen Karren aus dem Dreck ziehst, ich weiß das zu schätzen. Es ist zwar eine Lösung, aber schön ist das nicht. Dass eine Funktion da war und nun raus genommen wurde ist das eine, dass dies aber

          • nicht in der Dokumentation zu finden ist
          • nicht im Change LOG zu finden ist
          • offen Issues dazu nicht beantwortet werden
            ist das andere. Dein "Offenbar" sagt mir, dass du dazu auch nichts gefunden hast.
            Ich werde es so machen, wie von dir aufgezeigt, nochmals danke!
          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von
          #5

          @j_paul sagte in [gelöst] Variable in einem "IDs vom Selektor":

          dies aber

          • nicht im Change LOG zu finden ist

          Steht doch drin

          IMG_8071.jpeg

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Antwort Letzte Antwort
          0
          • haus-automatisierungH haus-automatisierung

            @j_paul Ja, das vorher war ein Bug. Richtig. Dass man da quasi per Code Injection Variablen einfügen kann war nie so geplant oder gedacht.

            Kann ich gern im Issue erklären und schließen

            ? Offline
            ? Offline
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von Ein ehemaliger Benutzer
            #6

            @haus-automatisierung
            Danke für die Erklärung.
            "It‘s not a Feature, it‘s a Bug"
            kannte ich so rum noch nicht ;-)

            Die Angabe im Change Log hatte ich nicht mit der Übergabe einer Variablen in Zusammenhang gebracht, mein Fehler.

            haus-automatisierungH 1 Antwort Letzte Antwort
            0
            • ? Ein ehemaliger Benutzer

              @haus-automatisierung
              Danke für die Erklärung.
              "It‘s not a Feature, it‘s a Bug"
              kannte ich so rum noch nicht ;-)

              Die Angabe im Change Log hatte ich nicht mit der Übergabe einer Variablen in Zusammenhang gebracht, mein Fehler.

              haus-automatisierungH Offline
              haus-automatisierungH Offline
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #7

              @j_paul sagte in [gelöst] Variable in einem "IDs vom Selektor":

              "It‘s not a Feature, it‘s a Bug"

              Ja genau, wenn single quotes nicht escaped würden, wäre der JavaScript Code ja nicht gültig, sobald man nur eines verwendet z.B. Oder man konnte solchen Quatsch eingeben:

              '; const test = 123; hello();

              Und das ist ja wirklich nicht im Sinne dieser Blöcke, dass man darin programmieren kann.

              Genau so funktioniert übrigens SQL Injection auf Webseiten. Man gibt in ein Feld (z.B. für den Benutzernamen) weitere SQL-Syntax ein, in der Hoffnung den Befehl korrekt zu unterbrechen und dann weiteren Logik auszuführen / in der Datenbank andere Statements abzusetzen statt sich anzumelden.

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                @j_paul Ja, das vorher war ein Bug. Richtig. Dass man da quasi per Code Injection Variablen einfügen kann war nie so geplant oder gedacht.

                Kann ich gern im Issue erklären und schließen

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

                @haus-automatisierung sagte: das vorher war ein Bug

                Die Änderung seit Version 8.7.0 ist ein "breaking change", da der "Bug" in der Vergangenheit ausgenutzt wurde, um Variablen in den Selektor-String einzufügen.

                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

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @haus-automatisierung sagte: das vorher war ein Bug

                  Die Änderung seit Version 8.7.0 ist ein "breaking change", da der "Bug" in der Vergangenheit ausgenutzt wurde, um Variablen in den Selektor-String einzufügen.

                  haus-automatisierungH Offline
                  haus-automatisierungH Offline
                  haus-automatisierung
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #9

                  @paul53 Das war nur nie so dokumentiert und ist von Blockly auch nicht so gedacht bei Input Fields. Ist ja nirgendwo sonst so

                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                  📚 Meine inoffizielle ioBroker Dokumentation

                  ? 1 Antwort Letzte Antwort
                  0
                  • haus-automatisierungH haus-automatisierung

                    @paul53 Das war nur nie so dokumentiert und ist von Blockly auch nicht so gedacht bei Input Fields. Ist ja nirgendwo sonst so

                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #10

                    @haus-automatisierung
                    Sorry, falls das eine naive Frage sein sollte:
                    Liesse sich IDs von Selektor nicht als Block bauen, bei dem man, wie bei den anderen Blöcken auch, Möglichkeit hat Text/Variablen für states, roles, functions, rooms anzuheften? Dies könnte man ja auf erlaubte Zeichen begrenzen, damit nichts anbrennen kann.
                    Ja ich weiß, aber nein, von mir ist diesbezüglich kein PR zu erwarten.

                    haus-automatisierungH 1 Antwort Letzte Antwort
                    0
                    • ? Ein ehemaliger Benutzer

                      @haus-automatisierung
                      Sorry, falls das eine naive Frage sein sollte:
                      Liesse sich IDs von Selektor nicht als Block bauen, bei dem man, wie bei den anderen Blöcken auch, Möglichkeit hat Text/Variablen für states, roles, functions, rooms anzuheften? Dies könnte man ja auf erlaubte Zeichen begrenzen, damit nichts anbrennen kann.
                      Ja ich weiß, aber nein, von mir ist diesbezüglich kein PR zu erwarten.

                      haus-automatisierungH Offline
                      haus-automatisierungH Offline
                      haus-automatisierung
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #11

                      @j_paul Ja, könnte man natürlich machen

                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                      📚 Meine inoffizielle ioBroker Dokumentation

                      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

                      425

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      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