Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Aktuelle Werte aus influxdb lesen funktioniert nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Aktuelle Werte aus influxdb lesen funktioniert nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • Elmar Mersch
      Elmar Mersch last edited by

      Hallo Community,

      ich habe mal eine Frage zum nachfolgenden Script.
      Damit wird von einem Hoymiles Wechselrichter der Tageswert ermittelt (da die OpenDTU Abends ohne Sonne den Tagesertrag auf 0 Watt stellt).
      Es wird also mit einem anderen Script regelmäßig in die influxdb geschrieben und untenstehendes Script liest dann für den laufenden Tag die Werte und speichert die in einem Datenpunkt für die VIS.
      Das läuft den ganzen Tag perfekt.
      Nur am Folgetag werden die Daten des Vortages gelesen (anstatt vom aktuellen Tag) und in der Viso dargestellt. Ich habe also früh morgens bei Sonnenaufgang den Ertrag des Vortages und darauf wird dann summiert.
      Stoppe / Starte ich das Script passt es sofort und er holt sich die Werte des aktuellen Tages.
      Der Trigger ist übrigens, wenn die openDTU den Gesamtertrag aktualisiert.

      Ich habe mal bei der Instanz für javascript.0 einen nächtlichen Neustart eingestellt (um 0.02 Uhr), dann passt es auch - aber dafür verhalten sich dann andere Scripte merkwürdig (z.B. funktioniert der Nachlauf der Rolläden nicht sofort). Also auch keine Lösung.

      Hier mal das Ergebnis aus der influxdb, Measurement = "mqtt.0.1164a00982dd.0.yieldday".
      Von gestern Abend bis zur Abschaltung (0) und weiter heute morgen.
      Also alles da wie es soll, wie ich finde.

      1722968266507000000 true system.adapter.mqtt.0 0 8430
      1722968271505000000 true system.adapter.mqtt.0 0 8431
      1722968816513000000 true system.adapter.mqtt.0 0 8440
      1722968821509000000 true system.adapter.mqtt.0 0 8441
      1722969636516000000 true system.adapter.mqtt.0 0 8450
      1722969641518000000 true system.adapter.mqtt.0 0 8451
      1722972361587000000 true system.adapter.mqtt.0 0 8456
      1722972397824000000 true system.adapter.mqtt.0 0 0
      1723004701279000000 true system.adapter.mqtt.0 0 9
      1723004706308000000 true system.adapter.mqtt.0 0 10
      1723005571282000000 true system.adapter.mqtt.0 0 19
      1723005576283000000 true system.adapter.mqtt.0 0 20
      1723006056281000000 true system.adapter.mqtt.0 0 28
      1723006061337000000 true system.adapter.mqtt.0 0 30

      var result;
      var tagesertragmin = 0;
      var tagesertragmax = 0;
      
      //schedule("* * * * *", async () => {
      on({ id: 'mqtt.0.1164a00982dd.0.yieldtotal' /* BKW01/1164a00982dd/0/yieldtotal */, change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
      
        getHistory('influxdb.0', {
          id: 'mqtt.0.1164a00982dd.0.yieldday',
          start: /* start of day */ (() => { const d = new Date(); d.setHours(2, 5, 0, 0); return d.getTime(); })(),
          end: /* end of day */ (() => { const d = new Date(); d.setHours(23, 59, 00, 0); return d.getTime(); })(),
          aggregate: 'max',
          removeBorderValues: true
        },
         async (err, result) => {
      
            
                  for (var i = 0; i < result.length; i++) {
                   let tagesertragmax = parseFloat(result[i].val);            
                  
                    if (tagesertragmax > tagesertragmin) {   
                      tagesertragmin = tagesertragmax;
                      tagesertragwert = tagesertragmax;
                      //console.log(tagesertragmax);                    
                    }                                                                   
                  }
                    if (tagesertragwert > 0) {
                      setState("0_userdata.0.BKW01.BKW01_Ertrag_aktueller_Tag",tagesertragwert);
                      console.log(tagesertragwert); 
                    }
          
        });
      });
      
      

      Hat dazu jemand eine Idee?
      Danke für eure Unterstützung,
      Elmar

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      910
      Online

      31.9k
      Users

      80.1k
      Topics

      1.3m
      Posts

      1
      1
      96
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo