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. Fehlermeldung beim Schreiben von Daten in influxdb2

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

Fehlermeldung beim Schreiben von Daten in influxdb2

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 2 Kommentatoren 275 Aufrufe 3 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 Offline
    S Offline
    Schorsch
    schrieb am zuletzt editiert von
    #1

    iobroker Version 7.0.6
    installiert auf einem raspberry Pi 4 Model B
    Admin Adapter 7.6.17
    javascript Adapter 8.9.2
    influxdb Adapter 4.0.2
    auf dem RasPi läuft neben iobroker auch

    • mqtt-broker mosquito
    • influxdb2.x
    • grafana

    Hallo,
    ich habe ein Script von haus:automation (Beitrag InfluxDB 2.x - Dashboard für eine PV-Anlage) übernommen und, hoffentlich richtig) an meine Verhältnisse angepasst. Das script mit der Bezeichnung "Sct-Elektro-NetzPower" soll Daten in ein bucket iobrokershort schreiben. Es sieht bei mir nach meinen Anpassungen wie folgt aus:

    // Shelly Pro 3EM63 Daten einzelner Phase bei Veränderungen in die influxdb schreiben
    // bucket, token und Organisation werden aus den Einstellungen der Instanz in iobroker ausgelesen
    // Durch dieses Script haben die Daten einen identischen Zeitstempel 
    // v0.3;
    
    const influxDbInstance = 'influxdb.0';
    const token = 'Kopie des Wertes aus den Instanzeinstellungen zur influxdb.0';
    const measurement = 'elektro-power';
    
    const loggingTemplate = {
        '0_userdata.0.Elektro.DpShellyStromZaehlerL1Power': 'NetzL1Power',
        '0_userdata.0.Elektro.DpShellyStromZaehlerL2Power': 'NetzL2Power',
        '0_userdata.0.Elektro.DpShellyStromZaehlerL3Power': 'NetzL3Power',
    };
    
    const loggingObj = {};
    
    async function start() {
        const influxDbInstanceConfig = await getObjectAsync(`system.adapter.${influxDbInstance}`);
        const protocol = influxDbInstanceConfig.native.protocol;
        const host = influxDbInstanceConfig.native.host;
        const port = influxDbInstanceConfig.native.port;
        const org = influxDbInstanceConfig.native.organization;
        const bucket = influxDbInstanceConfig.native.dbname;
    
        console.log(`Starting "${measurement}" logging to ${protocol}://${host}:${port} into bucket "${bucket}" by org ${org}`);
        
        // Init loggingObj with current values
        for (let [objId, key] of Object.entries(loggingTemplate)) {
            const state = await getStateAsync(objId);
            if (state && !isNaN(state.val)) {
                loggingObj[key] = state.val;
            } else {
                loggingObj[key] = 0;
            }
        }
    
        on({ id: Object.keys(loggingTemplate), change: 'ne' }, async (obj) => {
            // Update value in loggingObj
            const key = loggingTemplate[obj.id];
            loggingObj[key] = obj.state.val;
    
            // Save Data
            const data = `${measurement} ${Object.keys(loggingObj)
                .filter(key => !isNaN(loggingObj[key]))
                .map((key) => `${key}=${loggingObj[key]}`)
                .join(',')}`;
    
            if (data) {
                // console.log(`Saving "${data}" to InfluxDB @ ${protocol}://${host}:${port}/`);
    
                httpPostAsync(`${protocol}://${host}:${port}/api/v2/write?bucket=${bucket}&org=${org}`, data, {
                    headers: {
                        'Content-Type': 'text/plain',
                        'Authorization': `Token ${token}`
                    }
                }).catch(err => console.error(err));
            }
        });
    }
    start();
    

    Unter Protokolle erhalte ich im iobroker folgende Fehlermeldungen. Der Zeitstempel der einzelnen Fehlermeldungen unterscheidet sich nur in den dreistelligen Zahlen, die ich hier beispielhaft dem Text vorangestellt habe.

    • :154 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

    • :158 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38 at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7)

    • :161 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

    • :162 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38

    • :169 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

    • :170 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38 at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7)

    Die Daten kommen in influxdb an.

    Wie kann ich die Fehlermeldung beheben?
    Ich hatte vermutet, dass irgendwas an der Kommunikation zwischen iobroker und influxdb schief läuft. Trotz ausgiebiger Recherche ist es mir nicht gelungen, von anderer Stelle etwas in die influxdb zu schreiben. Was muss ich machen, um
    händisch oder über blockly einen Testdatensatz in die influxdb zu schreiben?

    Vielen Dank für eure Hilfe.
    Schorsch

    HomoranH 1 Antwort Letzte Antwort
    0
    • S Schorsch

      iobroker Version 7.0.6
      installiert auf einem raspberry Pi 4 Model B
      Admin Adapter 7.6.17
      javascript Adapter 8.9.2
      influxdb Adapter 4.0.2
      auf dem RasPi läuft neben iobroker auch

      • mqtt-broker mosquito
      • influxdb2.x
      • grafana

      Hallo,
      ich habe ein Script von haus:automation (Beitrag InfluxDB 2.x - Dashboard für eine PV-Anlage) übernommen und, hoffentlich richtig) an meine Verhältnisse angepasst. Das script mit der Bezeichnung "Sct-Elektro-NetzPower" soll Daten in ein bucket iobrokershort schreiben. Es sieht bei mir nach meinen Anpassungen wie folgt aus:

      // Shelly Pro 3EM63 Daten einzelner Phase bei Veränderungen in die influxdb schreiben
      // bucket, token und Organisation werden aus den Einstellungen der Instanz in iobroker ausgelesen
      // Durch dieses Script haben die Daten einen identischen Zeitstempel 
      // v0.3;
      
      const influxDbInstance = 'influxdb.0';
      const token = 'Kopie des Wertes aus den Instanzeinstellungen zur influxdb.0';
      const measurement = 'elektro-power';
      
      const loggingTemplate = {
          '0_userdata.0.Elektro.DpShellyStromZaehlerL1Power': 'NetzL1Power',
          '0_userdata.0.Elektro.DpShellyStromZaehlerL2Power': 'NetzL2Power',
          '0_userdata.0.Elektro.DpShellyStromZaehlerL3Power': 'NetzL3Power',
      };
      
      const loggingObj = {};
      
      async function start() {
          const influxDbInstanceConfig = await getObjectAsync(`system.adapter.${influxDbInstance}`);
          const protocol = influxDbInstanceConfig.native.protocol;
          const host = influxDbInstanceConfig.native.host;
          const port = influxDbInstanceConfig.native.port;
          const org = influxDbInstanceConfig.native.organization;
          const bucket = influxDbInstanceConfig.native.dbname;
      
          console.log(`Starting "${measurement}" logging to ${protocol}://${host}:${port} into bucket "${bucket}" by org ${org}`);
          
          // Init loggingObj with current values
          for (let [objId, key] of Object.entries(loggingTemplate)) {
              const state = await getStateAsync(objId);
              if (state && !isNaN(state.val)) {
                  loggingObj[key] = state.val;
              } else {
                  loggingObj[key] = 0;
              }
          }
      
          on({ id: Object.keys(loggingTemplate), change: 'ne' }, async (obj) => {
              // Update value in loggingObj
              const key = loggingTemplate[obj.id];
              loggingObj[key] = obj.state.val;
      
              // Save Data
              const data = `${measurement} ${Object.keys(loggingObj)
                  .filter(key => !isNaN(loggingObj[key]))
                  .map((key) => `${key}=${loggingObj[key]}`)
                  .join(',')}`;
      
              if (data) {
                  // console.log(`Saving "${data}" to InfluxDB @ ${protocol}://${host}:${port}/`);
      
                  httpPostAsync(`${protocol}://${host}:${port}/api/v2/write?bucket=${bucket}&org=${org}`, data, {
                      headers: {
                          'Content-Type': 'text/plain',
                          'Authorization': `Token ${token}`
                      }
                  }).catch(err => console.error(err));
              }
          });
      }
      start();
      

      Unter Protokolle erhalte ich im iobroker folgende Fehlermeldungen. Der Zeitstempel der einzelnen Fehlermeldungen unterscheidet sich nur in den dreistelligen Zahlen, die ich hier beispielhaft dem Text vorangestellt habe.

      • :154 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

      • :158 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38 at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7)

      • :161 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

      • :162 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38

      • :169 script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)

      • :170 script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38 at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7)

      Die Daten kommen in influxdb an.

      Wie kann ich die Fehlermeldung beheben?
      Ich hatte vermutet, dass irgendwas an der Kommunikation zwischen iobroker und influxdb schief läuft. Trotz ausgiebiger Recherche ist es mir nicht gelungen, von anderer Stelle etwas in die influxdb zu schreiben. Was muss ich machen, um
      händisch oder über blockly einen Testdatensatz in die influxdb zu schreiben?

      Vielen Dank für eure Hilfe.
      Schorsch

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @schorsch sagte in Fehlermeldung beim Schreiben von Daten in influxdb2:

      folgende Fehlermeldungen.

      von welcher Instanz?

      @schorsch sagte in Fehlermeldung beim Schreiben von Daten in influxdb2:

      die ich hier beispielhaft dem Text vorangestellt habe.

      warum nur due Millisekunden und nicht das gesamte log incl. meldender Instanz in code-tags?

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      S 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @schorsch sagte in Fehlermeldung beim Schreiben von Daten in influxdb2:

        folgende Fehlermeldungen.

        von welcher Instanz?

        @schorsch sagte in Fehlermeldung beim Schreiben von Daten in influxdb2:

        die ich hier beispielhaft dem Text vorangestellt habe.

        warum nur due Millisekunden und nicht das gesamte log incl. meldender Instanz in code-tags?

        S Offline
        S Offline
        Schorsch
        schrieb am zuletzt editiert von
        #3

        @homoran Sorry, warum einfach, wenn es auch kompliziert geht.:blush:
        Anbei die letzte Fehlermeldung zu diesem Script. Es ist die Quelle javascript.0
        Ich weiß nicht, ob es relevant ist. Insgesamt habe ich vier dieser Scripte laufen, bei denen Daten (natürlich unterschiedliche) in die influxdb geschrieben werden. Die Fehlermeldungen sind, bis auf die Bezeichnung der Datenpunkte, gleich. Daher habe ich nur von diesem script die Meldung hier abgebildet.

        2025-07-24 13:22:14.142 - error: javascript.0 (554923) script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)
        2025-07-24 13:22:14.144 - error: javascript.0 (554923) script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded
        at Object. (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43)
        at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38
        at runNextTicks (node:internal/process/task_queues:60:5)
        at listOnTimeout (node:internal/timers:545:9)
        at processTimers (node:internal/timers:519:7)
        
        HomoranH 1 Antwort Letzte Antwort
        0
        • S Schorsch

          @homoran Sorry, warum einfach, wenn es auch kompliziert geht.:blush:
          Anbei die letzte Fehlermeldung zu diesem Script. Es ist die Quelle javascript.0
          Ich weiß nicht, ob es relevant ist. Insgesamt habe ich vier dieser Scripte laufen, bei denen Daten (natürlich unterschiedliche) in die influxdb geschrieben werden. Die Fehlermeldungen sind, bis auf die Bezeichnung der Datenpunkte, gleich. Daher habe ich nur von diesem script die Meldung hier abgebildet.

          2025-07-24 13:22:14.142 - error: javascript.0 (554923) script.js.Elektro.Sct-Elektro-NetzPower: httpPost(url=http://172.16.0.6:8086/api/v2/write?bucket=iobrokershort&org=schwedsmart, error=timeout of 2000ms exceeded)
          2025-07-24 13:22:14.144 - error: javascript.0 (554923) script.js.Elektro.Sct-Elektro-NetzPower: Error: timeout of 2000ms exceeded
          at Object. (/opt/iobroker/node_modules/iobroker.javascript/lib/tools.js:87:43)
          at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1325:38
          at runNextTicks (node:internal/process/task_queues:60:5)
          at listOnTimeout (node:internal/timers:545:9)
          at processTimers (node:internal/timers:519:7)
          
          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von Homoran
          #4

          @schorsch das sieht so aus, als ob iobroker/javascript die Datenbank nicht erreicht.
          oder möglicherweise der Empfang nicht bestätigt wird

          schreibst du direkt in die DB?
          warum nicht in einen DP, der vom Adapter geloggt wird?

          möglicherweise müsstest du auch nur den Tieout im http post erhöhen

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          S 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @schorsch das sieht so aus, als ob iobroker/javascript die Datenbank nicht erreicht.
            oder möglicherweise der Empfang nicht bestätigt wird

            schreibst du direkt in die DB?
            warum nicht in einen DP, der vom Adapter geloggt wird?

            möglicherweise müsstest du auch nur den Tieout im http post erhöhen

            S Offline
            S Offline
            Schorsch
            schrieb am zuletzt editiert von
            #5

            @homoran said in Fehlermeldung beim Schreiben von Daten in influxdb2:

            schreibst du direkt in die DB?
            warum nicht in einen DP, der vom Adapter geloggt wird?

            Ich habe das Programm grundsätzlich von @haus-automatisierung übernommen und mit den Bezeichnungen für meine Datenpunkte angepasst (hoffentlich richtig). Wenn ich es richtig verstanden habe, ist der Zweck, dass die Daten dann einen identischen Zeitstempel haben.

            Ich schau mal, wie ich den Tieout erhöhen kann.
            Ich würde gerne mal testen, was bei einem einzelnen Schreibbefehl passiert. Wie müsste das Script dafür in Blockly aussehen? Erhalte ich dann eine Antwort/Bestätigung von influxdb?

            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

            844

            Online

            32.4k

            Benutzer

            81.5k

            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