Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst ]Name vom Objekt oberhalb

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst ]Name vom Objekt oberhalb

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

      String nehmen, nach '.' aufspalten, das letzte Element im Array wegwerfen, mit '.' dazwischen wieder zusammen bauen

      1 Reply Last reply Reply Quote 0
      • cash
        cash Most Active last edited by

        sorry ich verstehe nur Bahnhof?
        Was heißt String nehmen? Aufspalten ist ok.

        .split('.')
        

        was wegwerfen und was zusammenbauen?

        1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active last edited by cash

          var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
          var split = id_Sonos_Coordinator.split('.');
          log(split);
          
          
          
          

          ergibt:

          Script.js.Test.Test_Name_ermitteln: sonos,0,root,192_168_178_35,coordinator
          
          Asgothian 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @cash last edited by paul53

            @cash Vorschlag:

                var parent = id.substring(0, id.lastIndexOf('.'));
                var name = getObject(parent).common.name;
            
            1 Reply Last reply Reply Quote 0
            • cash
              cash Most Active last edited by

              ok und ein

              log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]);
              

              ergibt:

              sonos.0.root.192_168_178_35
              

              nur einfach ein .common.name daran funktioniert nicht...

              1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @cash last edited by Asgothian

                @cash soweit schon so schön. Wenn du jetzt aus dem array das du bekommst den letzten Eintrag (das 'coordinator' wegnimmst, dann kannst du das ganze per

                split.length --
                id = split.join('.') 
                

                dann hast du die id des Objekts darüber.

                an den Namen kommst du meines Wissens über getObject(id).common.name

                @paul53 sagte in Name vom Objekt oberhalb:

                @cash Vorschlag:
                var parent = id.substring(0, id.lastIndexOf('.'));
                var name = getObject(parent).common.name;

                oder so 🙂

                1 Reply Last reply Reply Quote 0
                • cash
                  cash Most Active last edited by

                  @paul53 das funktioniert leider nicht:

                  var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
                  var split = id_Sonos_Coordinator.split('.');
                  //log(split);
                  //log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]);
                  var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.'));
                  var name = getObject(devid).common.name;
                  log('Name: ' +name);
                  

                  Ergibt keine Ausgabe im Log.

                  1 Reply Last reply Reply Quote 0
                  • cash
                    cash Most Active last edited by

                    @Asgothian said in Name vom Objekt oberhalb:

                    split.length --
                    id = split.join('.')

                    ja das funktioniert:

                    var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
                    var split = id_Sonos_Coordinator.split('.');
                    //log(split);
                    //log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]);
                    var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.'));
                    //var name = getObject(devid).common.name;
                    //log('Name: ' +name);
                    split.length --
                    var id = split.join('.')
                    log('id: ' +id);
                    log(getObject(id).common.name);
                    

                    Ok muss mal drüber googeln. Das join verstehe ich. da .length -- verstehe ich nicht. Bin halt leider kein Programmierer.

                    Danke auf jeden Fall

                    1 Reply Last reply Reply Quote 0
                    • Asgothian
                      Asgothian Developer last edited by

                      das ist eigentlich ganz einfach..

                      split.length gibt die die Länge des Arrays zurück, das du durch das aufsplitten bekommen hast
                      das -- reduziert den um 1, sprich der letzte Eintrag im Array fällt weg.
                      das join fuegt dann die verbleibenden wieder zusammen.

                      A.

                      1 Reply Last reply Reply Quote 0
                      • cash
                        cash Most Active last edited by

                        @Asgothian Vielen Dank für die Erklärung und die Geduld
                        @paul53 auch Dir vielen Dank. Deine Lösung funktionierte genauso. Keine Ahnung was ich da beim ersten Versuch falsch gemacht habe.

                        Ich habe jetzt nochmal beide Sachen getestet und vorlagen verstanden. So sind beide Lösungen logisch.

                        Hier also nochmal die beiden Lösungsmöglichkeiten:

                        var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
                        
                        //Methode 1
                        var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.'));
                        var common_name1 = getObject(devid).common.name;
                        log('Name Methode1: '+common_name1);
                        
                        //Methode 2
                        var split = id_Sonos_Coordinator.split('.');
                        split.length --
                        var id = split.join('.')
                        var common_name = getObject(id).common.name;
                        log('Name Methode2: ' +common_name);
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        641
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        javascript
                        3
                        11
                        604
                        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