Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Per Hand angelegte Objekte kopieren . .

    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

    Per Hand angelegte Objekte kopieren . .

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

      Hallo .

      Ich habe ein Objekt per Hand angelegt und es konfiguriert.

      2190_unbenannt1.png

      Wie kann ich dieses Objekt jetzt duplizieren und umbenennen ? Ich brauche mehrere Objekte mit den gleichen Einstellungen.

      Ich möchte nicht jedes mal alles neu eingeben . .

      Gruß Holger

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

        @Superuser:

        Wie kann ich dieses Objekt jetzt duplizieren und umbenennen ? Ich brauche mehrere Objekte mit den gleichen Einstellungen. `
        Ich benutze dafür diese Funktion in einem globalen Script:

        function copyDatapoint(src, dst) {
            var sid = getIdByName(src);
            var sdp = getObject(sid).common;
            createState(dst, sdp.def, { read: sdp.read,
                                        write: sdp.write,
                                        desc: sdp.desc,
                                        type: sdp.type,
                                        min: sdp.min,
                                        max: sdp.max,
                                        def: sdp.def,
                                        unit: sdp.unit,
                                        states: sdp.states
            });
        }
        
        
        1 Reply Last reply Reply Quote 0
        • S
          Superuser last edited by

          Hallo ..

          Geht das auch ohne Script ? Ist nicht so meine Welt. Ich weiß nicht genau wie ich es anwenden soll ..

          Gruß Holger

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

            @Superuser:

            Ich weiß nicht genau wie ich es anwenden soll .. `
            Du kannst ein nur dafür verwendetes Skript (z.B. Datenpunkte_kopieren) anlegen (aus dem Forum kopieren) und es bei Bedarf aktivieren. Im Beispiel wird aus dem Datenpunkt "Wohnen.Enthalpie" der Datenpunkt "Schlafen.Enthalpie" erzeugt:

            copyDatapoint('Wohnen.Enthalpie', 'Schlafen.Enthalpie');
            
            function copyDatapoint(src, dst) {
                var sid = getIdByName(src);
                var sdp = getObject(sid).common;
                createState(dst, sdp.def, { read: sdp.read,
                                            write: sdp.write,
                                            desc: sdp.desc,
                                            type: sdp.type,
                                            min: sdp.min,
                                            max: sdp.max,
                                            def: sdp.def,
                                            unit: sdp.unit,
                                            states: sdp.states
                });
            }
            
            

            Es müssen nur die Namen in der erste Zeile angepasst und dann das Skript gestartet werden.

            1 Reply Last reply Reply Quote 0
            • S
              Superuser last edited by

              Wenn Du mir netterweise noch kurz sagst wie ich ein Script anlege ?

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

                http://www.iobroker.net/?page_id=6818&lang=de; Enginetyp: "javascript/js" auswählen, common anwählen und "neues Skript" (Symbol oben links neben dem +) betätigen.

                493_copydp.jpg

                1 Reply Last reply Reply Quote 0
                • S
                  Superuser last edited by

                  Super Danke . . Es funktioniert . .

                  Aber er legt die neuen Datenpunkte unter javascript an. Kann ich auch selber Ordner anlegen und die da rein kopieren.?

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

                    @Superuser:

                    Aber er legt die neuen Datenpunkte unter javascript an. `
                    Ja, das macht createState(name) so.
                    @Superuser:

                    Kann ich auch selber Ordner anlegen und die da rein kopieren.? `
                    Dafür kenne ich keine Möglichkeit. Alternativ könnte man einen Datenpunkt unter einer beliebigen Struktur (Adapter) anlegen, dabei nur auf den Namen achten (Eindeutigkeit !) und den Rest erstmal vernachlässigen. Danach kann man die common-Attribute vom vollständig erstellten Datenpunkt in die "quick and dirty"-Datenpunkte kopieren:

                    var srcName = 'Wohnen.Enthalpie'; // exakter DP
                    var dstName = 'Bad.Enthalpie';    // quick and dirty DP
                    
                    var srcid = getIdByName(srcName);
                    var dstid = getIdByName(dstName);
                    var dstObj = getObject(dstid);
                    dstObj.common = getObject(srcid).common;
                    dstObj.common.name = dstName;
                    setObject(dstid, dstObj);
                    
                    

                    setObject(id, obj) muss in der Konfiguration der JS-Instanz erlaubt werden.

                    1 Reply Last reply Reply Quote 0
                    • S
                      Superuser last edited by

                      Kann ich unter Objekte einen eigenen Ordner anlegen ?

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by

                        @Superuser:

                        Kann ich unter Objekte einen eigenen Ordner anlegen ? `
                        Ja!

                        Nach dem ersten Anlegen erscheint er hedoch als "weißes Blatt"

                        Danach diesen markietrn und darin die weiteren Datenpunkte anlegen.

                        Dabei ändert dich das icon zum Ordner.

                        http://www.iobroker.net/?page_id=5495&l … inzufuegen

                        Gruß

                        Rainer

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

                          Wenn man im folgenden Skript die ersten 3 Zeilen anpasst, kann man einen neuen Datenpunkt mit den common-Attributen eines bestehenden DP erzeugen:

                          var dstname = 'Ordner.neuer_Name';           // oder 'Ziel_Ordner.Name'
                          var srcid = 'adapter.N.Kanal.Ordner.Quell-Name';  // oder 'adapter.N.Kanal.Quell-Ordner.Name'
                          var dstid = 'adapter.N.Kanal.' + dstname;
                          
                          var obj = getObject(srcid);
                          if(obj && obj.type === 'state') {
                              obj.common.name = dstname;
                              setObject(dstid, obj);
                              setTimeout(function() {
                                  setState(dstid, obj.common.def);
                              }, 200);
                          }
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 last edited by

                            Besser:

                            var dstname = 'Ordner.neuer_Name';    // oder 'Ziel-Ordner.Name'
                            var srcname = 'Ordner.Quell-Name';    // oder 'Quell-Ordner.Name'
                            var path = 'adapter.N.Kanal';     // kann auch sein: 'adapter.N' oder 'adapter.N.Geraet.Kanal'
                            
                            var srcid = path + '.' + srcname;
                            var dstid = path + '.' + dstname;
                            var obj = getObject(srcid);
                            if(obj && obj.type === 'state') {
                                obj.common.name = dstname;
                                setObject(dstid, obj);
                                setTimeout(function() {
                                    setState(dstid, obj.common.def);
                                }, 200);
                            }
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            924
                            Online

                            31.7k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            3
                            12
                            4914
                            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