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
    659

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

  • 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
2 Beiträge 2 Kommentatoren 32 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 Offline
    H Offline
    Hotze
    schrieb 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 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

      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

      439

      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