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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • 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.
    • cash
      cash Most Active last edited by cash

      Ich bräuchte da mal wieder Hilfe.

      Ich habe einen Datenpunkt z. B.

      var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
      

      wie gelange ich per Javascript zum Objekt oberhalb um dort mittels common.name den Namen des Gerätes herauszufinden?

      Damit es deutlicher wird hier noch ein Bild:

      Bildschirmfoto 2019-03-15 um 18.52.12.png

      paul53 1 Reply Last reply Reply Quote 0
      • 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

                          442
                          Online

                          31.9k
                          Users

                          80.2k
                          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