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. [gelöst]: Wie kann man Tibber Durchschnittspreise errechnen?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst]: Wie kann man Tibber Durchschnittspreise errechnen?

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

    In den Tibberlink-Objekten gibt es ja für jede Stunde eine Preisangabe:
    Bildschirmfoto 2024-02-11 um 14.39.30.jpg
    Wenn man nun die billigsten x Stunden nutzen will, dann wäre der Durchschnittspreis für diese x Stunden interessant (X ist dann eine Zahl von 1-5).
    Die Startzeit für diese billigen x Stunden ist bekannt und kann jeden Tag ausgelesen werden.

    Wie geht man das in Javascript an, damit man klug immer die richtigen Objekte ausliest und daraus den Durchschnittspreis ausrechnet?

    Danke

    P 1 Antwort Letzte Antwort
    0
    • P pingo

      In den Tibberlink-Objekten gibt es ja für jede Stunde eine Preisangabe:
      Bildschirmfoto 2024-02-11 um 14.39.30.jpg
      Wenn man nun die billigsten x Stunden nutzen will, dann wäre der Durchschnittspreis für diese x Stunden interessant (X ist dann eine Zahl von 1-5).
      Die Startzeit für diese billigen x Stunden ist bekannt und kann jeden Tag ausgelesen werden.

      Wie geht man das in Javascript an, damit man klug immer die richtigen Objekte ausliest und daraus den Durchschnittspreis ausrechnet?

      Danke

      P Offline
      P Offline
      pingo
      schrieb am zuletzt editiert von pingo
      #2

      Mein Sohn hat es gelöst:

      let start = 21 // values 0-23
      let timePeriod = 4 // values 1-5
      
      const allPrices = {
          0: 0.1,
          1: 0.26,
          2: 0.32,
          3: 0.38,
          4: 0.31,
          5: 0.122,
          6: 0.25,
          7: 0.35,
          8: 0.177,
          9: 0.366,
          10: 0.14,
          11: 0.288,
          12: 0.1,
          13: 0.344,
          14: 0.1,
          15: 0.322,
          16: 0.1,
          17: 0.377,
          18: 0.1,
          19: 0.266,
          20: 0.1,
          21: 0.37,
          22: 0.13,
          23: 0.25,
      }
      
      const averagePrice = startCalc(start, timePeriod)
      console.log(averagePrice)
      
      function startCalc(start, timePeriod) {
          const prices = Object.values(allPrices)
          const earlyTimePeriod = -24 + (start + timePeriod)
          const lateTimePeriod = 24 - (start)
          let hourPrices
      
          if(earlyTimePeriod <= 0) { // for hours 0-19
              hourPrices = calcPrices(prices, 'default', timePeriod, start)
          } else { // for hours 20-23
              let earlyHourPrices = calcPrices(prices, 'early', earlyTimePeriod)
              let lateHourPrices = calcPrices(prices, 'late', lateTimePeriod)
              hourPrices = earlyHourPrices + lateHourPrices
          }
          return calcAveragePrice(hourPrices, timePeriod)
      }
      
      function calcPrices(pricesArr, checkHours, timePeriod, start) {
          const prices = checkHours === 'late' ? pricesArr.reverse() : pricesArr 
          const key = start || 0
          let sum
      
          if(timePeriod === 1) {
              sum = prices[key]
          } else if (timePeriod === 2) {
              sum = prices[key] + prices[key + 1]
          } else if (timePeriod === 3) {
              sum = prices[key] + prices[key + 1] + prices[key + 2]
          } else if (timePeriod === 4) {
              sum = prices[key] + prices[key + 1] + prices[key + 2] + prices[key + 3]
          } else if (timePeriod === 5) {
              sum = prices[key] + prices[key + 1] + prices[key + 2] + prices[key + 3] + prices[key + 4]
          }
          return sum
      }
      
      function calcAveragePrice(hourPrices, timePeriod) {
          const averagePrice = hourPrices / timePeriod
          return averagePrice
      }
      

      natürlich sollte man oben die Tibber Preise aus den Objekten auslesen und dort einfügen. Die Zahlen sind reine Fantasiezahlen zum Testen

      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

      642

      Online

      32.6k

      Benutzer

      82.2k

      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