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. Skripten / Logik
  4. JavaScript
  5. History-Datenpunkte automatisiert für InfluxDB aktivieren

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    9
    1
    690

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    3.1k

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

History-Datenpunkte automatisiert für InfluxDB aktivieren

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 2 Kommentatoren 45 Aufrufe 2 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.
  • H Online
    H Online
    Hotze
    schrieb am zuletzt editiert von
    #1

    Ich habe meinen RPi4 nach Proxmox umgezogen und dabei einen Influxdb-Container eingerichtet.
    Da ich von Historyadapter komme (gewachsen als Anfänger), wollte ich nicht alle Datenpunkte durchsehen und per Hand schalten!

    Hier meine Lösung die eventuell jemandem helfen könnte:

    // ------------------------------------------------------------
    // Script: History → InfluxDB Datenpunkte automatisch aktivieren
    // Optimiert für den ioBroker JavaScript-Adapter mittels Selektor
    // ------------------------------------------------------------
    
    const HISTORY = "history.0";
    const INFLUX  = "influxdb.0";
    const DELAY_MS = 150;
    
    // Promise-Wrapper für sendTo
    function sendToPromise(adapter, command, message) {
       return new Promise((resolve, reject) => {
           sendTo(adapter, command, message, (result) => {
               if (result && result.error) reject(result.error);
               else resolve(result);
           });
       });
    }
    
    async function migrateHistoryToInflux() {
       log("Starte Suche nach History-Datenpunkten...");
    
       try {
           const targets = [];
    
           $('state').each(function(id) {
               const obj = getObject(id);
               if (obj?.common?.custom?.[HISTORY]?.enabled) {
                   targets.push(id);
               }
           });
    
           if (targets.length === 0) {
               log("Keine Datenpunkte mit aktivem History-Logging gefunden.", "warn");
               return;
           }
    
           log(`Es wurden ${targets.length} Datenpunkte mit aktivem History-Logging gefunden. Starte Übertragung an InfluxDB...`);
    
           let count = 0;
    
           for (const id of targets) {
               count++;
               log(`[${count}/${targets.length}] Aktiviere InfluxDB für: ${id}`);
    
               try {
                   await sendToPromise(INFLUX, "enableHistory", {
                       id: id,
                       options: {
                           changesOnly: true,
                           debounce: 1000,
                           retention: 0,
                           changesRelogInterval: 0,
                           changesMinDelta: 0,
                           blockTime: 0
                       }
                   });
               } catch (err) {
                   log(`Fehler bei ${id}: ${err}`, "warn");
               }
    
               await wait(DELAY_MS);
           }
    
           log(`Fertig! InfluxDB-Aktivierung für ${count} Datenpunkte erfolgreich abgeschlossen.`);
    
       } catch (error) {
           log("Fehler im Skript: " + error, "error");
       }
    }
    
    function wait(ms) {
       return new Promise(resolve => setTimeout(resolve, ms));
    }
    
    migrateHistoryToInflux();
    
    

    Das lief bei mir anstandlos durch und aktivierte bei 122 Datenpunkten den Influxadapter.

    Mit diesen Einstellungen:

    Entprellzeit: 0
    Blockierzeit: 0
    [X] Nur Änderungen aufzeichnen
    Trotzdem gleiche Werte aufzeichnen (Sekunden) 0
    Minimale Differenz zum letzten Wert 0
    Ignoriere Werte kleiner/größer als [LEER]
    [ ] Ignoriere 0 oder Nullwerte (==0)
    [ ] Optimierte Protokollierung übersprungener Werte für Diagramme deaktivieren
    Speichern als [Automatisch]
    Alias-ID [LEER]
    Runden Sie bei der Abfrage die Zahlen auf [LEER]
    [ ] Erweiterte Debug-Protokolle für den Datenpunkt aktivieren
    

    Viel Spass

    Marc BergM 1 Antwort Letzte Antwort
    0
    • H Hotze

      Ich habe meinen RPi4 nach Proxmox umgezogen und dabei einen Influxdb-Container eingerichtet.
      Da ich von Historyadapter komme (gewachsen als Anfänger), wollte ich nicht alle Datenpunkte durchsehen und per Hand schalten!

      Hier meine Lösung die eventuell jemandem helfen könnte:

      // ------------------------------------------------------------
      // Script: History → InfluxDB Datenpunkte automatisch aktivieren
      // Optimiert für den ioBroker JavaScript-Adapter mittels Selektor
      // ------------------------------------------------------------
      
      const HISTORY = "history.0";
      const INFLUX  = "influxdb.0";
      const DELAY_MS = 150;
      
      // Promise-Wrapper für sendTo
      function sendToPromise(adapter, command, message) {
         return new Promise((resolve, reject) => {
             sendTo(adapter, command, message, (result) => {
                 if (result && result.error) reject(result.error);
                 else resolve(result);
             });
         });
      }
      
      async function migrateHistoryToInflux() {
         log("Starte Suche nach History-Datenpunkten...");
      
         try {
             const targets = [];
      
             $('state').each(function(id) {
                 const obj = getObject(id);
                 if (obj?.common?.custom?.[HISTORY]?.enabled) {
                     targets.push(id);
                 }
             });
      
             if (targets.length === 0) {
                 log("Keine Datenpunkte mit aktivem History-Logging gefunden.", "warn");
                 return;
             }
      
             log(`Es wurden ${targets.length} Datenpunkte mit aktivem History-Logging gefunden. Starte Übertragung an InfluxDB...`);
      
             let count = 0;
      
             for (const id of targets) {
                 count++;
                 log(`[${count}/${targets.length}] Aktiviere InfluxDB für: ${id}`);
      
                 try {
                     await sendToPromise(INFLUX, "enableHistory", {
                         id: id,
                         options: {
                             changesOnly: true,
                             debounce: 1000,
                             retention: 0,
                             changesRelogInterval: 0,
                             changesMinDelta: 0,
                             blockTime: 0
                         }
                     });
                 } catch (err) {
                     log(`Fehler bei ${id}: ${err}`, "warn");
                 }
      
                 await wait(DELAY_MS);
             }
      
             log(`Fertig! InfluxDB-Aktivierung für ${count} Datenpunkte erfolgreich abgeschlossen.`);
      
         } catch (error) {
             log("Fehler im Skript: " + error, "error");
         }
      }
      
      function wait(ms) {
         return new Promise(resolve => setTimeout(resolve, ms));
      }
      
      migrateHistoryToInflux();
      
      

      Das lief bei mir anstandlos durch und aktivierte bei 122 Datenpunkten den Influxadapter.

      Mit diesen Einstellungen:

      Entprellzeit: 0
      Blockierzeit: 0
      [X] Nur Änderungen aufzeichnen
      Trotzdem gleiche Werte aufzeichnen (Sekunden) 0
      Minimale Differenz zum letzten Wert 0
      Ignoriere Werte kleiner/größer als [LEER]
      [ ] Ignoriere 0 oder Nullwerte (==0)
      [ ] Optimierte Protokollierung übersprungener Werte für Diagramme deaktivieren
      Speichern als [Automatisch]
      Alias-ID [LEER]
      Runden Sie bei der Abfrage die Zahlen auf [LEER]
      [ ] Erweiterte Debug-Protokolle für den Datenpunkt aktivieren
      

      Viel Spass

      Marc BergM Online
      Marc BergM Online
      Marc Berg
      Most Active
      schrieb am zuletzt editiert von
      #2

      @Hotze sagte:

      Viel Spass

      Das hätte man auch ganz ohne Script über die Filterfunktion im Admin lösen können.

      NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

      Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN

      Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

      1 Antwort Letzte Antwort
      0
      • H Online
        H Online
        Hotze
        schrieb zuletzt editiert von Hotze
        #3

        Erklärst du mir wie?
        Ich müsste ja jedes Objekt einzeln aktivieren?

        Marc BergM 1 Antwort Letzte Antwort
        0
        • H Hotze

          Erklärst du mir wie?
          Ich müsste ja jedes Objekt einzeln aktivieren?

          Marc BergM Online
          Marc BergM Online
          Marc Berg
          Most Active
          schrieb zuletzt editiert von Marc Berg
          #4

          @Hotze sagte:

          Ich müsste ja jedes Objekt einzeln aktivieren?

          Nein, genau das ist der Vorteil beim Arbeiten über die Filter:

          1. Filter "history.0" aktivieren. Damit werden nur noch Datenpunkte angezeigt, die bisher den History-Adapter aktiviert hatten.

          d1fbb8b9-4869-4284-82ff-30ab385deb28-image.jpeg

          1. Auf den Schraubenschlüssel klicken. "Warn"Meldung bestätigen. Nun werden alle Änderungen auf die vorher gefilterten DP vorgenommen.

          e5274813-617f-4015-88c0-f56f73909b76-image.jpeg

          1. History Adapter deaktivieren, InfluxDB Adapter aktivieren, alle gewünschten Einstellungen vornehmen und speichern.

          ad4ae639-d1be-4cae-a7fb-c673a20b4818-image.jpeg

          Fertig. Damit haben alle DP, die bisher in History geschrieben haben, die Einstellung, ab sofort die Daten nach InfluxDB zu schreiben.

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          1 Antwort Letzte Antwort
          0
          • H Online
            H Online
            Hotze
            schrieb zuletzt editiert von
            #5

            Oha! und dafür eier ich mit nem Script rum!
            Vielen Dank!

            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

            567

            Online

            33.0k

            Benutzer

            83.3k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2026
            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