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
    757

  • 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.
  • 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 Offline
                BananaJoeB Offline
                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

                        380

                        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