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. JavaScript
  5. [Skript] Namespace für Datenpunkte in Skripten abändern

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.0k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

[Skript] Namespace für Datenpunkte in Skripten abändern

Geplant Angeheftet Gesperrt Verschoben JavaScript
82 Beiträge 6 Kommentatoren 8.5k Aufrufe 9 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.
  • S stenmic

    @fastfoot nicht ganz passend zum Thema, aber vielleicht kannst du mir trotzdem helfen.

    Ich setze gerade einen neuen ioBroker auf.
    Nun möchte ich vom alten System einzelne, von mir erzeugte Ordner und deren Datenpunkte (mit Werten) aus dem alten System exportieren und im neuen System, unter einer neuen Ordnerstruktur, importieren.

    Beispiel:

    Struktur zum Exportieren (ioBroker alt)

    javascript.0.Regen.Kalender.Jahr.
    01 Wert:5
    02 Wert:3
    03 Wert:9
    04 Wert:1
    ...

    Struktur zum Importieren (ioBroker neu)

    javascript.0.Wetterstation.Froggit.Regen.Kalender.Jahr.
    01 Wert:5
    02 Wert:3
    03 Wert:9
    04 Wert:1
    ...

    Die Struktur vom alten System müsste in einen Datenpunkt geschrieben werden, den ich dann aufs neue System kopieren und importieren könnte.

    ist so etwas möglich.
    Ich habe bisher nichts gefunden, um einzelne Ordner mit Datenstruktur und deren Werte zu übertragen, nur über ein Backup, da wird aber alles wiederhergestellt, was ich in diesem Fall nicht möchte.

    liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von liv-in-sky
    #81

    @stenmic sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:

    Ich habe bisher nichts gefunden, um einzelne Ordner mit Datenstruktur und deren Werte zu übertragen, nur über ein Backup, da wird aber alles wiederhergestellt, was ich in diesem Fall nicht möchte.

    ich habe den teil der objecte, den ich brauche mit export JSON runtergeladen - anschliessend mit search und replace geändert und dann ein script genutzt, um die states zu sichern - das script liest die states und erzeugt ein neues script , welches die neuen dp setzen kann

    das script muss eingestellt werden - bei den pfeilen und wird unter /opt/iobroker ins datei system gesichert - dort muss dann auch der neue namespace mit search und replace definiert werden und dann wird das script als script angelegt und einmal ausgeführt

    var fs = require('fs');
    var now =    new Date(); // store current date and time
    var year =   now.getFullYear();
    var month =  addZero(now.getMonth()+1).zero2;
    var day =    addZero(now.getDate()).zero2;
    var Thour =  addZero(now.getHours()).zero2;
    var Tmin =   addZero(now.getMinutes()).zero2;
    var Tsec =   addZero(now.getSeconds()).zero2;
    var logdate = day + '.' + month + '.' + year;
    var logtime = Thour + '-' + Tmin + '-' + Tsec;
    
    var datei = "/opt/iobroker";
    
    // Schedule für die Updates
    //schedule("57 15 * * *",  function () {   
    
       var cacheSelectorState = $('state[state.id=bshb.0.*]');
    cacheSelectorState.each(function (id, i) {
       var val1 = getState(id).val;
          if (val1 == null ) 
             {log(id + " hat keinen state");} 
        else {var zk = "setState('"+id+"', "+val1 +");\n";
              if( typeof val1 === "string") {
                  zk = "setState('"+id+"', '"+val1+"');\n";
                /*  log(id + " -- " + val1 + " ----------- " + val1.includes('span'));*/
                  if (val1.includes('span') || val1.includes('class')) {log("------------------------------------------------------------- span oder classn enthalten "+ id);} 
                  else {
                  fs.appendFileSync(datei + "-bosch-" + logdate + "-"+ logtime + ".txt", zk);}}
              else {
                /*  log("KEIN STRING " +id + " -- " + val1);*/
                  fs.appendFileSync(datei + "-bosch-" + logdate + "-"+ logtime + ".txt", zk);}
              };
    
    
    });
    
    
    
    // ---------------------------------------------------------------------------------------
    // Funktion zur Erzeugung von 2 oder 3 führenden Nullen für das Datum Format
    //-----------------------------------------------------------------------------------------------------
    function addZero(i) {
       if (i < 10) {
           j = "00" + i;
           i = "0" + i;
       }
       if (i > 9 && i < 100) {
           j = "0" + i;
       }
       return {
           'zero2' : i,
           'zero3' : j
       };
    } // Ende Funktion
    
    

    Image 1.png

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    S 1 Antwort Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

      @stenmic sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:

      Ich habe bisher nichts gefunden, um einzelne Ordner mit Datenstruktur und deren Werte zu übertragen, nur über ein Backup, da wird aber alles wiederhergestellt, was ich in diesem Fall nicht möchte.

      ich habe den teil der objecte, den ich brauche mit export JSON runtergeladen - anschliessend mit search und replace geändert und dann ein script genutzt, um die states zu sichern - das script liest die states und erzeugt ein neues script , welches die neuen dp setzen kann

      das script muss eingestellt werden - bei den pfeilen und wird unter /opt/iobroker ins datei system gesichert - dort muss dann auch der neue namespace mit search und replace definiert werden und dann wird das script als script angelegt und einmal ausgeführt

      var fs = require('fs');
      var now =    new Date(); // store current date and time
      var year =   now.getFullYear();
      var month =  addZero(now.getMonth()+1).zero2;
      var day =    addZero(now.getDate()).zero2;
      var Thour =  addZero(now.getHours()).zero2;
      var Tmin =   addZero(now.getMinutes()).zero2;
      var Tsec =   addZero(now.getSeconds()).zero2;
      var logdate = day + '.' + month + '.' + year;
      var logtime = Thour + '-' + Tmin + '-' + Tsec;
      
      var datei = "/opt/iobroker";
      
      // Schedule für die Updates
      //schedule("57 15 * * *",  function () {   
      
         var cacheSelectorState = $('state[state.id=bshb.0.*]');
      cacheSelectorState.each(function (id, i) {
         var val1 = getState(id).val;
            if (val1 == null ) 
               {log(id + " hat keinen state");} 
          else {var zk = "setState('"+id+"', "+val1 +");\n";
                if( typeof val1 === "string") {
                    zk = "setState('"+id+"', '"+val1+"');\n";
                  /*  log(id + " -- " + val1 + " ----------- " + val1.includes('span'));*/
                    if (val1.includes('span') || val1.includes('class')) {log("------------------------------------------------------------- span oder classn enthalten "+ id);} 
                    else {
                    fs.appendFileSync(datei + "-bosch-" + logdate + "-"+ logtime + ".txt", zk);}}
                else {
                  /*  log("KEIN STRING " +id + " -- " + val1);*/
                    fs.appendFileSync(datei + "-bosch-" + logdate + "-"+ logtime + ".txt", zk);}
                };
      
      
      });
      
      
      
      // ---------------------------------------------------------------------------------------
      // Funktion zur Erzeugung von 2 oder 3 führenden Nullen für das Datum Format
      //-----------------------------------------------------------------------------------------------------
      function addZero(i) {
         if (i < 10) {
             j = "00" + i;
             i = "0" + i;
         }
         if (i > 9 && i < 100) {
             j = "0" + i;
         }
         return {
             'zero2' : i,
             'zero3' : j
         };
      } // Ende Funktion
      
      

      Image 1.png

      S Offline
      S Offline
      stenmic
      schrieb am zuletzt editiert von stenmic
      #82

      @liv-in-sky Danke… genau das hab ich gesucht. 👍🏻

      ich musste nur

      datei + "-bosch-" + logdate
      

      in

      datei + "/bosch-" + logdate
      

      ändern.

      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

      509

      Online

      32.5k

      Benutzer

      81.6k

      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