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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. .js Dateien ins Blockly Format importieren/konvertieren?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    766

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

.js Dateien ins Blockly Format importieren/konvertieren?

Geplant Angeheftet Gesperrt Verschoben Blockly
17 Beiträge 5 Kommentatoren 2.5k Aufrufe 5 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.
  • A AlyxAbyss

    Hey ihr,
    ich habe heute irgendwie meine Skripte zerschossen. Habe den JavaScript Adapter aktualisiert (v.5.5.0) und plötzlich waren sie alle weg. Es gibt zwar Backups, aber die sind leider schon etwas zu alt. Denn ich habe aktuell heute noch jede Menge geändert und neu zusammen gepuzzelt.

    Jetzt hab ich mal sämtliche Ordner und Archive durchsucht und bin tatsächlich auf sämtliche Skripte in der tagesaktuellen Form gestoßen. Diese liegen mir aber als .js-Dateien vor und lassen sich in Blockly nicht importieren. Als reines JavaScript allerdings schon. Ich hätte die Skripte aber gerne wieder im Blockly Format... kann man die Dateien irgendwie konvertieren/importieren oder so, damit ich sie wieder in Blockly verwenden kann?

    Danke schon einmal :D

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

    @alyxabyss sagte: konvertieren/importieren oder so, damit ich sie wieder in Blockly verwenden kann?

    Nein, Javascript kann nicht nach Blockly konvertiert werden.

    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

    A 1 Antwort Letzte Antwort
    2
    • paul53P paul53

      @alyxabyss sagte: konvertieren/importieren oder so, damit ich sie wieder in Blockly verwenden kann?

      Nein, Javascript kann nicht nach Blockly konvertiert werden.

      A Offline
      A Offline
      AlyxAbyss
      schrieb am zuletzt editiert von
      #3

      @paul53

      Mies... Wo werden beim ioBroker denn die Blockly Scripts genau gespeichert?

      Hab nämlich noch ein komplettes Backup vom gesamten Pi, was immerhin nur einen Tag alt ist. Dann müsste ich doch theoretisch die entsprechenden Dateien da raus ziehen können?

      paul53P 1 Antwort Letzte Antwort
      0
      • A AlyxAbyss

        @paul53

        Mies... Wo werden beim ioBroker denn die Blockly Scripts genau gespeichert?

        Hab nämlich noch ein komplettes Backup vom gesamten Pi, was immerhin nur einen Tag alt ist. Dann müsste ich doch theoretisch die entsprechenden Dateien da raus ziehen können?

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

        @alyxabyss sagte: theoretisch die entsprechenden Dateien da raus ziehen können?

        Gespeichert sind die Blockly-Skripte in den Objekten unter script.js unter common.source. Es dürfte nicht einfach sein, sie daraus wieder herzustellen.
        Sichere die geänderten Javascript-Dateien und spiele das Backup zurück. Durch Vergleich des erzeugten Javascript-Codes mit dem gesicherten Javascript-Code kannst Du Änderungen von heute nachvollziehen.

        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

        A 1 Antwort Letzte Antwort
        1
        • paul53P paul53

          @alyxabyss sagte: theoretisch die entsprechenden Dateien da raus ziehen können?

          Gespeichert sind die Blockly-Skripte in den Objekten unter script.js unter common.source. Es dürfte nicht einfach sein, sie daraus wieder herzustellen.
          Sichere die geänderten Javascript-Dateien und spiele das Backup zurück. Durch Vergleich des erzeugten Javascript-Codes mit dem gesicherten Javascript-Code kannst Du Änderungen von heute nachvollziehen.

          A Offline
          A Offline
          AlyxAbyss
          schrieb am zuletzt editiert von
          #5

          @paul53

          Es wäre ja auch zu schön gewesen, wenn es ausnahmsweise mal einfach nur einfach sein würde.
          Muss ich wohl in den sauren Apfel beißen und ein bisschen was neu machen. :confounded:

          Danke

          F 1 Antwort Letzte Antwort
          0
          • A AlyxAbyss

            @paul53

            Es wäre ja auch zu schön gewesen, wenn es ausnahmsweise mal einfach nur einfach sein würde.
            Muss ich wohl in den sauren Apfel beißen und ein bisschen was neu machen. :confounded:

            Danke

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

            @alyxabyss mich wundert wie aus Blocklies 'reine' JS-Dateien wurden. Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

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

            paul53P 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @alyxabyss mich wundert wie aus Blocklies 'reine' JS-Dateien wurden. Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

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

              @fastfoot sagte: Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

              Da steckt Blockly drin, muss aber wohl gewandelt werden - keine Ahnung wie.

              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

              F A 2 Antworten Letzte Antwort
              0
              • paul53P paul53

                @fastfoot sagte: Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

                Da steckt Blockly drin, muss aber wohl gewandelt werden - keine Ahnung wie.

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

                @paul53 sagte in .js Dateien ins Blockly Format importieren/konvertieren?:

                @fastfoot sagte: Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

                Da steckt Blockly drin, muss aber wohl gewandelt werden - keine Ahnung wie.

                deshalb fragte ich, dann ist es easy zumindest ein xml für den Import zu generieren.

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

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @fastfoot sagte: Ist da evtl eine letzte Zeile welche etwa so anfängt: //JTNDeG1..........?

                  Da steckt Blockly drin, muss aber wohl gewandelt werden - keine Ahnung wie.

                  A Offline
                  A Offline
                  AlyxAbyss
                  schrieb am zuletzt editiert von
                  #9

                  @paul53 ich habe die Scripte in dem Ordner gefunden wo der Javascript Adapter die Spiegelungen ablegt.

                  Inhaltlich sehen die Dateien so aus:

                  schedule("13 13 * * *", async function () {
                    setState("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, true);
                    setState("alexa2.0.Echo-Devices.G091AA08114400T1.Commands.ssml"/*ssml*/, (['<speak><voice name="Vicki">','Hast du heute schon deine Pflanzen gegossen?','</voice></speak>'].join('')));
                    setStateDelayed("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, false, 5000, false);
                  });
                  
                  //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzY2hlZHVsZSUyMiUyMGlkJTNEJTIyJTVEa25FbkZ0NiFIVEIlNUQueSU0MCUzQVdRYyUyMiUyMHglM0QlMjItMzEyJTIyJTIweSUzRCUyMi00MzclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ0hFRFVMRSUyMiUzRTEzJTIwMTMlMjAqJTIwKiUyMColM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJRNDA0S0wqTUd+OSUzQkkpTTBlJTJDVVQlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V0dXlhLjAuYmZjODM2YjNjMjI3OGJlMTY4NHRpay4xJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyKWpoaG4lNjBNeG8lM0RPTUYhYSU2MGUuMSUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnZ4JTNCJTdCJTQwKXNLY2IySTJ6JTIzd3R2T1MlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMuRzA5MUFBMDgxMTQ0MDBUMS5Db21tYW5kcy5zc21sJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjJWWEolM0IlNjAtcTBzazZOTSUzQW0lM0IlM0RlaHklMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMyUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMm9tRFolNUIlNUQ3RiUyRmElMjNBYTMydiUzQiUyRnIlMkMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTI2bHQlM0JzcGVhayUyNmd0JTNCJTI2bHQlM0J2b2ljZSUyMG5hbWUlM0QlMjJWaWNraSUyMiUyNmd0JTNCJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmwlM0QlM0RxU1VVaiU2MGd5ZUMqaUJuSkYlNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFSGFzdCUyMGR1JTIwaGV1dGUlMjBzY2hvbiUyMGRlaW5lJTIwUGZsYW56ZW4lMjBnZWdvc3NlbiUzRiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ+JTYwJTI1d3hqJTdDbTkzJTNCcjV0em4lNUJhdCUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjZsdCUzQiUyRnZvaWNlJTI2Z3QlM0IlMjZsdCUzQiUyRnNwZWFrJTI2Z3QlM0IlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmdsVCUyRjclMjRyenVXSV9oJTNGUCU1RThUZiUzQiUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFdHV5YS4wLmJmYzgzNmIzYzIyNzhiZTE2ODR0aWsuMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZX01TJTIyJTNFNSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRXNlYyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkNZJTYwVDVYT1IlM0F3dDg1cHh1JTdCaGhZJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
                  

                  Das Problem ist zustande gekommen als ich den Javascript Adapter auf Version 5.5.0 upgedatet habe. Ich hatte zuvor auch eine Meldung erhalten, dass man das Update nicht durchführen darf, wenn die Scripte in bestimmten Ordnern liegen. Dachte bei mir wäre alles im grünen Bereich. Habe upgedatet und danach waren alle Scripte weg.
                  Nur durch das Zurücksetzen auf einen älteren Zustand habe ich sie soweit wieder zurück bekommen.

                  Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten :D

                  paul53P F 2 Antworten Letzte Antwort
                  0
                  • A AlyxAbyss

                    @paul53 ich habe die Scripte in dem Ordner gefunden wo der Javascript Adapter die Spiegelungen ablegt.

                    Inhaltlich sehen die Dateien so aus:

                    schedule("13 13 * * *", async function () {
                      setState("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, true);
                      setState("alexa2.0.Echo-Devices.G091AA08114400T1.Commands.ssml"/*ssml*/, (['<speak><voice name="Vicki">','Hast du heute schon deine Pflanzen gegossen?','</voice></speak>'].join('')));
                      setStateDelayed("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, false, 5000, false);
                    });
                    
                    //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzY2hlZHVsZSUyMiUyMGlkJTNEJTIyJTVEa25FbkZ0NiFIVEIlNUQueSU0MCUzQVdRYyUyMiUyMHglM0QlMjItMzEyJTIyJTIweSUzRCUyMi00MzclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ0hFRFVMRSUyMiUzRTEzJTIwMTMlMjAqJTIwKiUyMColM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJRNDA0S0wqTUd+OSUzQkkpTTBlJTJDVVQlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V0dXlhLjAuYmZjODM2YjNjMjI3OGJlMTY4NHRpay4xJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyKWpoaG4lNjBNeG8lM0RPTUYhYSU2MGUuMSUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnZ4JTNCJTdCJTQwKXNLY2IySTJ6JTIzd3R2T1MlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMuRzA5MUFBMDgxMTQ0MDBUMS5Db21tYW5kcy5zc21sJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjJWWEolM0IlNjAtcTBzazZOTSUzQW0lM0IlM0RlaHklMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMyUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMm9tRFolNUIlNUQ3RiUyRmElMjNBYTMydiUzQiUyRnIlMkMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTI2bHQlM0JzcGVhayUyNmd0JTNCJTI2bHQlM0J2b2ljZSUyMG5hbWUlM0QlMjJWaWNraSUyMiUyNmd0JTNCJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmwlM0QlM0RxU1VVaiU2MGd5ZUMqaUJuSkYlNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFSGFzdCUyMGR1JTIwaGV1dGUlMjBzY2hvbiUyMGRlaW5lJTIwUGZsYW56ZW4lMjBnZWdvc3NlbiUzRiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ+JTYwJTI1d3hqJTdDbTkzJTNCcjV0em4lNUJhdCUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjZsdCUzQiUyRnZvaWNlJTI2Z3QlM0IlMjZsdCUzQiUyRnNwZWFrJTI2Z3QlM0IlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmdsVCUyRjclMjRyenVXSV9oJTNGUCU1RThUZiUzQiUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFdHV5YS4wLmJmYzgzNmIzYzIyNzhiZTE2ODR0aWsuMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZX01TJTIyJTNFNSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRXNlYyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkNZJTYwVDVYT1IlM0F3dDg1cHh1JTdCaGhZJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
                    

                    Das Problem ist zustande gekommen als ich den Javascript Adapter auf Version 5.5.0 upgedatet habe. Ich hatte zuvor auch eine Meldung erhalten, dass man das Update nicht durchführen darf, wenn die Scripte in bestimmten Ordnern liegen. Dachte bei mir wäre alles im grünen Bereich. Habe upgedatet und danach waren alle Scripte weg.
                    Nur durch das Zurücksetzen auf einen älteren Zustand habe ich sie soweit wieder zurück bekommen.

                    Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten :D

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

                    @alyxabyss sagte: ich habe die Scripte in dem Ordner gefunden

                    Welcher Ordner ist es?

                    @alyxabyss sagte in .js Dateien ins Blockly Format importieren/konvertieren?:

                    Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten

                    Es ist Version 5.5.2 verfügbar, die vor dem Update warnt, wenn das Spiegelverzeichnis unter /opt/iobroker liegt.

                    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

                    A 1 Antwort Letzte Antwort
                    0
                    • A AlyxAbyss

                      @paul53 ich habe die Scripte in dem Ordner gefunden wo der Javascript Adapter die Spiegelungen ablegt.

                      Inhaltlich sehen die Dateien so aus:

                      schedule("13 13 * * *", async function () {
                        setState("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, true);
                        setState("alexa2.0.Echo-Devices.G091AA08114400T1.Commands.ssml"/*ssml*/, (['<speak><voice name="Vicki">','Hast du heute schon deine Pflanzen gegossen?','</voice></speak>'].join('')));
                        setStateDelayed("tuya.0.bfc836b3c2278be1684tik.1"/*switch_1*/, false, 5000, false);
                      });
                      
                      //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzY2hlZHVsZSUyMiUyMGlkJTNEJTIyJTVEa25FbkZ0NiFIVEIlNUQueSU0MCUzQVdRYyUyMiUyMHglM0QlMjItMzEyJTIyJTIweSUzRCUyMi00MzclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ0hFRFVMRSUyMiUzRTEzJTIwMTMlMjAqJTIwKiUyMColM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJRNDA0S0wqTUd+OSUzQkkpTTBlJTJDVVQlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V0dXlhLjAuYmZjODM2YjNjMjI3OGJlMTY4NHRpay4xJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyKWpoaG4lNjBNeG8lM0RPTUYhYSU2MGUuMSUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnZ4JTNCJTdCJTQwKXNLY2IySTJ6JTIzd3R2T1MlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMuRzA5MUFBMDgxMTQ0MDBUMS5Db21tYW5kcy5zc21sJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjJWWEolM0IlNjAtcTBzazZOTSUzQW0lM0IlM0RlaHklMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMyUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMm9tRFolNUIlNUQ3RiUyRmElMjNBYTMydiUzQiUyRnIlMkMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTI2bHQlM0JzcGVhayUyNmd0JTNCJTI2bHQlM0J2b2ljZSUyMG5hbWUlM0QlMjJWaWNraSUyMiUyNmd0JTNCJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmwlM0QlM0RxU1VVaiU2MGd5ZUMqaUJuSkYlNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFSGFzdCUyMGR1JTIwaGV1dGUlMjBzY2hvbiUyMGRlaW5lJTIwUGZsYW56ZW4lMjBnZWdvc3NlbiUzRiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ+JTYwJTI1d3hqJTdDbTkzJTNCcjV0em4lNUJhdCUyNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjZsdCUzQiUyRnZvaWNlJTI2Z3QlM0IlMjZsdCUzQiUyRnNwZWFrJTI2Z3QlM0IlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmdsVCUyRjclMjRyenVXSV9oJTNGUCU1RThUZiUzQiUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFdHV5YS4wLmJmYzgzNmIzYzIyNzhiZTE2ODR0aWsuMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZX01TJTIyJTNFNSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRXNlYyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkNZJTYwVDVYT1IlM0F3dDg1cHh1JTdCaGhZJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
                      

                      Das Problem ist zustande gekommen als ich den Javascript Adapter auf Version 5.5.0 upgedatet habe. Ich hatte zuvor auch eine Meldung erhalten, dass man das Update nicht durchführen darf, wenn die Scripte in bestimmten Ordnern liegen. Dachte bei mir wäre alles im grünen Bereich. Habe upgedatet und danach waren alle Scripte weg.
                      Nur durch das Zurücksetzen auf einen älteren Zustand habe ich sie soweit wieder zurück bekommen.

                      Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten :D

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

                      @alyxabyss sagte in .js Dateien ins Blockly Format importieren/konvertieren?:

                      Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten

                      Das habe ich noch nie erlebt. Ich poste dir später ein Script mit dem du aus den Skripten im Mirrorpath XML-Dateien erstellen kannst welche du dann importieren kannst. Für dein Beispiel ist das diese Datei:

                      <xml xmlns="https://developers.google.com/blockly/xml">
                       <block type="schedule" id="]knEnFt6!HTB].y@:WQc" x="-312" y="-437">
                         <field name="SCHEDULE">13 13 * * *</field>
                         <statement name="STATEMENT">
                           <block type="control" id="Q404KL*MG~9;I)M0e,UT">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">tuya.0.bfc836b3c2278be1684tik.1</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="logic_boolean" id=")jhhn`Mxo=OMF!a`e.1$">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                             <next>
                               <block type="control" id="vx;{@)sKcb2I2z#wtvOS">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">alexa2.0.Echo-Devices.G091AA08114400T1.Commands.ssml</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="text_join" id="VXJ;`-q0sk6NM:m;=ehy">
                                     <mutation items="3"></mutation>
                                     <value name="ADD0">
                                       <block type="text" id="omDZ[]7F/a#Aa32v;/r,">
                                         <field name="TEXT">&lt;speak&gt;&lt;voice name="Vicki"&gt;</field>
                                       </block>
                                     </value>
                                     <value name="ADD1">
                                       <block type="text" id="l==qSUUj`gyeC*iBnJF]">
                                         <field name="TEXT">Hast du heute schon deine Pflanzen gegossen?</field>
                                       </block>
                                     </value>
                                     <value name="ADD2">
                                       <block type="text" id="~`%wxj|m93;r5tzn[at$">
                                         <field name="TEXT">&lt;/voice&gt;&lt;/speak&gt;</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="control" id="glT/7$rzuWI_h?P^8Tf;">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                     <field name="OID">tuya.0.bfc836b3c2278be1684tik.1</field>
                                     <field name="WITH_DELAY">TRUE</field>
                                     <field name="DELAY_MS">5</field>
                                     <field name="UNIT">sec</field>
                                     <field name="CLEAR_RUNNING">FALSE</field>
                                     <value name="VALUE">
                                       <block type="logic_boolean" id="CY`T5XOR:wt85pxu{hhY">
                                         <field name="BOOL">FALSE</field>
                                       </block>
                                     </value>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                      </xml>
                      

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

                      1 Antwort Letzte Antwort
                      1
                      • paul53P paul53

                        @alyxabyss sagte: ich habe die Scripte in dem Ordner gefunden

                        Welcher Ordner ist es?

                        @alyxabyss sagte in .js Dateien ins Blockly Format importieren/konvertieren?:

                        Jetzt traue ich mich nicht mehr den Adapter erneut upzudaten

                        Es ist Version 5.5.2 verfügbar, die vor dem Update warnt, wenn das Spiegelverzeichnis unter /opt/iobroker liegt.

                        A Offline
                        A Offline
                        AlyxAbyss
                        schrieb am zuletzt editiert von AlyxAbyss
                        #12

                        @paul53 ich hatte die Spiegelung im Javascript Adapter auf /media/usb/iobroker gesetzt. Darum dachte ich, das Update sollte kein Problem darstellen. Falsch gedacht. Trotzdem waren die Scripte alle plötzlich weg.

                        Dann drüber gefreut, dass ich ja ein Backup habe, aber dann gemerkt, dass ich die bei Blockly nicht direkt importieren kann.
                        Wenn ich die allerdings direkt in die Scriptübersicht importiere, erscheinen sie dort als JavaScript und nicht als Blockly, aber funktionieren normal. Nur das editieren, macht es für mich als Laien dann auch wieder schwierig. Mit Blockly komm ich ja soweit klar, aber bei richtigen Scripts bin ich überfordert.

                        @fastfoot Danke. Das wäre wäre Klasse. Hab zwar soweit alles wieder ins laufen bekommen. Nur für die Zukunft wäre das natürlich prima. Sonst komme ich mit den Spiegelungen nicht zurecht, wenn ich nochmal das Problem habe.

                        BananaJoeB F 2 Antworten Letzte Antwort
                        0
                        • A AlyxAbyss

                          @paul53 ich hatte die Spiegelung im Javascript Adapter auf /media/usb/iobroker gesetzt. Darum dachte ich, das Update sollte kein Problem darstellen. Falsch gedacht. Trotzdem waren die Scripte alle plötzlich weg.

                          Dann drüber gefreut, dass ich ja ein Backup habe, aber dann gemerkt, dass ich die bei Blockly nicht direkt importieren kann.
                          Wenn ich die allerdings direkt in die Scriptübersicht importiere, erscheinen sie dort als JavaScript und nicht als Blockly, aber funktionieren normal. Nur das editieren, macht es für mich als Laien dann auch wieder schwierig. Mit Blockly komm ich ja soweit klar, aber bei richtigen Scripts bin ich überfordert.

                          @fastfoot Danke. Das wäre wäre Klasse. Hab zwar soweit alles wieder ins laufen bekommen. Nur für die Zukunft wäre das natürlich prima. Sonst komme ich mit den Spiegelungen nicht zurecht, wenn ich nochmal das Problem habe.

                          BananaJoeB Online
                          BananaJoeB Online
                          BananaJoe
                          Most Active
                          schrieb am zuletzt editiert von BananaJoe
                          #13

                          @alyxabyss ich finde meinen eigenen verf....ten Beitrag dazu nicht wieder den ich mal gemacht habe ... aber es geht so:

                          • Im JavaScript Adapter die Spiegelung der Skripte ins Dateisystem konfigurieren
                          • Dann ein neues Blockly mit passenden Namen erstellen
                          • Es wird unmittelbar im Dateisystem auch eine passende Datei auftauchen. Die bearbeiten und den Inhalt den du hast inklusive der kryptischen letzten Zeile einfügen
                          • Speichern!
                          • Tata, im ScriptEditor sollte sich das auch gleich aktualisiert haben und der Blockly ist wieder da

                          Ich hab dazu mal eine Anleitung gemacht wie man das aus dem BackupItUp Adapter holt, finde das aber gerade nicht.

                          Doch gefunden: https://forum.iobroker.net/topic/51702/scripte-aus-backup-wiederherstellen/4?_=1648128711954

                          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                          A 1 Antwort Letzte Antwort
                          1
                          • BananaJoeB BananaJoe

                            @alyxabyss ich finde meinen eigenen verf....ten Beitrag dazu nicht wieder den ich mal gemacht habe ... aber es geht so:

                            • Im JavaScript Adapter die Spiegelung der Skripte ins Dateisystem konfigurieren
                            • Dann ein neues Blockly mit passenden Namen erstellen
                            • Es wird unmittelbar im Dateisystem auch eine passende Datei auftauchen. Die bearbeiten und den Inhalt den du hast inklusive der kryptischen letzten Zeile einfügen
                            • Speichern!
                            • Tata, im ScriptEditor sollte sich das auch gleich aktualisiert haben und der Blockly ist wieder da

                            Ich hab dazu mal eine Anleitung gemacht wie man das aus dem BackupItUp Adapter holt, finde das aber gerade nicht.

                            Doch gefunden: https://forum.iobroker.net/topic/51702/scripte-aus-backup-wiederherstellen/4?_=1648128711954

                            A Offline
                            A Offline
                            AlyxAbyss
                            schrieb am zuletzt editiert von
                            #14

                            @bananajoe Ah danke. Das sieht nützlich aus. Das schau ich mir heute Abend mal genauer an. :)

                            1 Antwort Letzte Antwort
                            0
                            • A AlyxAbyss

                              @paul53 ich hatte die Spiegelung im Javascript Adapter auf /media/usb/iobroker gesetzt. Darum dachte ich, das Update sollte kein Problem darstellen. Falsch gedacht. Trotzdem waren die Scripte alle plötzlich weg.

                              Dann drüber gefreut, dass ich ja ein Backup habe, aber dann gemerkt, dass ich die bei Blockly nicht direkt importieren kann.
                              Wenn ich die allerdings direkt in die Scriptübersicht importiere, erscheinen sie dort als JavaScript und nicht als Blockly, aber funktionieren normal. Nur das editieren, macht es für mich als Laien dann auch wieder schwierig. Mit Blockly komm ich ja soweit klar, aber bei richtigen Scripts bin ich überfordert.

                              @fastfoot Danke. Das wäre wäre Klasse. Hab zwar soweit alles wieder ins laufen bekommen. Nur für die Zukunft wäre das natürlich prima. Sonst komme ich mit den Spiegelungen nicht zurecht, wenn ich nochmal das Problem habe.

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

                              @alyxabyss Zeile 22 für den Pfad anpassen, es werden xml Dateien für alle Blocklies generiert, nichts wird gelöscht. Man kann also damit 'rumspielen'

                              /**
                              * Zweck:   Skript zum extrahieren der Blockly-XML aus Skript-Backup oder gespiegelten Skripten
                              * Datum:   24.03.2022
                              * Autor:   @fastfoot
                              * Forum:   https://forum.iobroker.net/topic/53653/js-dateien-ins-blockly-format-importieren-konvertieren/15
                              * 
                              * Anleitung:
                              * 
                              * 1. Dateipfad zu den gesicherten Skripten eintragen, default ==>  const restorePath = '/home/iobroker/scripts'
                              *      a) entweder der gespiegelte Pfad, wie er in der JS-Instanz angegeben ist, oder
                              *      b) der Pfad, in den die ZIP-Datei (aus 'Exportieren Sie alle Skripte') extrahiert wurde
                              * 
                              * 2. Dateiendung für Sourcefile eintragen, entweder .json oder .js, default ==>  const fExtIn = '.json'
                              * 
                              * 3. Dateiendung für Output eintragen, entweder .xml oder .txt, default ==>  const fExtOut = '.xml'
                              * 
                              * 4. Wählen, ob Originaldatei gelöscht wird, default ===> const DeleteSource = false
                              */
                              const dbg = false;                                 // Zusatzausgaben
                              const fExtOut = '.xml';                            // <==== Dateiendung für Output bestimmen, entweder .txt oder .xml
                              const fExtIn = '.js';                              // <==== Dateiendung bestimmen, entweder .json oder .js
                              const restorePath = '/home/iobroker/scripts';      // <==== Dateipfad zu den gesicherten Skripten
                              //const deleteSource = false;                        // <==== Lösche Original-Datei
                              const filesToSkip = [];                            // <==== Dateien und/oder Ordner ausschließen
                              
                              const fs = require('fs');
                              const path = require('path');
                              
                              var filesCollection = [];
                              
                              /**
                              * Extrahiere und schreibe Blockly-XML
                              */
                              function writeXML(fn) {
                                 var fnOut = fn.replace(fExtIn, fExtOut);
                                 var data = fs.readFileSync(fn, 'utf8')
                                 if (dbg) log(fn)
                                 const pos = data.lastIndexOf('\n');
                                 if (pos !== -1) {
                                     data = data.substring(pos + 3);
                                     if (data.indexOf('JTNDeG1sJTIweG1') !== -1) {
                                         data = decodeURIComponent(Buffer.from(data, 'base64').toString('utf8'));
                                         fs.writeFile(fnOut, data, err => {
                                             if (err) {
                                                 return console.log(err, 'error');
                                             } else {
                                                 if (dbg) log(fnOut);
                                             }
                                         });
                                     }
                                 }
                              }
                              
                              /**
                              * Lese Verzeichnis
                              */
                              function readDirectorySynchronously(directory) {
                                 var currentDirectorypath = directory;
                              
                                 var currentDirectory = fs.readdirSync(currentDirectorypath, 'utf8');
                              
                                 currentDirectory.forEach(file => {
                                     var fileShouldBeSkipped = filesToSkip.indexOf(file) > -1;
                                     var pathOfCurrentItem = path.join(directory, file);
                                     if (!fileShouldBeSkipped && fs.statSync(pathOfCurrentItem).isFile()) {
                                         filesCollection.push(pathOfCurrentItem);
                                     }
                                     else if (!fileShouldBeSkipped) {
                                         var directorypath = path.join(directory, file);
                                         readDirectorySynchronously(directorypath);
                                     }
                                 });
                              }
                              
                              function main() {
                                 readDirectorySynchronously(restorePath);
                              
                                 filesCollection.forEach(file => {
                                     if (dbg) log(file)
                                     if (file.indexOf(fExtIn) !== -1) {
                                         writeXML(file);
                                         /*if (deleteSource) {
                                             fs.unlinkSync(file);
                                         }*/
                                     }
                                 });
                              
                                 //setStateDelayed('javascript.' + instance + '.scriptEnabled.Tools.GetAllXmlFiles', false, false, parseInt('2000', 10), false);
                              };
                              
                              main();
                              

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

                              A 1 Antwort Letzte Antwort
                              2
                              • F fastfoot

                                @alyxabyss Zeile 22 für den Pfad anpassen, es werden xml Dateien für alle Blocklies generiert, nichts wird gelöscht. Man kann also damit 'rumspielen'

                                /**
                                * Zweck:   Skript zum extrahieren der Blockly-XML aus Skript-Backup oder gespiegelten Skripten
                                * Datum:   24.03.2022
                                * Autor:   @fastfoot
                                * Forum:   https://forum.iobroker.net/topic/53653/js-dateien-ins-blockly-format-importieren-konvertieren/15
                                * 
                                * Anleitung:
                                * 
                                * 1. Dateipfad zu den gesicherten Skripten eintragen, default ==>  const restorePath = '/home/iobroker/scripts'
                                *      a) entweder der gespiegelte Pfad, wie er in der JS-Instanz angegeben ist, oder
                                *      b) der Pfad, in den die ZIP-Datei (aus 'Exportieren Sie alle Skripte') extrahiert wurde
                                * 
                                * 2. Dateiendung für Sourcefile eintragen, entweder .json oder .js, default ==>  const fExtIn = '.json'
                                * 
                                * 3. Dateiendung für Output eintragen, entweder .xml oder .txt, default ==>  const fExtOut = '.xml'
                                * 
                                * 4. Wählen, ob Originaldatei gelöscht wird, default ===> const DeleteSource = false
                                */
                                const dbg = false;                                 // Zusatzausgaben
                                const fExtOut = '.xml';                            // <==== Dateiendung für Output bestimmen, entweder .txt oder .xml
                                const fExtIn = '.js';                              // <==== Dateiendung bestimmen, entweder .json oder .js
                                const restorePath = '/home/iobroker/scripts';      // <==== Dateipfad zu den gesicherten Skripten
                                //const deleteSource = false;                        // <==== Lösche Original-Datei
                                const filesToSkip = [];                            // <==== Dateien und/oder Ordner ausschließen
                                
                                const fs = require('fs');
                                const path = require('path');
                                
                                var filesCollection = [];
                                
                                /**
                                * Extrahiere und schreibe Blockly-XML
                                */
                                function writeXML(fn) {
                                   var fnOut = fn.replace(fExtIn, fExtOut);
                                   var data = fs.readFileSync(fn, 'utf8')
                                   if (dbg) log(fn)
                                   const pos = data.lastIndexOf('\n');
                                   if (pos !== -1) {
                                       data = data.substring(pos + 3);
                                       if (data.indexOf('JTNDeG1sJTIweG1') !== -1) {
                                           data = decodeURIComponent(Buffer.from(data, 'base64').toString('utf8'));
                                           fs.writeFile(fnOut, data, err => {
                                               if (err) {
                                                   return console.log(err, 'error');
                                               } else {
                                                   if (dbg) log(fnOut);
                                               }
                                           });
                                       }
                                   }
                                }
                                
                                /**
                                * Lese Verzeichnis
                                */
                                function readDirectorySynchronously(directory) {
                                   var currentDirectorypath = directory;
                                
                                   var currentDirectory = fs.readdirSync(currentDirectorypath, 'utf8');
                                
                                   currentDirectory.forEach(file => {
                                       var fileShouldBeSkipped = filesToSkip.indexOf(file) > -1;
                                       var pathOfCurrentItem = path.join(directory, file);
                                       if (!fileShouldBeSkipped && fs.statSync(pathOfCurrentItem).isFile()) {
                                           filesCollection.push(pathOfCurrentItem);
                                       }
                                       else if (!fileShouldBeSkipped) {
                                           var directorypath = path.join(directory, file);
                                           readDirectorySynchronously(directorypath);
                                       }
                                   });
                                }
                                
                                function main() {
                                   readDirectorySynchronously(restorePath);
                                
                                   filesCollection.forEach(file => {
                                       if (dbg) log(file)
                                       if (file.indexOf(fExtIn) !== -1) {
                                           writeXML(file);
                                           /*if (deleteSource) {
                                               fs.unlinkSync(file);
                                           }*/
                                       }
                                   });
                                
                                   //setStateDelayed('javascript.' + instance + '.scriptEnabled.Tools.GetAllXmlFiles', false, false, parseInt('2000', 10), false);
                                };
                                
                                main();
                                

                                A Offline
                                A Offline
                                AlyxAbyss
                                schrieb am zuletzt editiert von
                                #16

                                @fastfoot Wow danke. Einfach genial. Direkt mal sichern :)

                                I 1 Antwort Letzte Antwort
                                0
                                • A AlyxAbyss

                                  @fastfoot Wow danke. Einfach genial. Direkt mal sichern :)

                                  I Offline
                                  I Offline
                                  iobroker_Alex
                                  schrieb am zuletzt editiert von
                                  #17

                                  @fastfoot

                                  Hab genau das selbe Problem. Mit deinem Skript komme ich allerdings nicht soweit, dass eine "Output-Datei" generiert wird. Kannst du bitte einmal versuchen die folgende Datei wiederherzustellen?
                                  Vielen, vielen Dank!

                                  Strommessung.json

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


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  771

                                  Online

                                  32.6k

                                  Benutzer

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