Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Admin5: Ich kann keine Objekte mehr manuell anlegen

    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

    Admin5: Ich kann keine Objekte mehr manuell anlegen

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fastfoot @Dr. Bakterius last edited by

      @dr-bakterius sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

      ist mir zu viel Aufwand

      ein paar Posts weiter oben geht es um das automatische Ersetzen im Blockly, auch aus einem Pfad heraus. Vielleicht hilft dir das ja

      1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @fastfoot last edited by

        @fastfoot vielen dank - ich muss das script mal in ruhe ansehen - schaut interessant aus

        falke69 F 2 Replies Last reply Reply Quote 0
        • falke69
          falke69 @liv-in-sky last edited by falke69

          Hallo, da ich auch so meine Probleme mit den Erstellen von Datenpunkten in meinen erstellten Verzeichnissen (jetzt Ordner) hatte, habe ich zuerst den Objektbaum als JSON gespeichert und dann vollständig gelöscht. Dann habe ich mich an die Arbeit gemacht und jeden einzelnen Ordner inkl. Unterverzeichnis neu angelegt und dann im Anschluss den zuvor exportierten JSON wieder importiert.
          Meine erstellten Objekte waren alle wieder vorhanden und in den angelegten Ordnern wieder verfügbar. Jetzt war es mir wieder möglich ein neues Objekt zu erstellen.

          Selbiges gilt auch für MQTT, jetzt kann ich dort auch wieder in den einzelnen Verzeichnissen / Ordner meine eigenen Datenpunkte erstellen.

          Einfacher wäre es natürlich, dass man im Nachgang auswählen kann, dass es sich um einen Ordner handelt. Das hätte einiges an Arbeit und Zeit eingespart.😢 😬 👍

          hier mal ein Ausschnitt:
          2021-08-09_111128.jpg

          mickym 1 Reply Last reply Reply Quote 1
          • mickym
            mickym Most Active @falke69 last edited by

            @falke69 Mit dem Skript von fastfood geht das in 1 min - habe auch alle meine mqtt, userdata, alias so gepatched.

            falke69 1 Reply Last reply Reply Quote 0
            • F
              fastfoot @liv-in-sky last edited by

              @liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

              @fastfoot vielen dank - ich muss das script mal in ruhe ansehen - schaut interessant aus

              ist kein Hexenwerk.

              • Es wird jedes Objekt geprüft, ob es ein Skript ist(type == 'script'). Wenn ja, wird das Skript so wie es ist in das System übernommen, mit der Endung .bak. Allerdings nur wenn es nicht vorhanden ist und die Variable zum Einlesen ins System gesetzt ist(restoreToSystemDb == true). Diese Funktionalität eignet sich nur für ein Restore bei verlorenem Skript
              • Soll das Skript als File gespeichert werden(restoreAsFile == true) dann wird der Typ bestimmt(blockly, js, ts) und entsprechend der Source extrahiert und mit der passenden Endung ins Dateisystem geschrieben
              • Im zweiten Fall kann man ein einfaches replace einbauen, um die Datenpunkte zu ändern. Für js Files könnte man entsprechend den Punkt 1 aufbohren, für Blocklys jedoch nicht da hier nur das XML extrahiert wird, der vorangestellte js code jedoch nicht behandelt wird, das ist also ungeeignet zum direkten Import ins System
              • Für alle Skripte wird eine Summary gebildet und ins Dateisystem geschrieben, so als Übersicht was man alles an Skripten hat. Dies passiert unabhängig davon ob man Skripte importiert oder als Datei schreibt

              Zum Spielen damit ist halt ein Testsystem sehr gut geeignet. Da ich Docker verwende ist ein solches in wenigen Minuten erstellt und auch schnell wieder gelöscht. Wobei, wenn man nur ins Dateisystem exportiert kann man absolut nichts falsch machen, die einzulesende objects.json muss ja eh eine Kopie des Originals sein, das geht auch wenn man nur ein System zur Verfügung hat

              falke69 1 Reply Last reply Reply Quote 0
              • falke69
                falke69 @mickym last edited by

                @mickym

                das habe ich sicherlich übersehen. 😵

                1 Reply Last reply Reply Quote 0
                • falke69
                  falke69 @fastfoot last edited by

                  @fastfoot

                  dann suche ich mir das mal mir raus. Vielleicht kann man das ja irgendwann nochmal gebrauchen. 👍

                  mickym paul53 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @falke69 last edited by mickym

                    @falke69 Das ist doch oben in dem 1. Beitrag hier in dem Thread von apollon77 verlinkt

                    https://forum.iobroker.net/post/660631

                    falke69 1 Reply Last reply Reply Quote 0
                    • falke69
                      falke69 @mickym last edited by

                      @mickym

                      Danke! Muss ich übersehen haben.

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

                        @falke69 sagte: dann suche ich mir das mal mir raus.

                        Diese Variante erzeugt eine bessere Struktur.

                        falke69 mickym sigi234 3 Replies Last reply Reply Quote 0
                        • falke69
                          falke69 @paul53 last edited by

                          @paul53

                          Dann teste ich die Variante auch gleich mal auf meinem Testsystem. 🙂

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @paul53 last edited by mickym

                            @paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                            @falke69 sagte: dann suche ich mir das mal mir raus.

                            Diese Variante erzeugt eine bessere Struktur.

                            Ohne jetzt eine Riesendiskussion anzuschmeißen - aber ich persönlich bevorzuge nur den type Folder für bislang nicht existierende Objekte. Gerade bei selbst angelegten Strukturen, sind das eben oft keine Geräte oder Kanäle. Sobald ich die letzten Ebenen nicht als Folder, sondern als Gerät oder Kanäle anlege beschränke ich mich dann doch von vorneherein bzw. zukünftig auf die Hiearchietiefe und das ist oft nicht gewünscht.

                            apollon77 1 Reply Last reply Reply Quote 0
                            • sigi234
                              sigi234 Forum Testing Most Active last edited by sigi234

                              Welche Variante ist jetzt iob (admin) konform?

                              mickym F 2 Replies Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @sigi234 last edited by mickym

                                @sigi234 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                Welche Variante ist jetzt iob (admin) konform?

                                Alles was oben in dem ToolTipp aufgeführt ist.

                                4ffa7f74-10a4-4c7c-9694-b45968083ee1-image.png

                                Und dazu gehört auch Ordner => Zustand

                                Ich hab mich ja nur etwas an dem Wort "besser" gestört - aber wie gesagt wollte keine Diskussion anwerfen, Nachteile habe ich ja schon gesagt und sieht man ja oben. Sobald ein Datenpunkt in der Hierarchie ein Kanal ist gehts nicht mehr tiefer und man kann nur noch Zustände anlegen.

                                paul53 2 Replies Last reply Reply Quote 1
                                • sigi234
                                  sigi234 Forum Testing Most Active @paul53 last edited by

                                  @paul53

                                  Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?

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

                                    @mickym sagte: Ich hab mich ja nur etwas an dem Wort "besser" gestört

                                    Das bezieht sich auf eine Struktur, in der man im Trigger z.B. auf den Kanalnamen oder Gerätenamen zugreifen will.

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

                                      @sigi234 sagte: Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?

                                      Du meinst, einen Änderungszähler?

                                      sigi234 1 Reply Last reply Reply Quote 0
                                      • sigi234
                                        sigi234 Forum Testing Most Active @paul53 last edited by

                                        @paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                        @sigi234 sagte: Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?

                                        Du meinst, einen Änderungszähler?

                                        Jupp

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @paul53 last edited by

                                          @paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                          @mickym sagte: Ich hab mich ja nur etwas an dem Wort "besser" gestört

                                          Das bezieht sich auf eine Struktur, in der man im Trigger z.B. auf den Kanalnamen oder Gerätenamen zugreifen will.

                                          Gut, aber halt der Nachteil dass ich dann in der Art meiner Typen der Kinder beschränke. Wie gesagt - gibt in meinen Augen hier nicht den "Königsweg" und sobald ein Objekt ja existiert, kann man es ja auch nachträglich manuell wieder ändern.

                                          Ich würde deshalb sagen:

                                          Wenn Kanal oder Geräte: Vorteil über diese zu Triggern
                                          Wenn Folder: Keine Beschränkung in der Hierarchietiefe

                                          1 Reply Last reply Reply Quote 1
                                          • paul53
                                            paul53 @sigi234 last edited by paul53

                                            @sigi234
                                            Mit einer Zählvariablen sollte es funktionieren.

                                            // In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
                                            const ids = $('javascript.1.*'); // Anpassen!!
                                             
                                            var arr = [];
                                            var cnt = 0;
                                             
                                            function correctObject(id, arr, level){
                                               if(arr.length === 2) return;
                                               let type = 'folder';
                                               if(level == 1) type = 'device';
                                               else if(level == 0) type = 'channel';
                                               if(!existsObject(id)) {
                                                   const obj = {
                                                       type: type,
                                                       common:{
                                                           name: arr[arr.length - 1]
                                                       },
                                                       native: {}
                                                   }
                                                   setObject(id, obj, e => {
                                                       if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
                                                       else cnt++;
                                                   });
                                               }
                                               arr.pop();
                                               id = arr.join('.');
                                               level++;
                                               correctObject(id, arr, level);
                                            }
                                             
                                            ids.each(id => {
                                               arr = id.split('.');
                                               arr.pop();
                                               id = arr.join('.');
                                               if(arr[0] === '0_userdata' || arr[0] === 'javascript' || arr[0] === 'alias') {
                                                   correctObject(id, arr, 0);
                                               }
                                            });
                                            setTimeout(function() {
                                               log('Anzahl Änserungen: ' + cnt)
                                            }, 1000);
                                            
                                            sigi234 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

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

                                            819
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            36
                                            466
                                            69624
                                            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