Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Ordner und Skripte verschwunden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Ordner und Skripte verschwunden

Scheduled Pinned Locked Moved ioBroker Allgemein
12 Posts 3 Posters 1.6k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 2afs2 Offline
    2afs2 Offline
    2afs
    wrote on last edited by
    #1

    Hallo zusammen,

    ....ich weiß es klingt komisch...und ihr werdet mich fragen "sicher nichts gemacht?" aber bei meiner Installation sind alle Ordner und Skripte verschwunden.
    Ich hatte hauptsächlich Skripte die eher selten und unregelmäßig Aktionen ausgeführt haben, daher fiel es mir erst recht spät auf und zwar so spät, dass die vorgehaltenen Backups alle keine Javascript Inhalte mehr erhalten. Letzte Änderungen die im zeitlichen Rahmen gelegen haben könnten: Redis installiert und die dafür notwendigen local settings angepasst.

    Gelöscht habe ich aber sicher keine Skripte und Ordner. Aktuell gibt es nur noch einen leeren 'common' Ordner und in den Experteneinstellungen auch den 'global' Ordner. Sonst ist nichts mehr da. Es sind auch keine Filter in der Ansicht gesetzt. Neuanlage von neuen Ordnern und Skripten funktioniert und wird auch angezeigt.
    Habt ihr eine Idee was ich prüfen könnte um herauszubekommen was passiert ist?
    Oder ist jemandem von Euch so etwas schon zu Ohren gekommen?

    Besten Gruß

    F 1 Reply Last reply
    0
    • 2afs2 2afs

      Hallo zusammen,

      ....ich weiß es klingt komisch...und ihr werdet mich fragen "sicher nichts gemacht?" aber bei meiner Installation sind alle Ordner und Skripte verschwunden.
      Ich hatte hauptsächlich Skripte die eher selten und unregelmäßig Aktionen ausgeführt haben, daher fiel es mir erst recht spät auf und zwar so spät, dass die vorgehaltenen Backups alle keine Javascript Inhalte mehr erhalten. Letzte Änderungen die im zeitlichen Rahmen gelegen haben könnten: Redis installiert und die dafür notwendigen local settings angepasst.

      Gelöscht habe ich aber sicher keine Skripte und Ordner. Aktuell gibt es nur noch einen leeren 'common' Ordner und in den Experteneinstellungen auch den 'global' Ordner. Sonst ist nichts mehr da. Es sind auch keine Filter in der Ansicht gesetzt. Neuanlage von neuen Ordnern und Skripten funktioniert und wird auch angezeigt.
      Habt ihr eine Idee was ich prüfen könnte um herauszubekommen was passiert ist?
      Oder ist jemandem von Euch so etwas schon zu Ohren gekommen?

      Besten Gruß

      F Offline
      F Offline
      fastfoot
      wrote on last edited by
      #2

      @2afs hast du evtl. bei der Umstellung zu Redis nicht migriert? Schau mal in iobroker-data ob du nicht noch ne alte objects.json Datei finden kannst. Dort gibt es auch einen folder backup-objects mit evtl. alten Daten

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

      2afs2 3 Replies Last reply
      0
      • F fastfoot

        @2afs hast du evtl. bei der Umstellung zu Redis nicht migriert? Schau mal in iobroker-data ob du nicht noch ne alte objects.json Datei finden kannst. Dort gibt es auch einen folder backup-objects mit evtl. alten Daten

        2afs2 Offline
        2afs2 Offline
        2afs
        wrote on last edited by
        #3

        Hi @fastfoot Super, vielen Dank für den Tip. Ich schaue gleich morgen früh nach.
        Lieben Gruß

        1 Reply Last reply
        0
        • F fastfoot

          @2afs hast du evtl. bei der Umstellung zu Redis nicht migriert? Schau mal in iobroker-data ob du nicht noch ne alte objects.json Datei finden kannst. Dort gibt es auch einen folder backup-objects mit evtl. alten Daten

          2afs2 Offline
          2afs2 Offline
          2afs
          wrote on last edited by 2afs
          #4

          @fastfoot Ich habe ein älteres Image (erstellt mit dd) gefunden, welches vor der REDIS Installation erstellt wurde. Ich habe es eingebunden und kann auf die Files zugreifen. Frage: Wo würde ich denn die erstellten Skripts finden?
          d1a425e9-d6ca-448e-b83d-7374d0a1dd2f-image.png

          Im Folder backup-objects sind objects und states Dateien vorhanden, aber wo sind die javascripts?
          820418fe-6346-4826-956c-7861a0325627-image.png

          1 Reply Last reply
          0
          • F fastfoot

            @2afs hast du evtl. bei der Umstellung zu Redis nicht migriert? Schau mal in iobroker-data ob du nicht noch ne alte objects.json Datei finden kannst. Dort gibt es auch einen folder backup-objects mit evtl. alten Daten

            2afs2 Offline
            2afs2 Offline
            2afs
            wrote on last edited by 2afs
            #5

            @fastfoot ich bin einen Schritt weiter. Wenn ich in das alte JSON File hineinschaue, dann finde ich dort Skript informationen.
            Würde es reichen:

            1. Ordnerstruktur von Hand wieder anzulegen
            2. den im Codeteil unter "script.js.*"/"source" string als neues Skript einzufügen?
            3. was ist mit den "javascript.0.scriptEnabled.*" Einträgen? Erstellen die sich wieder von alleine?

            Ich möchte wirklich nur die Skripte wieder zurück haben und kein ganzes Backup zurückspielen, da sich zu viel am System geändert hat.
            Generell ist es aber immer noch die gleiche Installation, daher denke ich, dass die IDs bislang auch unverändert sind.

            39c67e4f-9d6c-4cd0-9247-6827270e4202-image.png

            "script.js.common.DEV.Lampe_wenn_Tür_auf": {
            		"common": {
            			"name": "Lampe wenn Tür auf",
            			"expert": true,
            			"engineType": "Blockly",
            			"engine": "system.adapter.javascript.0",
            			"source": "on({id: \"deconz.0.Sensors.9.vibration\"/*Vibration 9 vibration*/, val: true}, async function (obj) {\n  var value = obj.state.val;\n  var oldValue = obj.oldState.val;\n  setState(\"deconz.0.Lights.4.on\"/*Dimmable light HUE 01 on*/, true);\n  setState(\"deconz.0.Lights.4.level\"/*Dimmable light HUE 01 level*/, 10);\n});\non({id: \"deconz.0.Sensors.9.vibration\"/*Vibration 9 vibration*/, val: false}, async function (obj) {\n  var value = obj.state.val;\n  var oldValue = obj.oldState.val;\n  setState(\"deconz.0.Lights.4.on\"/*Dimmable light HUE 01 on*/, false);\n});\n\n//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIySm90JTYwcmhNQ2glN0NKQyUyMyFwYU5YWXIlMjIlMjB4JTNEJTIyMjYyJTIyJTIweSUzRCUyMjIxMiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLlNlbnNvcnMuOS52aWJyYXRpb24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRXRydWUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJ6JTJCMyU1RHAlMkMlN0MlNDBTJTVCQWolNUQlMkM5NClRdiU1RSUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLkxpZ2h0cy40Lm9uJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTJDMVBuJTNEZCU1RFZwRiolNUQlM0IlNDBzVyU2MGxhcCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMllVeCU3QiU3Q3VpZ3RTZiUyQ1FiNlElMjMxSi4lMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZWNvbnouMC5MaWdodHMuNC5sZXZlbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJHVDklN0QlN0IlM0RhbSlWeURhcDclNjBBU0FtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIyU3dXSk5IX3BHZHU0NUliVWlOJTYwKSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLlNlbnNvcnMuOS52aWJyYXRpb24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRWZhbHNlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyaUh5NkFqcUdjZyUyRmw2bmouZSU1RVNIJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFZGVjb256LjAuTGlnaHRzLjQub24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjIlM0JITTglMkIlNDBGJTdDbCFHYyUzRmElN0RoayU0MFUlNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF",
            			"debug": false,
            			"verbose": false,
            			"enabled": true
            		},
            		"type": "script",
            		"from": "system.adapter.javascript.0",
            		"user": "system.user.admin",
            		"ts": 1639472362998,
            		"_id": "script.js.common.DEV.Lampe_wenn_Tür_auf",
            		"acl": {
            			"object": 1636,
            			"owner": "system.user.andre",
            			"ownerGroup": "system.group.administrator"
            		}
            	},
            	"javascript.0.scriptEnabled.common.DEV.Lampe_wenn_Tür_auf": {
            		"_id": "javascript.0.scriptEnabled.common.DEV.Lampe_wenn_Tür_auf",
            		"common": {
            			"name": "scriptEnabled.common.DEV.Lampe_wenn_Tür_auf",
            			"desc": "controls script activity",
            			"type": "boolean",
            			"write": true,
            			"read": true,
            			"role": "switch.active"
            		},
            		"native": {
            			"script": "script.js.common.DEV.Lampe_wenn_Tür_auf"
            		},
            		"type": "state",
            		"from": "system.adapter.javascript.0",
            		"user": "system.user.admin",
            		"ts": 1620638641593,
            		"acl": {
            			"object": 1636,
            			"state": 1636,
            			"owner": "system.user.admin",
            			"ownerGroup": "system.group.administrator"
            		}
            	},
            	"javascript.0.scriptProblem.common.DEV.Lampe_wenn_Tür_auf": {
            		"_id": "javascript.0.scriptProblem.common.DEV.Lampe_wenn_Tür_auf",
            		"common": {
            			"name": "scriptProblem.common.DEV.Lampe_wenn_Tür_auf",
            			"desc": "is the script has a problem",
            			"type": "boolean",
            			"expert": true,
            			"write": false,
            			"read": true,
            			"role": "indicator.error"
            		},
            		"native": {
            			"script": "script.js.common.DEV.Lampe_wenn_Tür_auf"
            		},
            		"type": "state",
            		"from": "system.adapter.javascript.0",
            		"user": "system.user.admin",
            		"ts": 1620638641656,
            		"acl": {
            			"object": 1636,
            			"state": 1636,
            			"owner": "system.user.admin",
            			"ownerGroup": "system.group.administrator"
            		}
            

            Wobei sich dann immer noch die Frage stellt, wie ein "engineType": "Blockly" als Skript einzufügen wäre????

            F 1 Reply Last reply
            0
            • 2afs2 2afs

              @fastfoot ich bin einen Schritt weiter. Wenn ich in das alte JSON File hineinschaue, dann finde ich dort Skript informationen.
              Würde es reichen:

              1. Ordnerstruktur von Hand wieder anzulegen
              2. den im Codeteil unter "script.js.*"/"source" string als neues Skript einzufügen?
              3. was ist mit den "javascript.0.scriptEnabled.*" Einträgen? Erstellen die sich wieder von alleine?

              Ich möchte wirklich nur die Skripte wieder zurück haben und kein ganzes Backup zurückspielen, da sich zu viel am System geändert hat.
              Generell ist es aber immer noch die gleiche Installation, daher denke ich, dass die IDs bislang auch unverändert sind.

              39c67e4f-9d6c-4cd0-9247-6827270e4202-image.png

              "script.js.common.DEV.Lampe_wenn_Tür_auf": {
              		"common": {
              			"name": "Lampe wenn Tür auf",
              			"expert": true,
              			"engineType": "Blockly",
              			"engine": "system.adapter.javascript.0",
              			"source": "on({id: \"deconz.0.Sensors.9.vibration\"/*Vibration 9 vibration*/, val: true}, async function (obj) {\n  var value = obj.state.val;\n  var oldValue = obj.oldState.val;\n  setState(\"deconz.0.Lights.4.on\"/*Dimmable light HUE 01 on*/, true);\n  setState(\"deconz.0.Lights.4.level\"/*Dimmable light HUE 01 level*/, 10);\n});\non({id: \"deconz.0.Sensors.9.vibration\"/*Vibration 9 vibration*/, val: false}, async function (obj) {\n  var value = obj.state.val;\n  var oldValue = obj.oldState.val;\n  setState(\"deconz.0.Lights.4.on\"/*Dimmable light HUE 01 on*/, false);\n});\n\n//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIySm90JTYwcmhNQ2glN0NKQyUyMyFwYU5YWXIlMjIlMjB4JTNEJTIyMjYyJTIyJTIweSUzRCUyMjIxMiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLlNlbnNvcnMuOS52aWJyYXRpb24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRXRydWUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJ6JTJCMyU1RHAlMkMlN0MlNDBTJTVCQWolNUQlMkM5NClRdiU1RSUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLkxpZ2h0cy40Lm9uJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTJDMVBuJTNEZCU1RFZwRiolNUQlM0IlNDBzVyU2MGxhcCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMllVeCU3QiU3Q3VpZ3RTZiUyQ1FiNlElMjMxSi4lMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZWNvbnouMC5MaWdodHMuNC5sZXZlbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJHVDklN0QlN0IlM0RhbSlWeURhcDclNjBBU0FtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIyU3dXSk5IX3BHZHU0NUliVWlOJTYwKSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWRlY29uei4wLlNlbnNvcnMuOS52aWJyYXRpb24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRWZhbHNlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyaUh5NkFqcUdjZyUyRmw2bmouZSU1RVNIJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFZGVjb256LjAuTGlnaHRzLjQub24lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjIlM0JITTglMkIlNDBGJTdDbCFHYyUzRmElN0RoayU0MFUlNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF",
              			"debug": false,
              			"verbose": false,
              			"enabled": true
              		},
              		"type": "script",
              		"from": "system.adapter.javascript.0",
              		"user": "system.user.admin",
              		"ts": 1639472362998,
              		"_id": "script.js.common.DEV.Lampe_wenn_Tür_auf",
              		"acl": {
              			"object": 1636,
              			"owner": "system.user.andre",
              			"ownerGroup": "system.group.administrator"
              		}
              	},
              	"javascript.0.scriptEnabled.common.DEV.Lampe_wenn_Tür_auf": {
              		"_id": "javascript.0.scriptEnabled.common.DEV.Lampe_wenn_Tür_auf",
              		"common": {
              			"name": "scriptEnabled.common.DEV.Lampe_wenn_Tür_auf",
              			"desc": "controls script activity",
              			"type": "boolean",
              			"write": true,
              			"read": true,
              			"role": "switch.active"
              		},
              		"native": {
              			"script": "script.js.common.DEV.Lampe_wenn_Tür_auf"
              		},
              		"type": "state",
              		"from": "system.adapter.javascript.0",
              		"user": "system.user.admin",
              		"ts": 1620638641593,
              		"acl": {
              			"object": 1636,
              			"state": 1636,
              			"owner": "system.user.admin",
              			"ownerGroup": "system.group.administrator"
              		}
              	},
              	"javascript.0.scriptProblem.common.DEV.Lampe_wenn_Tür_auf": {
              		"_id": "javascript.0.scriptProblem.common.DEV.Lampe_wenn_Tür_auf",
              		"common": {
              			"name": "scriptProblem.common.DEV.Lampe_wenn_Tür_auf",
              			"desc": "is the script has a problem",
              			"type": "boolean",
              			"expert": true,
              			"write": false,
              			"read": true,
              			"role": "indicator.error"
              		},
              		"native": {
              			"script": "script.js.common.DEV.Lampe_wenn_Tür_auf"
              		},
              		"type": "state",
              		"from": "system.adapter.javascript.0",
              		"user": "system.user.admin",
              		"ts": 1620638641656,
              		"acl": {
              			"object": 1636,
              			"state": 1636,
              			"owner": "system.user.admin",
              			"ownerGroup": "system.group.administrator"
              		}
              

              Wobei sich dann immer noch die Frage stellt, wie ein "engineType": "Blockly" als Skript einzufügen wäre????

              F Offline
              F Offline
              fastfoot
              wrote on last edited by
              #6

              @2afs ich hatte hier vor einiger Zeit ein Skript gepostet welches aus einer objects.json die Skripte extrahiert. Suche mal danach

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

              2afs2 1 Reply Last reply
              1
              • F fastfoot

                @2afs ich hatte hier vor einiger Zeit ein Skript gepostet welches aus einer objects.json die Skripte extrahiert. Suche mal danach

                2afs2 Offline
                2afs2 Offline
                2afs
                wrote on last edited by
                #7

                @fastfoot meinst Du den hier?
                https://forum.iobroker.net/topic/51702/scripte-aus-backup-wiederherstellen/5?_=1648740670684

                Sieht nach ganz schöner Arbeit aus, das alles wieder als BLOCKLYs herzustellen.

                Aber vielleicht hast Du ja auch einen anderen Link oder Script gemeint.....

                F 1 Reply Last reply
                0
                • 2afs2 2afs

                  @fastfoot meinst Du den hier?
                  https://forum.iobroker.net/topic/51702/scripte-aus-backup-wiederherstellen/5?_=1648740670684

                  Sieht nach ganz schöner Arbeit aus, das alles wieder als BLOCKLYs herzustellen.

                  Aber vielleicht hast Du ja auch einen anderen Link oder Script gemeint.....

                  F Offline
                  F Offline
                  fastfoot
                  wrote on last edited by fastfoot
                  #8

                  @2afs da sehe ich keinen Beitrag von mir!
                  nimm dieses Skript und beachte die Zeilen 8, 9, 11 + 12

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

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

                  2afs2 1 Reply Last reply
                  2
                  • F fastfoot

                    @2afs da sehe ich keinen Beitrag von mir!
                    nimm dieses Skript und beachte die Zeilen 8, 9, 11 + 12

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

                    2afs2 Offline
                    2afs2 Offline
                    2afs
                    wrote on last edited by
                    #9

                    @fastfoot Vielen lieben Dank :beers: Es hat super funtioniert. Alle Skripte sind wieder da :flushed:
                    Ich musste nur noch ein paar kleinere Korrekturen vornehmen, da das JSON file im Image schon etwas älter war. Große Klasse.
                    Jetzt schreibe ich auch javascript mirror files. Damit bin ich zukünftig flexibler.
                    Warum alles verschwunden war ist zwar immer noch unklar aber ist jetzt auch nicht mehr so wichtig.

                    K 1 Reply Last reply
                    0
                    • 2afs2 2afs

                      @fastfoot Vielen lieben Dank :beers: Es hat super funtioniert. Alle Skripte sind wieder da :flushed:
                      Ich musste nur noch ein paar kleinere Korrekturen vornehmen, da das JSON file im Image schon etwas älter war. Große Klasse.
                      Jetzt schreibe ich auch javascript mirror files. Damit bin ich zukünftig flexibler.
                      Warum alles verschwunden war ist zwar immer noch unklar aber ist jetzt auch nicht mehr so wichtig.

                      K Offline
                      K Offline
                      kiste01
                      wrote on last edited by kiste01
                      #10

                      @2afs

                      Hi,
                      ich habe in einem anderen Thread einen Fehler, dass zwei Blockly Skripte nicht mehr editierbar bzw. der Inhalt sichtbar sind. Deswegen kam dieser Hinweis zur richtigen Zeit. Es mit gelungen, dass aus einer alten objects.json alle Skripte wieder einzeln im extra angelegten Ordner Restore sichtbar sind.

                      Frage: Wie bekomme ich den Inhalt einer einzelnen Datei wieder als Blockly importiert. Als Import geht geht es bei mir nicht. Was ist der Trick?

                      Und was sind mirror files bzw. wie machst du das?

                      Grüße
                      Torsten

                      F 1 Reply Last reply
                      0
                      • K kiste01

                        @2afs

                        Hi,
                        ich habe in einem anderen Thread einen Fehler, dass zwei Blockly Skripte nicht mehr editierbar bzw. der Inhalt sichtbar sind. Deswegen kam dieser Hinweis zur richtigen Zeit. Es mit gelungen, dass aus einer alten objects.json alle Skripte wieder einzeln im extra angelegten Ordner Restore sichtbar sind.

                        Frage: Wie bekomme ich den Inhalt einer einzelnen Datei wieder als Blockly importiert. Als Import geht geht es bei mir nicht. Was ist der Trick?

                        Und was sind mirror files bzw. wie machst du das?

                        Grüße
                        Torsten

                        F Offline
                        F Offline
                        fastfoot
                        wrote on last edited by
                        #11

                        @kiste01 sagte in Ordner und Skripte verschwunden:

                        Frage: Wie bekomme ich den Inhalt einer einzelnen Datei wieder als Blockly importiert. Als Import geht geht es bei mir nicht. Was ist der Trick?

                        Das Skript erzeugt für Blocklies XML-Dateien, deren Inhalt du dann im Js-Editor importieren kannst

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

                        K 1 Reply Last reply
                        1
                        • F fastfoot

                          @kiste01 sagte in Ordner und Skripte verschwunden:

                          Frage: Wie bekomme ich den Inhalt einer einzelnen Datei wieder als Blockly importiert. Als Import geht geht es bei mir nicht. Was ist der Trick?

                          Das Skript erzeugt für Blocklies XML-Dateien, deren Inhalt du dann im Js-Editor importieren kannst

                          K Offline
                          K Offline
                          kiste01
                          wrote on last edited by
                          #12

                          @fastfoot

                          Ich habe (meinen) Fehler jetzt gefunden.

                          Ich hatte in zwei Skripten einen deaktivierten whatsapp sendto Block drin. Den whatsapp Adapter hatte ich irgendwann gelöscht. Wahrscheinlich wurde durch ein update iob auf 4.0.21 und node.js auf 14.19.1 die fehlende Verbindung "bemerkt".
                          Wie bin ich drauf gekommen? Beim Import des skript aus dem Restore kam eine Fehlermeldung zum fehlerhaften whatsapp Block. Nachdem ich den whatsapp Adapter wieder installiert hatte, war das ursprüngliche Skript und das importierte Skript wieder sichtbar und editierbar.

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

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

                          534

                          Online

                          32.7k

                          Users

                          82.4k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe