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. Warten auf das Ergebnis der Funktion aus influxdb

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.0k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Warten auf das Ergebnis der Funktion aus influxdb

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 245 Aufrufe 2 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.
  • C Offline
    C Offline
    cedric
    schrieb am zuletzt editiert von
    #1

    Hi,
    ich bringe von meinem Stromzähler den aktuellen Gesamtverbrauch (total_in) und den aktuellen Verbrauch (power_cur) in iobroker.

    Ich möchte jetzt eine Auswertung bauen und nehme dafür JS.

    Er soll in die Datenbank gehen und sich den aktuellen Verbrauch der letzten 2 Tage holen.

    Das klappt auch super, da habe ich jetzt ein paar Tausend Datensätze.
    Sehen so aus:

    {"result":[{"ack":true,"from":"system.adapter.sonoff.0","q":0,"val":225,"ts":1678795830890},{"ack":true,"from":"system.adapter.sonoff.0","q":0,"val":59,"ts":1678795860899}],"step":0,"error":null}
    

    Jetzt möchte ich pro Datensatz noch den jeweiligen Gesamtverbrauchstand zum Zeitpunkt des Timestamps ermitteln und hinzufügen dem Ergebnis hinzufügen.
    Das Ergebnis von oben soll dann so ausehen:

    {"ack":true,"from":"system.adapter.sonoff.0","q":0,"val":59,"ts":1678795860899, "total":23432.3}],"step":0,"error":null}
    

    Das Problem ist, dass ich die Funktion getHistoryWatt aufrufe und erst weitermachen möchte, bis ich das Ergebnis zurückhabe. Wie kann ich das konkret machen? Ich habe schon versuch irgendwas mit promises, await, async zu machen, alles gescheitert... kann mir jemand helfen? :-)

    Mein Code:

    // returns device id of state, device or channel-id
    function getDeviceId(id) {
        return id.match(/(.+[a-zA-Z0-9]{24})/g);
    }
    
    
    function getHistoryWatt(index, start) {
                                sendTo('influxdb.0', 'getHistory', {
                                                id: 'sonoff.0.heimfelder7.SENSOR.MT681.Total_in',
                                                options: {
                                                    start: start, 
                                                    count: 1,
                                                    aggregate: 'none' // or 'none' to get raw values
                                                },
                                            }, function (watt_total_result) {
                                                
                                                if( watt_total_result.result.length > 0) {
                                                    var watt_total = watt_total_result.result[0].val;
    
                                                    return watt_total;
                                                }
                                });   
    }
    
    
    
    
        sendTo('influxdb.0', 'getHistory', {
                    id: 'sonoff.0.heimfelder7.SENSOR.MT681.Power_cur',
                    options: {
                        start:     new Date(new Date().setDate(new Date().getDate() - 2)).getTime(), // 2 tage zuvor127
                        end:       Date.now(),
                        count: 2,
                        aggregate: 'none' // or 'none' to get raw values
                    }
                }, function (result) {
    
    
                    if( result.result.length > 0) {
    
                        for(var i=0; i < result.result.length; i++) {
    
                            var watt_total = getHistoryWatt(i, result.result[i].ts);
    
                            console.log(  i + " " + watt_total);
                            console.log(result.result[i]);
                                
                        } // for
    
                    } // result > 0
                    
        }); // history call
    
    1 Antwort Letzte Antwort
    0
    • arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von arteck
      #2

      @cedric

      async function getHistoryWatt(index, start) {
      

      und bei aufruf

      await getHistoryWatt(i, result.result[i].ts);
      

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      C 1 Antwort Letzte Antwort
      0
      • arteckA arteck

        @cedric

        async function getHistoryWatt(index, start) {
        

        und bei aufruf

        await getHistoryWatt(i, result.result[i].ts);
        
        C Offline
        C Offline
        cedric
        schrieb am zuletzt editiert von
        #3

        @arteck
        Vielen Dank für deine Antwort.
        Das hatte ich bereits probiert und bekomme immer beim await diese Fehlermeldung:

        'await' expressions are only allowed within async functions and at the top levels of modules.(1308)
        index0.js(62, 16): Did you mean to mark this function as 'async'?
        

        Hatte das dann versucht einzupacken in:

        async function main() {
        }
        

        Hat allerdings alles nichts gebracht... irgendeine Fehlermeldung kommt immer...

        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

        330

        Online

        32.6k

        Benutzer

        82.3k

        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