Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Array nach Preisen sortiert mit Startzeit aus Tibberconnect

    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

    Array nach Preisen sortiert mit Startzeit aus Tibberconnect

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

      @babl
      Gemäß Deinem Wunsch, ein nach Preisen sortiertes Array zu erhalten, in dessen Objekten auch die Startzeit enthalten ist, schlage ich folgendes Skript vor. Es soll die Preise und Startstunden für heute 17:00 Uhr bis morgen 16:00 Uhr liefern (hoffe ich). Format:

      [{start: 4, preis: 0.24}, {start: 3, preis: 0.25}, ...]
      
      const tibber = 'tibberconnect.0.Homes.ffXXX.'; // Anpassen!
      const idSort = '0_userdata.0.Tibber.Preise.sortiert'; // DP-Typ: "array"
      
      function sortPreis(a, b) {
          return a.preis - b.preis;
      }
      
      schedule('57 16 * * *', function() {
          const preise = [];
          for(let i = 17; i < 24; i++) {
              let obj = {};
              let idStart = tibber + 'PricesToday.' + i + '.startsAt';
              let idPreis = tibber + 'PricesToday.' + i + '.total';
              obj.start = new Date(getState(idStart).val).getHours();
              obj.preis = getState(idPreis).val;
              preise.push(obj);
          }
          for(let i = 0; i < 17; i++) {
              let obj = {};
              let idStart = tibber + 'PricesTomorrow.' + i + '.startsAt';
              let idPreis = tibber + 'PricesTomorrow.' + i + '.total';
              obj.start = new Date(getState(idStart).val).getHours();
              obj.preis = getState(idPreis).val;
              preise.push(obj);
          }
          preise.sort(sortPreis);
          setState(idSort, preise, true);
      });
      

      Das Skript ist nicht getestet, da keine Datenpunkte vorhanden.
      Das Array im Datenpunkt lässt sich auch mit Blockly weiter verarbeiten.

      arteck 1 Reply Last reply Reply Quote 1
      • arteck
        arteck Developer Most Active @paul53 last edited by

        @paul53 bin auf dein script gestossen

        in Zeile 26

        preise.sort(sortPreis);
        

        in der funktion sind aber 2 parameter

        function sortPreis(a, b) {
            return a.preis - b.preis;
        }
        
        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @arteck last edited by paul53

          @arteck sagte: in Zeile 26

          Das ist eine Funktionsreferenz für die Javascriptfunktion array.sort().

          arteck 1 Reply Last reply Reply Quote 0
          • arteck
            arteck Developer Most Active @paul53 last edited by arteck

            @paul53 das kannst du auch so schreiben

            preise.sort(function(a, b) {
                    return a.preis - b.preis;
                });
            

            übrigends funktionert gut

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @arteck last edited by

              @arteck sagte: das kannst du auch so schreiben

              Richtig.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              833
              Online

              31.8k
              Users

              79.9k
              Topics

              1.3m
              Posts

              2
              5
              451
              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