Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Adapter aWATTar mit zwei Zeiträumen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter aWATTar mit zwei Zeiträumen

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

      Der Adapter aWATTar holt täglich am Nachmittag die stündlichen Strompreise vom heutigen Tag und vom Folgetag und schreibt sie in den Knoten awattar.0.prices.(0-47). Und er schreibt sie nochmal geordnet nach Preis in den Konten awattar.0.pricesOrdered.(0-46).
      Bei den Adapter-Einstellungen kann ich den Zeitraum begrenzen (z.B. von 18:00 bis 23:00).

      Gibt es eine Möglichkeit, dass ich 2 Zeiträume einstelle.
      Konkret bräuchte ich vom 14:30 bis 18:00 und von 22:30 bis 6:00. Meine Idee wäre: Es könnte z.B. alle Knoten außerhalb dieses Zeitraums gelöscht werden und awattar.0.pricesOrdered.x neu nummeriert werden.

      Homoran paul53 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @judisi last edited by

        @judisi sagte in Adapter aWATTar mit zwei Zeiträumen:

        bräuchte ich vom 14:30 bis 18:00

        wofür?

        wenn du

        @judisi sagte in Adapter aWATTar mit zwei Zeiträumen:

        awattar.0.prices.(0-47).

        von 0-23:59 in 30 Minütigen Schritten (???) hast kannst du die doch da rausholen

        J 1 Reply Last reply Reply Quote 0
        • J
          judisi @Homoran last edited by judisi

          @homoran das stimmt. Da habe ich zu kompliziert gedacht. (die Schritte sind stündlich, aber vom heutigen und morgigen Tag)

          wofür ich das brauche: die speicheröfen werden vom Stromversorger "ferngeschalten". Sie bekommen von 14:30 bis 18:00 und von 22:30 bis 6:00 Strom. Damit muss ich mich abfinden.
          Ich würde nun gerne noch eine Schaltung dazwischen montieren, sodass sie nur zu den x günstigen Stunden Strom bekommen (das x wird in der übergangszeit 5, im Hochwinter vermutlich mehr sein).

          Mein Plan wäre nun mit Blockly folgendes zu tun: ich finde den x-teuersten Wert dieser Zeiträume raus. Wenn die volle Stunde dann diesem Wert oder wenig entspricht, dann wird eingeschalten, sonst ausgeschalten.

          Ich werde mich jetzt mal auf die Suche begeben, wie ich den x-teuersten Wert dieser Zeiträume rausfinde ... (also eigentlich sind es dann drei: von 00:00 bis 6:00, von 14:30 bis 18:00 und von 22:30 bis 24:00, wobei ich die halben Stunden wohl ignorieren werde).

          paul53 Homoran 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @judisi last edited by paul53

            @judisi sagte: nur zu den x günstigen Stunden Strom bekommen (das x wird in der übergangszeit 5

            Dann schreibe Preise und Startzeiten, die infrage kommen, in eine Liste und sortiere die Liste nach Preis. Zu den Startzeiten mit den 5 günstigsten Preisen wird eingeschaltet.

            const awattar = 'awattar.0.prices.'
            
            function sortObj(arr, attr) {
                function sortAttr(a, b) {
                    return a[attr] - b[attr];
                }
                arr.sort(sortAttr);
            }
            
            var liste = [];
            
            schedule('59 21 * * *', function() {
                liste = [];
                for(let i = 22; i < 30; i++) { // Start 22:00 bis 5:00 Uhr
                    const obj = {
                        start: getState(awattar + i + '.start').val,
                        price: getState(awattar + i + '.totalPriceKwh').val
                    };
                    liste.push(obj);
                }
                for(let i = 38; i < 42; i++) { // Start 14:00 bis 17:00 Uhr
                    const obj = {
                        start: getState(awattar + i + '.start').val,
                        price: getState(awattar + i + '.totalPriceKwh').val
                    };
                    liste.push(obj);
                }
                sortObj(liste, 'price');
            });
            
            schedule('0 * * * *', function() {
                const jetzt = formatDate(new Date(), 'hh:mm:ss');
                let ein = false;
                for(let i = 0; i < 5; i++) {
                    if(liste[i].start == jetzt) ein = true;
                }
                // Ein- oder Ausschalten
            });
            
            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @judisi last edited by

              @judisi sagte in Adapter aWATTar mit zwei Zeiträumen:

              Ich werde mich jetzt mal auf die Suche begeben, wie ich den x-teuersten Wert dieser Zeiträume rausfinde ... (also eigentlich sind es dann drei: von 00:00 bis 6:00, von 14:30 bis 18:00 und von 22:30 bis 24:00, wobei ich die halben Stunden wohl ignorieren werde).

              das hatte ich gestern schon für dich fertig, bis ich merkte dass du bereits eine nach BilligsteStunde sortierte Liste hattest 😞

              habs leider wieder gelöscht, sah etwa so aus
              Screenshot_20230922-164759_Firefox.jpg

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

                @homoran sagte: nach BilligsteStunde sortierte Liste

                Diese Liste berücksichtigt nicht die eingeschränkten Uhrzeiten.

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 sagte

                  @homoran sagte: nach BilligsteStunde sortierte Liste

                  Diese Liste berücksichtigt nicht die eingeschränkten Uhrzeiten.

                  richtig! das war noch für gestern, hätte ich jetzt noch angepasst, wenn ich es nicht schon gelöscht hätte.

                  @judisi
                  würde ich machen, wenn du Bedarf hast und mir das entsprechende JSON zur Verfügung stellst

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

                    @judisi sagte: geordnet nach Preis in den Konten awattar.0.pricesOrdered.(0-46).

                    Man kann eine sortierte Liste der Startzeiten erstellen, die nur die gültigen Zeiten enthält.

                    Blockly_temp.JPG

                    J 1 Reply Last reply Reply Quote 1
                    • J
                      judisi @paul53 last edited by

                      @paul53 @Homoran Ihr zwei seid unglaublich. Während ich mich bemühe einen kleinen Teil zu kreieren und zu verstehen, habt ihr schon mehrere Lösungsvarianten vorgeschlagen, die ich in der Zeit nicht mal in blockly reintippen kann, in der ihr sie programmiert. DANKE, DANKE, DANKE.

                      Ich mach jetzt mal einen Probelauf mit dem Blockly von paul53, weil ich Blockly im Gegensatz zu Javascript annähend verstehe.

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

                        @judisi
                        Da die Werte von heute und morgen enthalten sind, muss man wohl auch noch das Datum prüfen: >= 22:30 heute, der Rest morgen.

                        Blockly_temp.JPG

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

                          Klappt wunderbar. Damit ich dem Problem von heute und morgen entgehen kann, hab ich in der Instanz aWATTar1 eingegeben, dass um 19:05 nur die Preise von 22:00 bis 18:00 beachtet werden sollen.
                          Danke diesem wunderbaren Forum, das ohne erhobenen Zeigefinger immer gerne hilft.

                          aWATTarmit2Zeitraeumen.txt

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

                            @judisi sagte: hab ich in der Instanz aWATTar1 eingegeben, dass um 19:05 nur die Preise von 22:00 bis 18:00 beachtet werden sollen.

                            Blockly_temp.JPG

                            Es wird noch kein Gerät geschaltet.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            626
                            Online

                            31.7k
                            Users

                            79.8k
                            Topics

                            1.3m
                            Posts

                            3
                            12
                            484
                            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