NEWS
.js Dateien ins Blockly Format importieren/konvertieren?
-
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
-
@alyxabyss sagte: konvertieren/importieren oder so, damit ich sie wieder in Blockly verwenden kann?
Nein, Javascript kann nicht nach Blockly konvertiert werden.
-
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?
-
@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. -
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.Danke
-
@alyxabyss mich wundert wie aus Blocklies 'reine' JS-Dateien wurden. Ist da evtl eine letzte Zeile welche etwa so anfängt:
//JTNDeG1..........
? -
@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.
-
@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.
-
@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
-
@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.
-
@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:
-
@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.
-
@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
-
@bananajoe Ah danke. Das sieht nützlich aus. Das schau ich mir heute Abend mal genauer an.
-
@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'
-
@fastfoot Wow danke. Einfach genial. Direkt mal sichern
-
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!