Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Datenbank Mapping von Objekten sichern/kopieren/editieren

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    10
    1
    218

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    768

Datenbank Mapping von Objekten sichern/kopieren/editieren

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
6 Beiträge 3 Kommentatoren 833 Aufrufe 3 Beobachtet
  • Ä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.
  • PercyP Offline
    PercyP Offline
    Percy
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    ich schreibe die Änderungen vieler Datenpunkte in eine Datenbank (in meinem Fall InfluxDB, aber mit MySQL/MariaDB ist der Vorgang identisch).
    Ich hatte bereits mehrmals das Vergnügen, nach einer Neuinstallation von Adaptern die Konfiguration für viele Datenpunkte erneut vornehmen zu müssen (z.B. nach Problemen mit dem KNX Adapter). Für jedes Objekt auf Einstellungen klicken, Konfiguration vornehmen und den richtigen Namen für das bereits existierende Objekt in der Datenbank vergeben... sehr zeitaufwändig.

    Ich frage mich daher, ob es nicht auch eine Möglichkeit gibt, diese Zuordnung irgendwie zu speichern und z.B. textbasiert in eine bestimmte Datei zurückzuschreiben, wenn es notwendig sein sollte. Einen ähnlichen Ansatz hat z.B. OpenHab, hier ist die Konfiguration textbasiert verfügbar, speichern, zurückspielen oder editieren geht daher recht leicht von der Hand.

    Für Ideen und Anregungen wäre ich dankbar.

    Grüße,

    Percy

    Synology 918+ 16GB - ioBroker in Docker v8.0.1 | KNX | Homematic | Homemanager | evcc | SMA WR

    L 1 Antwort Letzte Antwort
    0
    • PercyP Percy

      Hallo Zusammen,

      ich schreibe die Änderungen vieler Datenpunkte in eine Datenbank (in meinem Fall InfluxDB, aber mit MySQL/MariaDB ist der Vorgang identisch).
      Ich hatte bereits mehrmals das Vergnügen, nach einer Neuinstallation von Adaptern die Konfiguration für viele Datenpunkte erneut vornehmen zu müssen (z.B. nach Problemen mit dem KNX Adapter). Für jedes Objekt auf Einstellungen klicken, Konfiguration vornehmen und den richtigen Namen für das bereits existierende Objekt in der Datenbank vergeben... sehr zeitaufwändig.

      Ich frage mich daher, ob es nicht auch eine Möglichkeit gibt, diese Zuordnung irgendwie zu speichern und z.B. textbasiert in eine bestimmte Datei zurückzuschreiben, wenn es notwendig sein sollte. Einen ähnlichen Ansatz hat z.B. OpenHab, hier ist die Konfiguration textbasiert verfügbar, speichern, zurückspielen oder editieren geht daher recht leicht von der Hand.

      Für Ideen und Anregungen wäre ich dankbar.

      Grüße,

      Percy

      L Offline
      L Offline
      lessthanmore
      schrieb am zuletzt editiert von lessthanmore
      #2

      @percy Mit Alias sollte das klappen.
      Musst dann nur den Alias neu verknüpfen nach einer Änderung.

      PercyP 1 Antwort Letzte Antwort
      0
      • L lessthanmore

        @percy Mit Alias sollte das klappen.
        Musst dann nur den Alias neu verknüpfen nach einer Änderung.

        PercyP Offline
        PercyP Offline
        Percy
        schrieb am zuletzt editiert von Percy
        #3

        @lessthanmore
        über das Alias klappt die Zuweisung einwandfrei, das ist nicht das Problem. Aber wenn ich 100 Objekte in die Datenbank schreiben möchte, muss ich 100x bei dem jeweiligen Objekt die Einstellungen für Datentyp/Intervall/Alias vornehmen, das kostet je nach Menge der Objekte mehrere Stunden.

        EDIT: Auf Github hat sich der Entwickler des InfluxDB Adapters geäußert und einen Lösungsvorschlag gemacht. Da die Konfiguration im Objekt selbst gespeichert wird, kann eine textbasierte Konfiguration nicht ohne weiteres vorgenommen werden. Als Workaround kann die Konfiguration über ein Javascript vorgenommen werden, das erlaubt ein einfaches speichern/editieren/wiederherstellen

        https://github.com/ioBroker/ioBroker.influxdb/issues/180

        Synology 918+ 16GB - ioBroker in Docker v8.0.1 | KNX | Homematic | Homemanager | evcc | SMA WR

        PercyP 1 Antwort Letzte Antwort
        0
        • PercyP Percy

          @lessthanmore
          über das Alias klappt die Zuweisung einwandfrei, das ist nicht das Problem. Aber wenn ich 100 Objekte in die Datenbank schreiben möchte, muss ich 100x bei dem jeweiligen Objekt die Einstellungen für Datentyp/Intervall/Alias vornehmen, das kostet je nach Menge der Objekte mehrere Stunden.

          EDIT: Auf Github hat sich der Entwickler des InfluxDB Adapters geäußert und einen Lösungsvorschlag gemacht. Da die Konfiguration im Objekt selbst gespeichert wird, kann eine textbasierte Konfiguration nicht ohne weiteres vorgenommen werden. Als Workaround kann die Konfiguration über ein Javascript vorgenommen werden, das erlaubt ein einfaches speichern/editieren/wiederherstellen

          https://github.com/ioBroker/ioBroker.influxdb/issues/180

          PercyP Offline
          PercyP Offline
          Percy
          schrieb am zuletzt editiert von Percy
          #4

          Mithilfe des Vorschlages von Apollon77 habe ich ein Skript ausgearbeitet, welches ich gerne jedem, der vor ähnlichen Problemen steht, zur Verfügung stellen möchte.

          Einfach jeweils "gleichartige" Objekte (im Sinne der Konfiguration für die Aufzeichnung) in einem Skript zusammenfassen. Im 2 dimensionalen Array listOfObjects jeweils die ID des Datenpunkts und den Namen, mit dem er in der Datenbank angelegt werden soll angeben. Im unteren Teil einfach die Einstellungen anpassen, die für alle Datenpunkte gelten sollen.

          Kann auch gut verwendet werden, um Einstellungen für die unter listOfObjects gelisteten Datenpunkte zu ändern.

          var listOfObjects = [
              ['knx.1.Licht.Rückmeldung_Schalten_(Ein-Aus)_1_Bit.EG-HWR-Deckenlicht-Schalten-R', "licht_eg_hwr"],
              ['knx.1.Licht.Rückmeldung_Schalten_(Ein-Aus)_1_Bit.EG-Garderobe-Deckenlicht-Schalten-R', "licht_eg_garderobe"]
              //weitere Objekte hier ergänzen
          ]
          
          
          for(let index = 0, len = listOfObjects.length; index < len; ++index){
              sendTo('influxdb.0', 'enableHistory', {
              id: listOfObjects[index] [0],
              options: {
                  changesOnly:  true,
                  debounce:     500,
                  retention:    0,
                  changesMinDelta: 0,
                  storageType: "Boolean",
                  aliasId: listOfObjects[index] [1]
              }
          }, function (result) { if (result.error) { console.log(result.error); } if (result.success) {   }});
          }
          

          Synology 918+ 16GB - ioBroker in Docker v8.0.1 | KNX | Homematic | Homemanager | evcc | SMA WR

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • PercyP Percy

            Mithilfe des Vorschlages von Apollon77 habe ich ein Skript ausgearbeitet, welches ich gerne jedem, der vor ähnlichen Problemen steht, zur Verfügung stellen möchte.

            Einfach jeweils "gleichartige" Objekte (im Sinne der Konfiguration für die Aufzeichnung) in einem Skript zusammenfassen. Im 2 dimensionalen Array listOfObjects jeweils die ID des Datenpunkts und den Namen, mit dem er in der Datenbank angelegt werden soll angeben. Im unteren Teil einfach die Einstellungen anpassen, die für alle Datenpunkte gelten sollen.

            Kann auch gut verwendet werden, um Einstellungen für die unter listOfObjects gelisteten Datenpunkte zu ändern.

            var listOfObjects = [
                ['knx.1.Licht.Rückmeldung_Schalten_(Ein-Aus)_1_Bit.EG-HWR-Deckenlicht-Schalten-R', "licht_eg_hwr"],
                ['knx.1.Licht.Rückmeldung_Schalten_(Ein-Aus)_1_Bit.EG-Garderobe-Deckenlicht-Schalten-R', "licht_eg_garderobe"]
                //weitere Objekte hier ergänzen
            ]
            
            
            for(let index = 0, len = listOfObjects.length; index < len; ++index){
                sendTo('influxdb.0', 'enableHistory', {
                id: listOfObjects[index] [0],
                options: {
                    changesOnly:  true,
                    debounce:     500,
                    retention:    0,
                    changesMinDelta: 0,
                    storageType: "Boolean",
                    aliasId: listOfObjects[index] [1]
                }
            }, function (result) { if (result.error) { console.log(result.error); } if (result.success) {   }});
            }
            
            liv-in-skyL Offline
            liv-in-skyL Offline
            liv-in-sky
            schrieb am zuletzt editiert von liv-in-sky
            #5

            @percy

            falls interesse:

            mit diesem "schnipsel" durchläufst du alle dp einer instanz (oben definiert) und findest diejenigen, welchen einen history eintrag haben

            auch damit könntest du die werte setzen
            dein listOfObjects =wird ganz unten geschrieben

            damit musst du oben nicht alle id's mit namen eintragen - unten in der log ausgabe kann man dann die mit gleichen eintägen filtern

            let instanzen=["sonoff.0","iot.0"]; // eingabe der instanzen, welche durchsucht werden sollen
            let theJsonArr=[];   //array mit objecten, die einen history eintrag haben
            let jsonInfoHistory=[];  // array  mit objecten, die einen history eintrag haben und darin id, name, history definitionen
            let listOfObjects=[] ;
            
            for(let index = 0; index<instanzen.length; index++){
            
                 let selektor=instanzen[index]+".*"
            
                     $(selektor).each(function(id, i) {
               // log(id)
                                                      if (getObject(id).common.hasOwnProperty("custom") ){
                                                      if (getObject(id).common.custom.hasOwnProperty("sql.0")  || getObject(id).common.custom.hasOwnProperty("history.0") || getObject(id).common.custom.hasOwnProperty("influxdb.0") ) {
                                                                  log(id)
                                                                  theJsonArr.push(getObject(id))
                                                                  let theKey;
                                                                   if (getObject(id).common.custom.hasOwnProperty("sql.0")) {theKey="sql"}
                                                                   else if (getObject(id).common.custom.hasOwnProperty("history.0")) {theKey="history"}
                                                                   else if (getObject(id).common.custom.hasOwnProperty("influxdb.0")) {theKey="influxdb"}
                                                                   log(theKey)
                                                                  jsonInfoHistory.push({"id":id,"name":getObject(id).common.name,"values":getObject(id).common.custom[theKey+'.0']})
            
                                                                   }
                                                      }
                     });
            }
            
            // anzeige im log
            for (let i=0;i<jsonInfoHistory.length;i++){
            
                log(JSON.stringify(jsonInfoHistory[i].values.enabled))
                // oder bestimmt gesuchte
                if(Number(jsonInfoHistory[i].values.retention)==604800 && jsonInfoHistory[i].id.includes("sonoff") ) {log("retention ist gesucht : "+JSON.stringify(jsonInfoHistory[i].values.retention+" ID: "+jsonInfoHistory[i].id));
                                                                        listOfObjects.push([jsonInfoHistory[i].id,jsonInfoHistory[i].name])
                                                                       }
                }
              
             log(String(listOfObjects))
            

            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

            1 Antwort Letzte Antwort
            1
            • PercyP Offline
              PercyP Offline
              Percy
              schrieb am zuletzt editiert von
              #6

              Super, werde ich mal ausprobieren, danke!

              Synology 918+ 16GB - ioBroker in Docker v8.0.1 | KNX | Homematic | Homemanager | evcc | SMA WR

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

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

              542

              Online

              32.9k

              Benutzer

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