Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Admin5: Ich kann keine Objekte mehr manuell anlegen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Admin5: Ich kann keine Objekte mehr manuell anlegen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
466 Beiträge 36 Kommentatoren 92.3k Aufrufe 25 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F fastfoot

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

    ich möchte meine datenpunkte von "controll-own.0" nach "0_userdata.0.controll-own." umstellen

    du kannst doch unmittelbar vor dem Schreiben der XML-Datei ein data.replace(/oldPath/g,newPath) machen. Schwierig wird es mit JS-Funktionen, die sind auch base64 codiert, sollte aber gehen

    Hier mal ein kmpl. anderer Ansatz, extrahiert werden alle Skripte aus einer objects.json und wahlweise als Textdatei und/oder ins System geschrieben(mit Endung .bak). Eine Auflistung der Skripte wird in eine json exportiert.

    • Backup machen!
    • System stoppen(sonst könnte die objects.json beschädigt sein!)
    • objects.json nach zB /opt/iobroker/restore im Testsystem kopieren (oder im Produktiv :-) )
    • Die Zeilen 8-11 beachten
    • Skript laufen lassen und den Export anschauen, danach die Variablen zum Schreiben in eine Datei oder ins System auf true setzen
    • evtl. den Lauf auf ein einziges Skript/einzelnen Pfad (Zeile 32) beschränken, sonst wird es schnell unübersichtlich
    • Backup nicht vergessen!

    habe es nicht mehr extra laufen lassen, sollte aber noch funktionieren, sonst halt melden. Die replace Funktionen sind nicht drin, bei Blockly in handleBlockly() einfach einbauen

    /**
    * Zweck:   Extract scripts from objects.json
    * Datum:   16.11.2020
    * Autor:   @fastfoot
    */
    const fs = require('fs'),
       path = require('path'),
       restoreToSystemDb = !true,              // lädt die Daten sofort ins System(ACHTUNG! *** auf eigenes Risiko ***)
       restoreAsFile = !true,                  // Datei ins Filesystem schreiben
       pathToRestore = '/opt/iobroker/restore/', // <=== Pfad eintragen mit abschliessendem /
       fileName = 'objects.json';              // Dateiname der objects.json
    
    main(pathToRestore, fileName)
    
    async function main(pathRestore, fileName) {
       let allObjects = {},
           script = {},
           ext = '',
           data = '',
           resultText = 'Gefundene Skripte ' + formatDate(new Date().getTime(),'DD.MM.YYYY hh:mm') + '\n\n',
           res = {};
    
       try {
           allObjects = JSON.parse(fs.readFileSync(pathRestore + fileName, 'utf8'))
       } catch (e) {
           log(`Fehler beim Lesen von ${fileName} in ${pathRestore}: ` + e, "error")
       }
       let i = 0;
       for (let key in allObjects) {
           script = allObjects[key];
           if (script.type == 'script') {
               if (!existsObject(key)  && restoreToSystemDb) {
                   script.common.name += '.bak';
                   setObject(key, { type: script.type, common: script.common });
                   //setObject(key, allObjects[key]);
               }
               if (restoreAsFile) {
                   data = script.common.source;
                   switch (script.common.engine.toLowerCase()) {
                       case 'blockly':
                           ext = 'xml';
                           data = handleBlockly(script.common.source)
                           break;
                       case 'javascript/js':
                           ext = '.js';
                           break;
                       case 'typescript/ts':
                           ext = '.ts';
                           break;
                       default:
                           ext = '.js';
                   }
                   fs.writeFile(pathRestore + key.substring(10) + ext, data, e => {
                       if (e) log('Fehler beim Schreiben der Datei:' + e.error)
                   })
               }
               //res[key.substr(10)] = {name: script.common.name,typ:script.common.engineType};
               res[key.substr(10)] = script.common.engineType;
               //resultText += 'Skript: ' + script.common.name + '\t\t\t\t\t\t' + 'Typ: ' + script.common.engineType + '\n';
           }
       }
       /*fs.writeFile(pathRestore + 'GefundeneSkripte.txt', resultText, e => {
           if (e) log('Schreibfehler bei Ergebnisdatei');
       })*/
    
       // sortieren
       let b = {};
       let a=Object.keys(res).sort();
       for(let i=0;i<a.length;i++){
           b[i + ' ' + a[i]]=res[a[i]];
       }
    
       fs.writeFile(pathRestore + 'GefundeneSkripte.json', JSON.stringify(b,null,3), e => {
           if (e) log('Schreibfehler bei Ergebnisdatei');
       })
    
       log('done')
    }
    
    function handleBlockly(source){
       const pos = source.lastIndexOf('\n');
       if (pos !== -1) {
           source = source.substring(pos + 3);
           if(source.indexOf('JTNDeG1sJTIweG1') > -1) {
               source = decodeURIComponent(Buffer.from(source, 'base64').toString('utf8'));
               return prettifyXml(source);
           }
       }
    }
    
    //from Stackoverflow
    function prettifyXml(xml){
       var reg = /(>)\s*(<)(\/*)/g;
       xml = xml.replace(/\r|\n/g, ''); //deleting already existing whitespaces
       xml = xml.replace(reg, '$1\r\n$2$3');
       return xml;
    }
    

    liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von
    #193

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

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    falke69F F 2 Antworten Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

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

      falke69F Offline
      falke69F Offline
      falke69
      schrieb am zuletzt editiert von falke69
      #194

      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.:cry: :grimacing: :+1:

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

      mickymM 1 Antwort Letzte Antwort
      1
      • falke69F 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.:cry: :grimacing: :+1:

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

        mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #195

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

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        falke69F 1 Antwort Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

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

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #196

          @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

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          falke69F 1 Antwort Letzte Antwort
          0
          • mickymM mickym

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

            falke69F Offline
            falke69F Offline
            falke69
            schrieb am zuletzt editiert von
            #197

            @mickym

            das habe ich sicherlich übersehen. :dizzy_face:

            1 Antwort Letzte Antwort
            0
            • F fastfoot

              @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

              falke69F Offline
              falke69F Offline
              falke69
              schrieb am zuletzt editiert von
              #198

              @fastfoot

              dann suche ich mir das mal mir raus. Vielleicht kann man das ja irgendwann nochmal gebrauchen. :+1:

              mickymM paul53P 2 Antworten Letzte Antwort
              0
              • falke69F falke69

                @fastfoot

                dann suche ich mir das mal mir raus. Vielleicht kann man das ja irgendwann nochmal gebrauchen. :+1:

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #199

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

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

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                falke69F 1 Antwort Letzte Antwort
                0
                • mickymM mickym

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

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

                  falke69F Offline
                  falke69F Offline
                  falke69
                  schrieb am zuletzt editiert von
                  #200

                  @mickym

                  Danke! Muss ich übersehen haben.

                  1 Antwort Letzte Antwort
                  0
                  • falke69F falke69

                    @fastfoot

                    dann suche ich mir das mal mir raus. Vielleicht kann man das ja irgendwann nochmal gebrauchen. :+1:

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #201

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

                    Diese Variante erzeugt eine bessere Struktur.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    falke69F mickymM sigi234S 3 Antworten Letzte Antwort
                    0
                    • paul53P paul53

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

                      Diese Variante erzeugt eine bessere Struktur.

                      falke69F Offline
                      falke69F Offline
                      falke69
                      schrieb am zuletzt editiert von
                      #202

                      @paul53

                      Dann teste ich die Variante auch gleich mal auf meinem Testsystem. :-)

                      1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

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

                        Diese Variante erzeugt eine bessere Struktur.

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von mickym
                        #203

                        @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.

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        apollon77A 1 Antwort Letzte Antwort
                        0
                        • sigi234S Online
                          sigi234S Online
                          sigi234
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von sigi234
                          #204

                          Welche Variante ist jetzt iob (admin) konform?

                          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                          Immer Daten sichern!

                          mickymM F 2 Antworten Letzte Antwort
                          0
                          • sigi234S sigi234

                            Welche Variante ist jetzt iob (admin) konform?

                            mickymM Online
                            mickymM Online
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #205

                            @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.

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            paul53P 2 Antworten Letzte Antwort
                            1
                            • paul53P paul53

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

                              Diese Variante erzeugt eine bessere Struktur.

                              sigi234S Online
                              sigi234S Online
                              sigi234
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #206

                              @paul53

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

                              Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                              Immer Daten sichern!

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • mickymM 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.

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von paul53
                                #207

                                @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.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                mickymM 1 Antwort Letzte Antwort
                                0
                                • sigi234S sigi234

                                  @paul53

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

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #208

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

                                  Du meinst, einen Änderungszähler?

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  sigi234S 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

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

                                    Du meinst, einen Änderungszähler?

                                    sigi234S Online
                                    sigi234S Online
                                    sigi234
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #209

                                    @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

                                    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                    Immer Daten sichern!

                                    paul53P 1 Antwort Letzte Antwort
                                    0
                                    • paul53P 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.

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #210

                                      @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

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      1 Antwort Letzte Antwort
                                      1
                                      • sigi234S sigi234

                                        @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

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von paul53
                                        #211

                                        @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);
                                        

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        sigi234S 1 Antwort Letzte Antwort
                                        1
                                        • sigi234S sigi234

                                          Welche Variante ist jetzt iob (admin) konform?

                                          F Offline
                                          F Offline
                                          fastfoot
                                          schrieb am zuletzt editiert von
                                          #212

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

                                          Welche Variante ist jetzt iob (admin) konform?

                                          Beide wurden von appolon verlinkt und sind also konform :-)

                                          @mickym hat da aber einen guten Punkt. Hat man sich zB einen DP MeinHaus.Obergeschoss.LichtAn angelegt dann kann man mit Pauls Variante keine weitere Hierarchie unterhalb Obergeschoss (z.B. Kinderzimmer, Schlafzimmer) mehr hinzufügen, da MeinHaus als Device eingestellt ist und Obergeschoss als Channel. Unter Channels können jedoch nur noch States eingefügt werden, keine weiteren 'Ordner'. Mit meiner ursprünglichen Variante dass alles(ausser LichtAn) ein folder wird, ist man da nicht eingeschränkt. Für die meisten Nutzer, welche mit Device und Channel eh nichts anzufangen wissen(ich zähle mich dazu bzw. brauche das schlicht nicht) dürfte mein Ursprungsskript völlig ausreichend sein. Für Leute welche ihre Strukturen gut kennen, ist Pauls Alternative eine gute Lösung. Wobei, wer Devices und Channels tatsächlich braucht, der hat seinen DP von vornherein nicht so angelegt, denn mit der alten UI hatte man diese Zuordnung ja auch nicht

                                          iobroker läuft unter Docker auf QNAP TS-451+
                                          SkriptRecovery: https://forum.iobroker.net/post/930558

                                          mickymM 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          554

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe