Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Frage zu "getIdByName()

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Frage zu "getIdByName()

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by

      Hallo,

      mit diesem Blockly versuche ich die Lautstärke eines variablen Echo-Dot zu setzten.

      Ändert sich der Wert "l_EchoDot", dann setzte Volume des Echos mit Namen (m_EchoDot) entsprechend.

      44ab5a81-16f2-4d88-8b7c-aca215df2516-image.png

      Da ich Blockly "getIdByName" nicht finde, habe ich das in die Funktion gepackt.!

      53562ae1-4ff9-4c98-b51f-27c039176e34-image.png

      volume = 0-100
      Echodot = ist der Name des Gerätes hier bspw. "Echo-Buero" - Name ist natürlich eindeutig.

      Beim Funktionsaufruf tritt aber ein Fehler auf und komme da nicht weiter .. :

      State "alexa2.0.Echo-Devices.G0911Wxxxxxxxxxx,alexa2.0.Smart-Home-Devices.123123123-1232-1233-123a-412312312313.Player.volume" not found

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

        @muetzeheinrich
        Du übergibst an getIdByName(name) den Wert eines Datenpunktes, nicht den Namen des Gerätes. Besser so:

        Bild_2021-02-12_233550.png

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @paul53 last edited by A Former User

          @paul53

          gestern Abend war das Brett vorm Kopf schon ziemlich dick 😵

          dde751e8-386e-4f0b-b43e-bd4aecfefbdd-image.png

          Ich möchte die Werte der beiden Datenpunkte der Funktion übergeben. Volume hier "56" und Dot ist "Echo-Buero".

          Erst als ich testweise auch mit deiner Variante Warnung erhalten habe ist mir aufgefallen, dass der Namen des Echos-Dot nicht eindeutig ist.
          Der kommt einmal unter "alexa2.0.Echo-Devices" und ein weiteres mal unter "alexa2.0.Smart-Home-Devices" vor.

          Schade - dann kann so nicht funktionieren. Bin mir auch unsicher, ob man den Namen unter "alexa2.0.Echo-Devices" manuell ändern kann - wird wahrscheinlich wieder überschrieben.

          LG

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @Guest last edited by

            @paul53

            ich bin leider immer noch mit dem Blockly zugange.

            Kann es sein das Namen kein ASCII 45 (-) enthalten sollte?

            "Echo-Schlafzimmer" führt zu State "undefined.Player.volume" not found

            "EchoSchlafzimmer" hingegen funktioniert.

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

              @muetzeheinrich sagte: Kann es sein das Namen kein ASCII 45 (-) enthalten sollte?

              Im Namen sind alle Zeichen möglich, das "-" sollte kein Problem sein.

              ? 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @paul53 last edited by

                @paul53

                .. habe es noch mal geprüft. Es ist wirklich so !

                "Echo-Buero" führt zur Warnung "State "undefined.Player.volume" not found"
                "EchoBuero" findet das Gerät und setzt volume.

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

                  @muetzeheinrich
                  Dann checke mal mit einem TestSkript, wenn der Name "Echo-Schlafzimmer" ist:

                  log(getIdByName("Echo-Schlafzimmer"));
                  
                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @paul53 last edited by

                    @paul53 sagte in Frage zu "getIdByName():

                    log(getIdByName("Echo-Schlafzimmer"));

                    script.js.TEST.ss99: undefined

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

                      @muetzeheinrich sagte: script.js.TEST.ss99: undefined

                      Das Objekt mit dem Namen "Echo-Schlafzimmer" existiert?

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @paul53 last edited by

                        @paul53
                        b5f531b4-a77f-4270-af9e-5f3acad9b23b-image.png

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

                          @muetzeheinrich
                          Komisch: Ich habe es gerade mit einem Device-Namen "Echo-Schlafzimmer" getestet und es funktioniert.

                          ? 1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @paul53 last edited by

                            @paul53

                            "das gibst doch nicht" war meine erste Reaktion! Irgendwo muss aber ein Unterschied sein ..

                            {
                              "from": "system.adapter.alexa2.0",
                              "user": "system.user.admin",
                              "ts": 1613250245358,
                              "common": {
                                "name": "Echo-Schlafzimmer",
                                "read": true,
                                "write": false,
                                "icon": "icons/echo_dot3.png"
                              },
                              "native": {},
                              "acl": {
                                "object": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator"
                              },
                              "_id": "alexa2.0.Echo-Devices.G090Xxxxxxxxxxxxx",
                              "type": "device"
                            }
                            

                            log(getIdByName("Echo-Schlafzimmer")); erzeugt :
                            22:35:01.450 info javascript.0 (25703) script.js.TEST.ss99: undefined

                            ich weis gerade nicht weiter .

                            ? 1 Reply Last reply Reply Quote 0
                            • ?
                              A Former User @Guest last edited by

                              @paul53

                              Versuch mit "EchoSchlafzimmer gibt die ID wieder..

                              25703) script.js.TEST.ss99: alexa2.0.Echo-Devices.G090XG1103xxxxxxx
                              
                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Guest last edited by paul53

                                @muetzeheinrich sagte: Versuch mit "EchoSchlafzimmer gibt die ID wieder..

                                Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu. Es ist offenbar ein Puffer-Problem.

                                ? 1 Reply Last reply Reply Quote 0
                                • ?
                                  A Former User @paul53 last edited by A Former User

                                  @paul53 sagte in Frage zu "getIdByName():

                                  Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu.

                                  javascript.0	2021-02-13 23:03:40.095	info	(13206) script.js.TEST.ss99: registered 0 subscriptions and 0 schedules
                                  javascript.0	2021-02-13 23:03:40.094	info	(13206) script.js.TEST.ss99: undefined
                                  javascript.0	2021-02-13 23:03:40.086	info	(13206) Start javascript script.js.TEST.ss99
                                  
                                  ? paul53 2 Replies Last reply Reply Quote 0
                                  • ?
                                    A Former User @Guest last edited by

                                    @paul53

                                    b5b61f27-9059-4a31-87dd-251f5d60131a-image.png

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

                                      @muetzeheinrich sagte: script.js.TEST.ss99: undefined

                                      Mit?

                                      log(getIdByName("Echo-Schlafzimmer"));
                                      

                                      Ich habe "Echo-Schlafzimmer" in "Aussen / Garten" geändert und erst nach Neustart der Javascript-Instanz funktionierte

                                      log(getIdByName('Aussen / Garten'));
                                      
                                      ? 1 Reply Last reply Reply Quote 0
                                      • ?
                                        A Former User @paul53 last edited by A Former User

                                        @paul53

                                        ! zuerst mal für vielen Dank für deine Zeit.

                                        Es ist so, wie du es geschrieben hast. Wenn die Javascript-Instanz nach umbennen von Namen neu gestartet wird, dann klappt es. Vielleicht wird ein cache neu erzeugt - habe es heute noch ein paar mal hin und her probiert. Sehr wahrscheinlich habe gestern die falsche JS-Instanz neu gestartet.

                                        Das löst leider mein ursprüngliches Problem der mehrfach vorkommenden Gerätenamen nicht. Ich habe nur wenig Javascript Kenntnis, für if then else reicht es aber 🙂 .
                                        Mit Versuch und Irrtum ist nun diese Blockly-Funktion entstanden , vielleicht geht es auch sicherer / einfacher

                                        var arr = getIdByName(echodot);
                                        
                                        if (arr != null) {
                                            for (var i = 0; i < arr.length; i++) {
                                                if (arr[i].indexOf("Echo-Devices") > -1) {
                                                    setState(arr[i] + '.Player.volume', volume)
                                                }
                                            }
                                        } else { log ("Echo nicht vorhanden") }
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        830
                                        Online

                                        32.0k
                                        Users

                                        80.4k
                                        Topics

                                        1.3m
                                        Posts

                                        2
                                        18
                                        521
                                        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