Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. js-controller Scipte retten

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    703

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

js-controller Scipte retten

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
js-controller
18 Beiträge 6 Kommentatoren 2.0k Aufrufe 7 Beobachtet
  • Ä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.
  • C cactus-online

    @fastfoot Danke für die Rückmeldung. Ja habe ich. Wie finde ich da Scripte raus ?

    F Online
    F Online
    fastfoot
    schrieb am zuletzt editiert von
    #5

    @cactus-online sagte in js-controller Scipte retten:

    @fastfoot Danke für die Rückmeldung. Ja habe ich. Wie finde ich da Scripte raus ?

    • lege die objects.json des alten Systems in einen Ordner, z.B. /opt/iobroker/restore
    • starte das Skript, in Zeile 7 noch den Pfad anpassen
    • die Skripte befinden sich danach im Ordner mit den entsprechenden Endungen

    /**
     * Extract scripts from objects.json
     * by @fastfoot 16.11.2020
     * 
     */
    const fs = require('fs'),
          path = '/opt/iobroker/restore/';      // <=== Pfad eintragen mit abschliessendem /
    let allObjects = {},
        script = {},
        name = '', 
        xml = '',
        logging = false;
    
    try{
        allObjects = JSON.parse(fs.readFileSync(path + 'objects.json', 'utf8'))
    } catch(e){
        log('objects.json wahrscheinlich defekt oder falscher Pfad angegeben',"error")
    }
    
    for(let key in allObjects){
        if(allObjects[key].type == 'script'){
            script = allObjects[key].common;
            if(logging){    
                log('Key:    ' + key);
                log('Name:   ' + script.name);
                log('Type:   ' + script.engineType);
                log('Engine: ' + script.engine);
            }
            if(script.engineType == 'Blockly'){
                name = path + key.substring(10) + '.xml';
                xml = handleBlockly(script.source)
                fs.writeFileSync(name, xml);
            } else if(script.engineType == 'Javascript/js' ||script.engineType == 'JavaScript/js'){
                name = path + key.substring(10) + '.js'
                fs.writeFileSync(name, script.source)
            } else {
                name = path + key.substring(10) + '.ts'
                fs.writeFileSync(name, script.source)
            }
        }
    }
    
    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;
    }
    
    log('done')
    
    

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

    C K 2 Antworten Letzte Antwort
    2
    • F fastfoot

      @cactus-online sagte in js-controller Scipte retten:

      @fastfoot Danke für die Rückmeldung. Ja habe ich. Wie finde ich da Scripte raus ?

      • lege die objects.json des alten Systems in einen Ordner, z.B. /opt/iobroker/restore
      • starte das Skript, in Zeile 7 noch den Pfad anpassen
      • die Skripte befinden sich danach im Ordner mit den entsprechenden Endungen

      /**
       * Extract scripts from objects.json
       * by @fastfoot 16.11.2020
       * 
       */
      const fs = require('fs'),
            path = '/opt/iobroker/restore/';      // <=== Pfad eintragen mit abschliessendem /
      let allObjects = {},
          script = {},
          name = '', 
          xml = '',
          logging = false;
      
      try{
          allObjects = JSON.parse(fs.readFileSync(path + 'objects.json', 'utf8'))
      } catch(e){
          log('objects.json wahrscheinlich defekt oder falscher Pfad angegeben',"error")
      }
      
      for(let key in allObjects){
          if(allObjects[key].type == 'script'){
              script = allObjects[key].common;
              if(logging){    
                  log('Key:    ' + key);
                  log('Name:   ' + script.name);
                  log('Type:   ' + script.engineType);
                  log('Engine: ' + script.engine);
              }
              if(script.engineType == 'Blockly'){
                  name = path + key.substring(10) + '.xml';
                  xml = handleBlockly(script.source)
                  fs.writeFileSync(name, xml);
              } else if(script.engineType == 'Javascript/js' ||script.engineType == 'JavaScript/js'){
                  name = path + key.substring(10) + '.js'
                  fs.writeFileSync(name, script.source)
              } else {
                  name = path + key.substring(10) + '.ts'
                  fs.writeFileSync(name, script.source)
              }
          }
      }
      
      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;
      }
      
      log('done')
      
      

      C Offline
      C Offline
      cactus-online
      schrieb am zuletzt editiert von
      #6

      @fastfoot:

      Cool, tausend Dank !!! Die Scripte sind wieder da. Super gemacht.

      Ich wünsche noch einen schönen Abend.

      VG,

      TF

      1 Antwort Letzte Antwort
      0
      • F fastfoot

        @cactus-online sagte in js-controller Scipte retten:

        @fastfoot Danke für die Rückmeldung. Ja habe ich. Wie finde ich da Scripte raus ?

        • lege die objects.json des alten Systems in einen Ordner, z.B. /opt/iobroker/restore
        • starte das Skript, in Zeile 7 noch den Pfad anpassen
        • die Skripte befinden sich danach im Ordner mit den entsprechenden Endungen

        /**
         * Extract scripts from objects.json
         * by @fastfoot 16.11.2020
         * 
         */
        const fs = require('fs'),
              path = '/opt/iobroker/restore/';      // <=== Pfad eintragen mit abschliessendem /
        let allObjects = {},
            script = {},
            name = '', 
            xml = '',
            logging = false;
        
        try{
            allObjects = JSON.parse(fs.readFileSync(path + 'objects.json', 'utf8'))
        } catch(e){
            log('objects.json wahrscheinlich defekt oder falscher Pfad angegeben',"error")
        }
        
        for(let key in allObjects){
            if(allObjects[key].type == 'script'){
                script = allObjects[key].common;
                if(logging){    
                    log('Key:    ' + key);
                    log('Name:   ' + script.name);
                    log('Type:   ' + script.engineType);
                    log('Engine: ' + script.engine);
                }
                if(script.engineType == 'Blockly'){
                    name = path + key.substring(10) + '.xml';
                    xml = handleBlockly(script.source)
                    fs.writeFileSync(name, xml);
                } else if(script.engineType == 'Javascript/js' ||script.engineType == 'JavaScript/js'){
                    name = path + key.substring(10) + '.js'
                    fs.writeFileSync(name, script.source)
                } else {
                    name = path + key.substring(10) + '.ts'
                    fs.writeFileSync(name, script.source)
                }
            }
        }
        
        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;
        }
        
        log('done')
        
        

        K Offline
        K Offline
        klassisch
        Most Active
        schrieb am zuletzt editiert von
        #7

        @fastfoot Klasse, vielen Dank!

        1. Hoffentlich komme ich nie in die Sitation die Skripte nutzen zu müsse
        2. und falls doch, hoffentlich finde ich diesen Beitrag noch
        sigi234S F 2 Antworten Letzte Antwort
        0
        • K klassisch

          @fastfoot Klasse, vielen Dank!

          1. Hoffentlich komme ich nie in die Sitation die Skripte nutzen zu müsse
          2. und falls doch, hoffentlich finde ich diesen Beitrag noch
          sigi234S Online
          sigi234S Online
          sigi234
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #8

          @klassisch sagte in js-controller Scipte retten:

          und falls doch, hoffentlich finde ich diesen Beitrag noch

          Lesezeichen setzen. 😉

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

          K 1 Antwort Letzte Antwort
          1
          • K klassisch

            @fastfoot Klasse, vielen Dank!

            1. Hoffentlich komme ich nie in die Sitation die Skripte nutzen zu müsse
            2. und falls doch, hoffentlich finde ich diesen Beitrag noch
            F Online
            F Online
            fastfoot
            schrieb am zuletzt editiert von
            #9

            @klassisch sagte in js-controller Scipte retten:

            @fastfoot Klasse, vielen Dank!

            1. Hoffentlich komme ich nie in die Sitation die Skripte nutzen zu müsse
            2. und falls doch, hoffentlich finde ich diesen Beitrag noch

            tja, das Skript sollte eigentlich unnötig ein, iobroker bietet ausreichend viele und gute Möglichkeiten, seine Skripte zu sichern. Trotzdem lese ich immer wieder über nicht vorhandene Backups bei abgerauchten Systemen und da mich das Thema technisch interessiert hat habe ich es halt hurtig mal umgesetzt

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

            K 1 Antwort Letzte Antwort
            1
            • sigi234S sigi234

              @klassisch sagte in js-controller Scipte retten:

              und falls doch, hoffentlich finde ich diesen Beitrag noch

              Lesezeichen setzen. 😉

              K Offline
              K Offline
              klassisch
              Most Active
              schrieb am zuletzt editiert von
              #10

              @sigi234 wieder was gelernt, Danke!

              1 Antwort Letzte Antwort
              0
              • F fastfoot

                @klassisch sagte in js-controller Scipte retten:

                @fastfoot Klasse, vielen Dank!

                1. Hoffentlich komme ich nie in die Sitation die Skripte nutzen zu müsse
                2. und falls doch, hoffentlich finde ich diesen Beitrag noch

                tja, das Skript sollte eigentlich unnötig ein, iobroker bietet ausreichend viele und gute Möglichkeiten, seine Skripte zu sichern. Trotzdem lese ich immer wieder über nicht vorhandene Backups bei abgerauchten Systemen und da mich das Thema technisch interessiert hat habe ich es halt hurtig mal umgesetzt

                K Offline
                K Offline
                klassisch
                Most Active
                schrieb am zuletzt editiert von
                #11

                @fastfoot Eigentlich macht mein ioBroker jede Nacht ein Backup, oder sollte es zumindest tun. Hatte aber auch schon den Fall, daß das nicht mehr lesbar war.
                Deshalb: Welche Möglichkeiten gibt es noch, die JScripte zu sichern?

                F 1 Antwort Letzte Antwort
                0
                • K klassisch

                  @fastfoot Eigentlich macht mein ioBroker jede Nacht ein Backup, oder sollte es zumindest tun. Hatte aber auch schon den Fall, daß das nicht mehr lesbar war.
                  Deshalb: Welche Möglichkeiten gibt es noch, die JScripte zu sichern?

                  F Online
                  F Online
                  fastfoot
                  schrieb am zuletzt editiert von
                  #12

                  @klassisch sagte in js-controller Scipte retten:

                  Deshalb: Welche Möglichkeiten gibt es noch, die JScripte zu sichern?

                  Ich nutze oft die Option Exportieren Sie alle Skripte, zusammen mit dem BackitUp-Adapter ist man da immer auf der sicheren Seite

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

                  K M 2 Antworten Letzte Antwort
                  1
                  • F fastfoot

                    @klassisch sagte in js-controller Scipte retten:

                    Deshalb: Welche Möglichkeiten gibt es noch, die JScripte zu sichern?

                    Ich nutze oft die Option Exportieren Sie alle Skripte, zusammen mit dem BackitUp-Adapter ist man da immer auf der sicheren Seite

                    K Offline
                    K Offline
                    klassisch
                    Most Active
                    schrieb am zuletzt editiert von
                    #13

                    @fastfoot Ah, danke, jetzt sehe ich es auch.
                    72984ccd-712c-4053-9fea-f8b4e41bfa44-grafik.png

                    1 Antwort Letzte Antwort
                    0
                    • F fastfoot

                      @klassisch sagte in js-controller Scipte retten:

                      Deshalb: Welche Möglichkeiten gibt es noch, die JScripte zu sichern?

                      Ich nutze oft die Option Exportieren Sie alle Skripte, zusammen mit dem BackitUp-Adapter ist man da immer auf der sicheren Seite

                      M Offline
                      M Offline
                      Markus84
                      schrieb am zuletzt editiert von
                      #14

                      @fastfoot said in js-controller Scipte retten:

                      Ich nutze oft die Option Exportieren Sie alle Skripte, zusammen mit dem BackitUp-Adapter ist man da immer auf der sicheren Seite

                      Sichert der BackitUp-Adapter die Skripte nicht mit?

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • M Markus84

                        @fastfoot said in js-controller Scipte retten:

                        Ich nutze oft die Option Exportieren Sie alle Skripte, zusammen mit dem BackitUp-Adapter ist man da immer auf der sicheren Seite

                        Sichert der BackitUp-Adapter die Skripte nicht mit?

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

                        @Markus84 sagte:

                        Sichert der BackitUp-Adapter die Skripte nicht mit?

                        Doch, aber nur zusammen mit allen anderen Objekten.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                        M 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @Markus84 sagte:

                          Sichert der BackitUp-Adapter die Skripte nicht mit?

                          Doch, aber nur zusammen mit allen anderen Objekten.

                          M Offline
                          M Offline
                          Markus84
                          schrieb am zuletzt editiert von
                          #16

                          @paul53 Also der Vorteil ist, dass man partiell die Skripte wieder einspielen kann ohne gleich alles aus dem Backup einspielen zu müssen?

                          F 1 Antwort Letzte Antwort
                          0
                          • M Markus84

                            @paul53 Also der Vorteil ist, dass man partiell die Skripte wieder einspielen kann ohne gleich alles aus dem Backup einspielen zu müssen?

                            F Online
                            F Online
                            fastfoot
                            schrieb am zuletzt editiert von
                            #17

                            @Markus84 sagte in js-controller Scipte retten:

                            @paul53 Also der Vorteil ist, dass man partiell die Skripte wieder einspielen kann ohne gleich alles aus dem Backup einspielen zu müssen?

                            JJJein. Der Sinn des Skripts ist es, aus einer noch intakten, alten objects.json die Skripte zu extrahieren, wenn man kein Backup hat. Um selektiv einzelne Skripte aus einem Backup einzuspielen, müsste man das Skript umschreiben, ich denke gerade über ein solches Skript(Adapter) nach, welches dann die verschiedenen Möglichkeiten nutzt... Die fehlende Möglichkeit, einzelne Skripte zurück zu spielen, stört mich irgendwie schon länger, aber ob es wirklich Sinn macht?

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

                            M 1 Antwort Letzte Antwort
                            0
                            • F fastfoot

                              @Markus84 sagte in js-controller Scipte retten:

                              @paul53 Also der Vorteil ist, dass man partiell die Skripte wieder einspielen kann ohne gleich alles aus dem Backup einspielen zu müssen?

                              JJJein. Der Sinn des Skripts ist es, aus einer noch intakten, alten objects.json die Skripte zu extrahieren, wenn man kein Backup hat. Um selektiv einzelne Skripte aus einem Backup einzuspielen, müsste man das Skript umschreiben, ich denke gerade über ein solches Skript(Adapter) nach, welches dann die verschiedenen Möglichkeiten nutzt... Die fehlende Möglichkeit, einzelne Skripte zurück zu spielen, stört mich irgendwie schon länger, aber ob es wirklich Sinn macht?

                              M Offline
                              M Offline
                              Markus84
                              schrieb am zuletzt editiert von
                              #18

                              @fastfoot said in js-controller Scipte retten:

                              Die fehlende Möglichkeit, einzelne Skripte zurück zu spielen, stört mich irgendwie schon länger, aber ob es wirklich Sinn macht?

                              Also ich war schon mehrfach in der blöden Situation, dass ich an einem Skript rumgefummelt habe, was dann gar nicht mehr funktioniert hat. Meine Lösung war dann immer (1) Backup machen, (2) altes Backup einspielen, (3) noch funktionierende Version des Skript in eine Textdatei kopieren, (4) kurz zuvor erstelltes Backup wieder herstellen und (5) das Skript von Hand wiederherstellen.

                              Da wäre natürlich eine automatische Backuperstellung der Skripten oder noch besser eine Versionsverwaltung natürlich extrem hilfreich gewesen!

                              1 Antwort Letzte Antwort
                              0

                              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                              Registrieren Anmelden
                              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

                              274

                              Online

                              32.9k

                              Benutzer

                              83.0k

                              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