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. [Frage] javascript-code zum Auslesen von Ertragswerten

NEWS

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

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

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

[Frage] javascript-code zum Auslesen von Ertragswerten

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascripttemplate
21 Beiträge 6 Kommentatoren 1.6k Aufrufe 4 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.
  • HomoranH Homoran

    @norbert999 Ist/Wird das jetzt eine [Anleitung] wie der Threadtitel suggeriert, oder ist das eine Frage und du brauchst Hilfe?

    N Offline
    N Offline
    norbert999
    schrieb am zuletzt editiert von
    #3

    @homoran Sorry, das wird keine Anleitung von mir, sondern ich brauche die Anleitung, wie ich das machen könnte.

    CodierknechtC T 2 Antworten Letzte Antwort
    0
    • N norbert999

      @homoran Sorry, das wird keine Anleitung von mir, sondern ich brauche die Anleitung, wie ich das machen könnte.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #4

      @norbert999 sagte in [Anleitung] javascript-code zum Auslesen von Ertragswerten:

      ich brauche die Anleitung

      Dann nimm das bitte aus dem Titel raus. Sonst denkt jeder, dass Du hier eine Anleitung zeigen möchtest.

      const day = new Date().getDate();
      
      const loggingTemplate = {};
      
      loggingTemplate[`fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.${day}`] = 'exportedWh';
      loggingTemplate[`fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.${day}`] = 'importedWh';
      loggingTemplate[`fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.${day}`] = 'generatedWh';
      
      console.log(loggingTemplate);
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      2
      • N norbert999

        @homoran Sorry, das wird keine Anleitung von mir, sondern ich brauche die Anleitung, wie ich das machen könnte.

        T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von ticaki
        #5

        @norbert999

        new Date().getDate()

        Damit bekommst du die 6

        const loggingTemplate = {}
        loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh',
        

        EDIT: die muß stimmen wenns 2 mal die gleiche gibt :D

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        N 1 Antwort Letzte Antwort
        0
        • T ticaki

          @norbert999

          new Date().getDate()

          Damit bekommst du die 6

          const loggingTemplate = {}
          loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh',
          

          EDIT: die muß stimmen wenns 2 mal die gleiche gibt :D

          N Offline
          N Offline
          norbert999
          schrieb am zuletzt editiert von
          #6

          @ticaki said in [Anleitung] javascript-code zum Auslesen von Ertragswerten:

                                                                                                                                      const loggingTemplate = {}                                                                                                                                                                            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh',                                            
          

          Vielen Dank für die rasche Antwort. Habe das so testweise umgesetzt:

          
          new Date().getDate();
          
          const loggingTemplate = {}
              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh';
              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()]: 'importedWh';
              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()]: 'generatedWh';
          
          

          Gibt aber leider einen Fehler:

          javascript.0	08:46:02.645	info	Start JavaScript script.js.smarthome_trost.history_influxdb2 (Javascript/js)
          javascript.0	08:46:02.645	error	script.js.smarthome_trost.history_influxdb2 compile failed: at script.js.smarthome_trost.history_influxdb2:26
          

          Die Zeile 26, auf die sich der Fehler bezieht, ist in meinem Codepost die Zeile 5

          T 1 Antwort Letzte Antwort
          0
          • N norbert999

            @ticaki said in [Anleitung] javascript-code zum Auslesen von Ertragswerten:

                                                                                                                                        const loggingTemplate = {}                                                                                                                                                                            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh',                                            
            

            Vielen Dank für die rasche Antwort. Habe das so testweise umgesetzt:

            
            new Date().getDate();
            
            const loggingTemplate = {}
                loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh';
                loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()]: 'importedWh';
                loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()]: 'generatedWh';
            
            

            Gibt aber leider einen Fehler:

            javascript.0	08:46:02.645	info	Start JavaScript script.js.smarthome_trost.history_influxdb2 (Javascript/js)
            javascript.0	08:46:02.645	error	script.js.smarthome_trost.history_influxdb2 compile failed: at script.js.smarthome_trost.history_influxdb2:26
            

            Die Zeile 26, auf die sich der Fehler bezieht, ist in meinem Codepost die Zeile 5

            T Nicht stören
            T Nicht stören
            ticaki
            schrieb am zuletzt editiert von
            #7

            @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

            const loggingTemplate = {} loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh'; loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()]: 'importedWh'; loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()]: 'generatedWh';

            Hab einen Fehler drin - @Codierknecht hats richtig :)

            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()] = 'exportedWh';
            

            direkt im Forum code zu schreiben sollte ich sein lassen :)

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            N 1 Antwort Letzte Antwort
            1
            • T ticaki

              @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

              const loggingTemplate = {} loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()]: 'exportedWh'; loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()]: 'importedWh'; loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()]: 'generatedWh';

              Hab einen Fehler drin - @Codierknecht hats richtig :)

              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()] = 'exportedWh';
              

              direkt im Forum code zu schreiben sollte ich sein lassen :)

              N Offline
              N Offline
              norbert999
              schrieb am zuletzt editiert von
              #8

              @ticaki
              Es funktioniert! Du hast mir so super geholfen, tausend Dank!
              Ich habe jetzt dadurch eine Methode, wie ich jetzt per javascript Datenpunkte aus iob auslesen kann und in die influxdb2 schreiben kann.
              Das script dazu habe ich von Matthias Kleine übernommen, aber das konnte eben nicht aggregierte Daten aus iob auslesen (wenn sich der Name des Datenpunkts z.B. jeden Tag geändert hat.)
              Ich möchte Dir nochmals danken! Ich würde auch gern "Codierknecht" danken, weiss aber nicht wie ich das über das Forum anstellen kann.

              N CodierknechtC 2 Antworten Letzte Antwort
              0
              • N norbert999

                @ticaki
                Es funktioniert! Du hast mir so super geholfen, tausend Dank!
                Ich habe jetzt dadurch eine Methode, wie ich jetzt per javascript Datenpunkte aus iob auslesen kann und in die influxdb2 schreiben kann.
                Das script dazu habe ich von Matthias Kleine übernommen, aber das konnte eben nicht aggregierte Daten aus iob auslesen (wenn sich der Name des Datenpunkts z.B. jeden Tag geändert hat.)
                Ich möchte Dir nochmals danken! Ich würde auch gern "Codierknecht" danken, weiss aber nicht wie ich das über das Forum anstellen kann.

                N Offline
                N Offline
                norbert999
                schrieb am zuletzt editiert von
                #9

                @norbert999 said in [Frage] javascript-code zum Auslesen von Ertragswerten:

                @ticaki
                Es funktioniert! Du hast mir so super geholfen, tausend Dank!
                Ich habe jetzt dadurch eine Methode, wie ich jetzt per javascript Datenpunkte aus iob auslesen kann und in die influxdb2 schreiben kann.
                Das script dazu habe ich von Matthias Kleine übernommen, aber das konnte eben nicht aggregierte Daten aus iob auslesen (wenn sich der Name des Datenpunkts z.B. jeden Tag geändert hat.)
                Ich möchte Dir nochmals danken! Ich würde auch gern "Codierknecht" danken, weiss aber nicht wie ich das über das Forum anstellen kann.

                1 Antwort Letzte Antwort
                0
                • N norbert999

                  @ticaki
                  Es funktioniert! Du hast mir so super geholfen, tausend Dank!
                  Ich habe jetzt dadurch eine Methode, wie ich jetzt per javascript Datenpunkte aus iob auslesen kann und in die influxdb2 schreiben kann.
                  Das script dazu habe ich von Matthias Kleine übernommen, aber das konnte eben nicht aggregierte Daten aus iob auslesen (wenn sich der Name des Datenpunkts z.B. jeden Tag geändert hat.)
                  Ich möchte Dir nochmals danken! Ich würde auch gern "Codierknecht" danken, weiss aber nicht wie ich das über das Forum anstellen kann.

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #10

                  @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                  weiss aber nicht wie ich das über das Forum anstellen kann

                  Wenn ein Beitrag hilfreich war, kannst Du diesen Beitrag unten rechts dahingehend markieren.

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  N 1 Antwort Letzte Antwort
                  1
                  • CodierknechtC Codierknecht

                    @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                    weiss aber nicht wie ich das über das Forum anstellen kann

                    Wenn ein Beitrag hilfreich war, kannst Du diesen Beitrag unten rechts dahingehend markieren.

                    N Offline
                    N Offline
                    norbert999
                    schrieb am zuletzt editiert von
                    #11

                    @codierknecht

                    Du hattest mir so toll geholfen mit dem script von Matthias Kleine um Ertragsdaten aus dem iob in die influxdb2 zu schreiben. Das Problem bei mir war, dass das im iob bereits aggregierte Daten für, den betreffenden Tag des Monats sind, d.h. der Name des Datenpunkts "ändert sich jeden Tag".

                    Das funktioniert soweit.

                    Allerdings jetzt ein neues "Problemchen": Wenn um 24h nachts sich der Tag des Monats ändert, dann schreibt das script trotzdem die letzten Werte des alten Tags weiter in die influxdb und nimmt nicht den Wert der aktualisierten Datenpunkte für den aktuellen Tag.

                    Das hier ist das script so, wie es jetzt ist:

                    // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                    // script von von Matthias Kleine
                    // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                    // v.0.3
                    //
                    const influxDbInstance = 'influxdb.0';
                    const token = '***mein token***';
                    const measurement = 'energy-stats';
                    
                    // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                    // entsprechenden Tag des Monats auslesen zu können. 
                    // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                    // iob-forum deutsch. Posts dazu siehe 
                    // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                    
                    const loggingTemplate = {}
                     //       loggingTemplate['0_userdata.0.Photovoltaik.BattLoadState'] = 'batteryWh';   
                            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()] = 'exportedWh';   
                            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()] = 'importedWh';
                            loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()] = 'generatedWh';
                    // Wallbox fehlt   
                    
                    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();
                    

                    Könntest Du mir bitte noch einmal helfen und Dir den code anschauen? Bin leider kein js Faschmann. Die Hoffnung von mir ist, dass man das "leicht" modifizieren kann.

                    Wäre toll, wenn Du eine Idee hättest.

                    CodierknechtC haus-automatisierungH 2 Antworten Letzte Antwort
                    0
                    • N norbert999

                      @codierknecht

                      Du hattest mir so toll geholfen mit dem script von Matthias Kleine um Ertragsdaten aus dem iob in die influxdb2 zu schreiben. Das Problem bei mir war, dass das im iob bereits aggregierte Daten für, den betreffenden Tag des Monats sind, d.h. der Name des Datenpunkts "ändert sich jeden Tag".

                      Das funktioniert soweit.

                      Allerdings jetzt ein neues "Problemchen": Wenn um 24h nachts sich der Tag des Monats ändert, dann schreibt das script trotzdem die letzten Werte des alten Tags weiter in die influxdb und nimmt nicht den Wert der aktualisierten Datenpunkte für den aktuellen Tag.

                      Das hier ist das script so, wie es jetzt ist:

                      // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                      // script von von Matthias Kleine
                      // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                      // v.0.3
                      //
                      const influxDbInstance = 'influxdb.0';
                      const token = '***mein token***';
                      const measurement = 'energy-stats';
                      
                      // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                      // entsprechenden Tag des Monats auslesen zu können. 
                      // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                      // iob-forum deutsch. Posts dazu siehe 
                      // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                      
                      const loggingTemplate = {}
                       //       loggingTemplate['0_userdata.0.Photovoltaik.BattLoadState'] = 'batteryWh';   
                              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()] = 'exportedWh';   
                              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()] = 'importedWh';
                              loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()] = 'generatedWh';
                      // Wallbox fehlt   
                      
                      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();
                      

                      Könntest Du mir bitte noch einmal helfen und Dir den code anschauen? Bin leider kein js Faschmann. Die Hoffnung von mir ist, dass man das "leicht" modifizieren kann.

                      Wäre toll, wenn Du eine Idee hättest.

                      CodierknechtC Offline
                      CodierknechtC Offline
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von Codierknecht
                      #12

                      @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                      Wenn um 24h nachts sich der Tag des Monats ändert, dann schreibt das script trotzdem die letzten Werte des alten Tags weiter in die influxdb und nimmt nicht den Wert der aktualisierten Datenpunkte für den aktuellen Tag.

                      Was auch eigentlich logisch ist.
                      Du besetzt das Objekt ja nur 1x beim Start des Script. Wenn Du also heute das Script startest, wird mit den Datenpunkten ...values.10 gearbeitet.
                      Heute Nacht wird aus der 10 eine 11. Davon kriegt Dein Objekt aber nix mit.

                      Das alleine wäre jetzt kein so großes Problem.
                      Aber Dein Trigger ist ja auch darauf registriert. Das macht das Ganze dann deutlich komplizierter.

                      Im einfachsten Fall richtest Du (in einem anderen Script) ein Schedule für 0 0 * * * ein und startest damit Dein Script neu. Nicht schön, aber selten :grin:

                      Vielleicht hat @haus-automatisierung ja noch eine bessere Idee.

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      1 Antwort Letzte Antwort
                      0
                      • N Offline
                        N Offline
                        norbert999
                        schrieb am zuletzt editiert von
                        #13

                        @codierknecht

                        Danke für Deine Erläuterung.

                        Wie mache ich das denn mit "einem anderen script" über den von Dir angesprochenen schedule?

                        CodierknechtC 1 Antwort Letzte Antwort
                        0
                        • N norbert999

                          @codierknecht

                          Danke für Deine Erläuterung.

                          Wie mache ich das denn mit "einem anderen script" über den von Dir angesprochenen schedule?

                          CodierknechtC Offline
                          CodierknechtC Offline
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #14

                          @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                          Wie mache ich das denn mit "einem anderen script" über den von Dir angesprochenen schedule?

                          Entweder Blockly

                          fbc90635-0d5d-4875-94cf-c9c0f8d83388-image.png
                          Oder JS

                          schedule("0 0 * * *", function() {
                            startScript('dein_zu_startendes_script');
                          });
                          

                          Ein bereits laufendes Script wird damit neu gestartet.

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          N 1 Antwort Letzte Antwort
                          1
                          • CodierknechtC Codierknecht

                            @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                            Wie mache ich das denn mit "einem anderen script" über den von Dir angesprochenen schedule?

                            Entweder Blockly

                            fbc90635-0d5d-4875-94cf-c9c0f8d83388-image.png
                            Oder JS

                            schedule("0 0 * * *", function() {
                              startScript('dein_zu_startendes_script');
                            });
                            

                            Ein bereits laufendes Script wird damit neu gestartet.

                            N Offline
                            N Offline
                            norbert999
                            schrieb am zuletzt editiert von
                            #15

                            @codierknecht Danke Dir. Werde ich von heute auf morgen ausprobieren. Melde mich wieder!

                            1 Antwort Letzte Antwort
                            0
                            • N norbert999

                              @codierknecht

                              Du hattest mir so toll geholfen mit dem script von Matthias Kleine um Ertragsdaten aus dem iob in die influxdb2 zu schreiben. Das Problem bei mir war, dass das im iob bereits aggregierte Daten für, den betreffenden Tag des Monats sind, d.h. der Name des Datenpunkts "ändert sich jeden Tag".

                              Das funktioniert soweit.

                              Allerdings jetzt ein neues "Problemchen": Wenn um 24h nachts sich der Tag des Monats ändert, dann schreibt das script trotzdem die letzten Werte des alten Tags weiter in die influxdb und nimmt nicht den Wert der aktualisierten Datenpunkte für den aktuellen Tag.

                              Das hier ist das script so, wie es jetzt ist:

                              // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                              // script von von Matthias Kleine
                              // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                              // v.0.3
                              //
                              const influxDbInstance = 'influxdb.0';
                              const token = '***mein token***';
                              const measurement = 'energy-stats';
                              
                              // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                              // entsprechenden Tag des Monats auslesen zu können. 
                              // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                              // iob-forum deutsch. Posts dazu siehe 
                              // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                              
                              const loggingTemplate = {}
                               //       loggingTemplate['0_userdata.0.Photovoltaik.BattLoadState'] = 'batteryWh';   
                                      loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.' + new Date().getDate()] = 'exportedWh';   
                                      loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.' + new Date().getDate()] = 'importedWh';
                                      loggingTemplate['fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.' + new Date().getDate()] = 'generatedWh';
                              // Wallbox fehlt   
                              
                              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();
                              

                              Könntest Du mir bitte noch einmal helfen und Dir den code anschauen? Bin leider kein js Faschmann. Die Hoffnung von mir ist, dass man das "leicht" modifizieren kann.

                              Wäre toll, wenn Du eine Idee hättest.

                              haus-automatisierungH Offline
                              haus-automatisierungH Offline
                              haus-automatisierung
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #16

                              @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                              d.h. der Name des Datenpunkts "ändert sich jeden Tag".

                              Dafür ist das Script ja gar nicht ausgelegt und müsste komplett umgeschrieben werden. Also beim Tageswechsel den Trigger löschen und neu anlegen.

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              AsgothianA 1 Antwort Letzte Antwort
                              1
                              • haus-automatisierungH haus-automatisierung

                                @norbert999 sagte in [Frage] javascript-code zum Auslesen von Ertragswerten:

                                d.h. der Name des Datenpunkts "ändert sich jeden Tag".

                                Dafür ist das Script ja gar nicht ausgelegt und müsste komplett umgeschrieben werden. Also beim Tageswechsel den Trigger löschen und neu anlegen.

                                AsgothianA Offline
                                AsgothianA Offline
                                Asgothian
                                Developer
                                schrieb am zuletzt editiert von Asgothian
                                #17

                                Mal eine dumme Frage:
                                Gibt es alle datenpunkte schon, oder werden die am entsprechenden Tag neu erstellt ? Wenn es die schon gibt würde ich nur 2 Dinge umschreiben:

                                • selektor für die triggerung
                                • Erkennung des Ziels nicht mit der vollen ID sondern aus einem Teil davon. Da dieser im Festen Teil der ID steht kann das im jeweiligen selektor trigger fest vergeben werden.

                                Dann kann man sich die ganze trigger umschreiberei sparen, und das Skript kann einfach durchlaufen - die datenpunkte die nicht zu “heute” gehören sollten sich ja auch nicht mehr ändern

                                A.
                                P.s. ein Beispiel kann ich liefern, aber erst in einer Stunde - bin noch mobil :)

                                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                N 1 Antwort Letzte Antwort
                                1
                                • AsgothianA Asgothian

                                  Mal eine dumme Frage:
                                  Gibt es alle datenpunkte schon, oder werden die am entsprechenden Tag neu erstellt ? Wenn es die schon gibt würde ich nur 2 Dinge umschreiben:

                                  • selektor für die triggerung
                                  • Erkennung des Ziels nicht mit der vollen ID sondern aus einem Teil davon. Da dieser im Festen Teil der ID steht kann das im jeweiligen selektor trigger fest vergeben werden.

                                  Dann kann man sich die ganze trigger umschreiberei sparen, und das Skript kann einfach durchlaufen - die datenpunkte die nicht zu “heute” gehören sollten sich ja auch nicht mehr ändern

                                  A.
                                  P.s. ein Beispiel kann ich liefern, aber erst in einer Stunde - bin noch mobil :)

                                  N Offline
                                  N Offline
                                  norbert999
                                  schrieb am zuletzt editiert von
                                  #18

                                  @asgothian
                                  Super! Danke für Deine Antwort.

                                  Die Datenpunkte für die Tagesproduktion der Energie gibt es schon alle. Nur werden die Datenpunkte um 0:00h "neu befüllt" (z.B. mit dem Wert 0 für die aktuelle Tagesproduktion der Fotovoltaik am neuen, aktuellen Tag. Das macht der fronius-solarwebadapter automatisch), da ja ein neuer Tag beginnt und die aggregierten Energiewerte des Vortages nicht mehr relevant sind.

                                  Wäre super, wenn Du mir helfen würdest!

                                  AsgothianA 1 Antwort Letzte Antwort
                                  0
                                  • N norbert999

                                    @asgothian
                                    Super! Danke für Deine Antwort.

                                    Die Datenpunkte für die Tagesproduktion der Energie gibt es schon alle. Nur werden die Datenpunkte um 0:00h "neu befüllt" (z.B. mit dem Wert 0 für die aktuelle Tagesproduktion der Fotovoltaik am neuen, aktuellen Tag. Das macht der fronius-solarwebadapter automatisch), da ja ein neuer Tag beginnt und die aggregierten Energiewerte des Vortages nicht mehr relevant sind.

                                    Wäre super, wenn Du mir helfen würdest!

                                    AsgothianA Offline
                                    AsgothianA Offline
                                    Asgothian
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #19

                                    @norbert999

                                    So sollte es gehen.
                                    Schlüssel ist das es 3 Trigger auf Selektoren gibt, die jeweils alle gleichartigen Datenpunkte erfassen, so das dann das Abspeichern entsprechend laufen kann.
                                    Die Abfrage das der Wert nicht 0 sein soll ist wichtig, damit ein 0-Setzen des Wertes nicht in die Datenbank geschrieben wird, wenn am Anfang des Tages alle DP auf 0 gesetzt werden.

                                    testen konnte ich es nur teilweise - ich hab weder einen Fronius noch eine Influxdb zum rein schreiben.

                                    Es sollte trotzdem gehen, da ich am Ende nur den einen Trigger durch 3 Trigger auf die 3 Selektoren ersetzt hab, deswegen muss ich den 'key' manuell übergeben, und das eigentliche Schreiben ist ausgelagert in eine externe funtktion.

                                    A.

                                    
                                    // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                                    // script von von Matthias Kleine
                                    // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                                    // v.0.3
                                    //
                                    const influxDbInstance = 'influxdb.0';
                                    const token = '***mein token***';
                                    const measurement = 'energy-stats';
                                     
                                    // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                                    // entsprechenden Tag des Monats auslesen zu können. 
                                    // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                                    // iob-forum deutsch. Posts dazu siehe 
                                    // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                                     
                                    const loggingObj = {};
                                    
                                    async function Store(key, value) {
                                        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));
                                        }
                                    }
                                    
                                    
                                    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: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.*'), change: 'ne' }, async (obj) => {
                                            if (obj.state.val != 0) Store('exportedWh', obj.state.val)
                                        });
                                        on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.*'), change: 'ne' }, async (obj) => {
                                            if (obj.state.val != 0) Store('importedWh', obj.state.val)
                                        });
                                        on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.*'), change: 'ne' }, async (obj) => {
                                            if (obj.state.val != 0) Store('generatedWh', obj.state.val)
                                        });
                                    }
                                    start();
                                    
                                    
                                    

                                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                    N 2 Antworten Letzte Antwort
                                    1
                                    • AsgothianA Asgothian

                                      @norbert999

                                      So sollte es gehen.
                                      Schlüssel ist das es 3 Trigger auf Selektoren gibt, die jeweils alle gleichartigen Datenpunkte erfassen, so das dann das Abspeichern entsprechend laufen kann.
                                      Die Abfrage das der Wert nicht 0 sein soll ist wichtig, damit ein 0-Setzen des Wertes nicht in die Datenbank geschrieben wird, wenn am Anfang des Tages alle DP auf 0 gesetzt werden.

                                      testen konnte ich es nur teilweise - ich hab weder einen Fronius noch eine Influxdb zum rein schreiben.

                                      Es sollte trotzdem gehen, da ich am Ende nur den einen Trigger durch 3 Trigger auf die 3 Selektoren ersetzt hab, deswegen muss ich den 'key' manuell übergeben, und das eigentliche Schreiben ist ausgelagert in eine externe funtktion.

                                      A.

                                      
                                      // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                                      // script von von Matthias Kleine
                                      // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                                      // v.0.3
                                      //
                                      const influxDbInstance = 'influxdb.0';
                                      const token = '***mein token***';
                                      const measurement = 'energy-stats';
                                       
                                      // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                                      // entsprechenden Tag des Monats auslesen zu können. 
                                      // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                                      // iob-forum deutsch. Posts dazu siehe 
                                      // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                                       
                                      const loggingObj = {};
                                      
                                      async function Store(key, value) {
                                          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));
                                          }
                                      }
                                      
                                      
                                      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: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.*'), change: 'ne' }, async (obj) => {
                                              if (obj.state.val != 0) Store('exportedWh', obj.state.val)
                                          });
                                          on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.*'), change: 'ne' }, async (obj) => {
                                              if (obj.state.val != 0) Store('importedWh', obj.state.val)
                                          });
                                          on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.*'), change: 'ne' }, async (obj) => {
                                              if (obj.state.val != 0) Store('generatedWh', obj.state.val)
                                          });
                                      }
                                      start();
                                      
                                      
                                      
                                      N Offline
                                      N Offline
                                      norbert999
                                      schrieb am zuletzt editiert von
                                      #20

                                      @asgothian
                                      Du bist super. Danke für Dein script. Kann ich heute Nacht nicht mehr umsetzen, mache ich morgen im Laufe des Tages. Danach werde ich es erst mal über Nacht laufen lassen um zu schauen, was passiert.
                                      Ich werde mich wieder melden wenn ich darf.
                                      Nochmals tausend Dank bis hierher.

                                      1 Antwort Letzte Antwort
                                      0
                                      • AsgothianA Asgothian

                                        @norbert999

                                        So sollte es gehen.
                                        Schlüssel ist das es 3 Trigger auf Selektoren gibt, die jeweils alle gleichartigen Datenpunkte erfassen, so das dann das Abspeichern entsprechend laufen kann.
                                        Die Abfrage das der Wert nicht 0 sein soll ist wichtig, damit ein 0-Setzen des Wertes nicht in die Datenbank geschrieben wird, wenn am Anfang des Tages alle DP auf 0 gesetzt werden.

                                        testen konnte ich es nur teilweise - ich hab weder einen Fronius noch eine Influxdb zum rein schreiben.

                                        Es sollte trotzdem gehen, da ich am Ende nur den einen Trigger durch 3 Trigger auf die 3 Selektoren ersetzt hab, deswegen muss ich den 'key' manuell übergeben, und das eigentliche Schreiben ist ausgelagert in eine externe funtktion.

                                        A.

                                        
                                        // Kopiert Daten für eine Zeitreihendarstellung in die influxdb2
                                        // script von von Matthias Kleine
                                        // https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.html
                                        // v.0.3
                                        //
                                        const influxDbInstance = 'influxdb.0';
                                        const token = '***mein token***';
                                        const measurement = 'energy-stats';
                                         
                                        // Modifikation des scripts von Matthias Kleine um aus den aggregierten fronius-Daten für den Tag den 
                                        // entsprechenden Tag des Monats auslesen zu können. 
                                        // Diese Umsetzung kommt von "ticaki" und "codierknecht" aus dem 
                                        // iob-forum deutsch. Posts dazu siehe 
                                        // https://forum.iobroker.net/topic/80183/frage-javascript-code-zum-auslesen-von-ertragswerten/8?_=1741455458605
                                         
                                        const loggingObj = {};
                                        
                                        async function Store(key, value) {
                                            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));
                                            }
                                        }
                                        
                                        
                                        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: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyFeedIn.values.*'), change: 'ne' }, async (obj) => {
                                                if (obj.state.val != 0) Store('exportedWh', obj.state.val)
                                            });
                                            on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyPurchased.values.*'), change: 'ne' }, async (obj) => {
                                                if (obj.state.val != 0) Store('importedWh', obj.state.val)
                                            });
                                            on({ id: $('channel[state.id=fronius-solarweb.0.96605a5f-da06-4373-b8d5-b985faa71359.day.EnergyProductionTotal.values.*'), change: 'ne' }, async (obj) => {
                                                if (obj.state.val != 0) Store('generatedWh', obj.state.val)
                                            });
                                        }
                                        start();
                                        
                                        
                                        
                                        N Offline
                                        N Offline
                                        norbert999
                                        schrieb am zuletzt editiert von
                                        #21

                                        @asgothian
                                        Habe es doch gerade ausprobiert. Gibt aber eine Fehlermeldung:

                                        javascript.0	19:32:52.547	info	Stopping script script.js.smarthome_trost.neu_history_influxdb
                                        javascript.0	19:32:52.592	info	Start JavaScript script.js.smarthome_trost.neu_history_influxdb (Javascript/js)
                                        javascript.0	19:32:52.595	info	script.js.smarthome_trost.neu_history_influxdb: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                        javascript.0	19:32:52.597	info	script.js.smarthome_trost.neu_history_influxdb: Starting "energy-stats" logging to http://localhost:8086 into bucket "iobrokerdata" by org Trost
                                        javascript.0	19:32:52.598	error	script.js.smarthome_trost.neu_history_influxdb: ReferenceError: loggingTemplate is not defined
                                        javascript.0	19:32:52.598	error	at start (script.js.smarthome_trost.neu_history_influxdb:53:45)
                                        

                                        Kann man das reparieren?

                                        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

                                        866

                                        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