Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. TibberLink Adapter

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    TibberLink Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      lesiflo Most Active last edited by lesiflo

      Moin,
      hat jemand von euch einen Tip für mich wie ich die teuren Stunden richtig angezeigt bekomme? Im Adapter habe
      das schon vertauscht, in der Anzeige wird das jedoch so angezeigt.

      158202d5-0891-4274-b3da-34489e85870d-image.png

      Die grünen Bereiche sollten eigentlich genau andersherum sein. So wie hier: Link Text

      5f333952-4633-4647-8146-a63db16bc363-image.png

      1 Reply Last reply Reply Quote 0
      • L
        lesiflo Most Active last edited by lesiflo

        Hier mal ein Java-Script welches die Daten von aktuellen Monat errechnet und in Datenpunkte schreibt.

        // =================== KONFIG ===================
        const jsonDP         = 'tibberlink.0.Homes.xxxxxxxxxxxx.Consumption.jsonDaily';
        const resultCostDP   = '0_userdata.0.Tibber.SumUnitCostThisMonth';    // Ziel-DP Kosten (Summe)
        const resultConsDP   = '0_userdata.0.Tibber.SumConsumptionThisMonth'; // Ziel-DP Verbrauch
        const resultPriceDP  = '0_userdata.0.Tibber.AvgUnitPriceThisMonth';   // Ziel-DP Durchschnittspreis
        
        // =================== FUNKTION ===================
        function calcMonthValues() {
            try {
                const raw = getState(jsonDP).val;
                if (!raw) {
                    log('Keine Daten im JSON-DP vorhanden', 'warn');
                    return;
                }
        
                const data = JSON.parse(raw);
                let sumCost = 0;
                let sumCons = 0;
        
                // aktuelles Jahr & Monat bestimmen
                const now = new Date();
                const currentYear  = now.getFullYear();
                const currentMonth = now.getMonth(); // 0-basiert (0=Jan, 11=Dez)
        
                data.forEach(entry => {
                    if (!entry.from) return;
        
                    const d = new Date(entry.from);
                    if (d.getFullYear() === currentYear && d.getMonth() === currentMonth) {
                        if (entry.totalCost !== undefined && !isNaN(entry.totalCost)) {
                            sumCost += parseFloat(entry.totalCost);
                        }
                        if (entry.consumption !== undefined && !isNaN(entry.consumption)) {
                            sumCons += parseFloat(entry.consumption);
                        }
                    }
                });
        
                // Durchschnitt berechnen
                let avgPrice = sumCost/sumCons;
        
                // Ergebnisse in DP schreiben
                setState(resultCostDP, sumCost, true);
                setState(resultConsDP, sumCons, true);
                setState(resultPriceDP, avgPrice, true);
        
                log(`Summe unitCost (aktueller Monat): ${sumCost.toFixed(4)} €`, 'info');
                log(`Summe consumption (aktueller Monat): ${sumCons.toFixed(3)} kWh`, 'info');
                log(`Ø unitPrice (aktueller Monat): ${avgPrice.toFixed(4)} €/kWh`, 'info');
        
            } catch (e) {
                log(`Fehler beim Verarbeiten des JSON: ${e}`, 'error');
            }
        }
        
        // =================== TRIGGER ===================
        // 1x direkt beim Start
        calcMonthValues();
        
        // bei Änderungen des JSON-DPs neu berechnen
        on({id: jsonDP, change: 'any'}, () => {
            calcMonthValues();
        });
        
        // =================== DATENPUNKTE ANLEGEN ===================
        createState(resultCostDP, 0, {
            name: 'Summe unitCost aktueller Monat (Tibber)',
            type: 'number',
            unit: '€',
            role: 'value'
        });
        
        createState(resultConsDP, 0, {
            name: 'Summe Verbrauch aktueller Monat (Tibber)',
            type: 'number',
            unit: 'kWh',
            role: 'value'
        });
        
        createState(resultPriceDP, 0, {
            name: 'Durchschnitt unitPrice aktueller Monat (Tibber)',
            type: 'number',
            unit: '€/kWh',
            role: 'value'
        });
        
        
        icebear E 3 Replies Last reply Reply Quote 0
        • icebear
          icebear @lesiflo last edited by

          @lesiflo

          Du solltest deine Home-ID unkenntlich machen!!

          L 1 Reply Last reply Reply Quote 0
          • L
            lesiflo Most Active @icebear last edited by

            @icebear Erledigt.

            1 Reply Last reply Reply Quote 0
            • icebear
              icebear @lesiflo last edited by

              @lesiflo said in TibberLink Adapter:

              Hier mal ein Java-Script welches die Daten von aktuellen Monat errechnet und in Datenpunkte schreibt.

              Ich hab da jetzt doch mal eine Frage dazu, wieso rechnest du nicht mit den Bruttowerten, damit man direkt die tatsächlichen Kosten sieht? Anstatt von 'unitCost' steht doch schon der Preis/Tag im JSON drin = 'totalCost'

              Und bei 'avgPrice' brauchst du doch auch nur 'consumption' / 'totalPrice' = avgPrice/d

              L 1 Reply Last reply Reply Quote 0
              • L
                lesiflo Most Active @icebear last edited by

                @icebear Guter Einwand, ist korrigiert.

                1 Reply Last reply Reply Quote 0
                • E
                  ETGermany @lesiflo last edited by

                  @lesiflo

                  Nur zur Info:

                  Method "createState" is deprecated and will be removed in js-controller 7.1, use "extendObject/setObjectNotExists"

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    ArnoD @ETGermany last edited by

                    @etgermany

                    Nur zur Info:
                    Method "createState" is deprecated and will be removed in js-controller 7.1, use "extendObject/setObjectNotExists"

                    Nur zur Info:
                    das betrifft nicht den JavaScript Adapter

                    E 1 Reply Last reply Reply Quote 0
                    • B
                      bakerman23 last edited by

                      Ab morgen kommen bei Tibber die Preise im 15 Minutentakt. Hat jemand eine Information, wie die Kanäle in zukunft funktionieren sollen?
                      Da ist ja alles auf Stunden ausgelegt.

                      H 1 Reply Last reply Reply Quote 2
                      • E
                        ETGermany @ArnoD last edited by

                        @arnod sagte in TibberLink Adapter:

                        das betrifft nicht den JavaScript Adapter

                        War ja auch auf das Skript von @lesiflo bezogen 😊

                        A 1 Reply Last reply Reply Quote 0
                        • H
                          HomeUser @bakerman23 last edited by

                          @bakerman23 said in TibberLink Adapter:

                          Ab morgen kommen bei Tibber die Preise im 15 Minutentakt. Hat jemand eine Information, wie die Kanäle in zukunft funktionieren sollen?
                          Da ist ja alles auf Stunden ausgelegt.

                          Laut API Change Log müsste es erstmal mit Stunden weiter arbeiten. https://developer.tibber.com/docs/changelog

                          Wäre aber natürlich schön, wenn der Adapter auch Stunden und Viertelstunden unterstützen würde.

                          T 1 Reply Last reply Reply Quote 1
                          • T
                            ttoebbe @HomeUser last edited by

                            @homeuser said in TibberLink Adapter:

                            @bakerman23 said in TibberLink Adapter:

                            Ab morgen kommen bei Tibber die Preise im 15 Minutentakt. Hat jemand eine Information, wie die Kanäle in zukunft funktionieren sollen?
                            Da ist ja alles auf Stunden ausgelegt.

                            Laut API Change Log müsste es erstmal mit Stunden weiter arbeiten. https://developer.tibber.com/docs/changelog

                            Wäre aber natürlich schön, wenn der Adapter auch Stunden und Viertelstunden unterstützen würde.

                            Moin ✌
                            ich habe gestern die neueste Version von GitHub gezogen 5.0.4. Allerdings zeigt er für morgen noch keine Daten :-(.
                            Frage, wie ist es bei euch?
                            Falls es noch geht sollte ich zurück auf den letzten "Stable"?

                            Muss mir morgen sonst etwas einfallen lassen 😉 --> Sonst bekomme ich Ärger zuhause😥

                            BG ttoebbe

                            L 1 Reply Last reply Reply Quote 0
                            • L
                              LibertyX82 @ttoebbe last edited by

                              @ttoebbe
                              Ich habe die Preise für morgen.

                              Die API unterstützt für die Preise sowohl stündlich als auch viertelstündliche Werte, bei den stündlichen Werten handelt es sich um einen gemittelten Wert.

                              Die Verbrauchsabfrage (home.consumption) bleibt stündlich.

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ttoebbe @LibertyX82 last edited by

                                @libertyx82 Guten Morgen ✌

                                bei mir (wie gesagt Tibberlinkversion 5.0.4) sind die Preise dann heute Nacht c65ef86b-927f-466f-822e-14f850f37475-image.png erschienen.
                                Allerdings sind es auch noch die Stunden.
                                593b4517-f047-4e0c-9ec3-958fc69c4d90-image.png
                                Dann bin ich einmal auf heute 14 Uhr gespannt.
                                Oder habe ich da noch einen anderen Denkfehler, bzw. muss ich die 15min nun irgendwo einstellen?
                                BG ttoebbe 🤙

                                1 Reply Last reply Reply Quote 0
                                • A
                                  ArnoD @ETGermany last edited by

                                  @etgermany sagte in TibberLink Adapter:

                                  War ja auch auf das Skript von @lesiflo bezogen

                                  Genau deswegen 🙂 Sein Skript läuft im Javascript Adapter und der ist nicht betroffen sondern nur für die was Adapter programmieren wollen.

                                  1 Reply Last reply Reply Quote 0
                                  • Gargano
                                    Gargano last edited by

                                    The Subscription.priceInfo field (i.e. the type PriceInfo) now takes an optional argument resolution that can either be HOURLY or QUARTER_HOURLY.

                                    Default ist Hourly.

                                    Es müsste im Adapter einzustellen sein , habe aber diesbezüglich nichts gesehen.

                                    L 1 Reply Last reply Reply Quote 0
                                    • L
                                      LibertyX82 @Gargano last edited by

                                      @gargano
                                      Da es das Argument vorher nicht gab, nutzt es der Adapter auch nicht, daher kannst du es im Adapter auch nicht einstellen .

                                      Damit alte Integrationen weiterhin funktionieren, wird bei nicht Angabe des Arguments "resolution" weiterhin HOURLY verwendet.

                                      Gargano 1 Reply Last reply Reply Quote 0
                                      • Gargano
                                        Gargano @LibertyX82 last edited by

                                        @libertyx82 sagte in TibberLink Adapter:

                                        Da es das Argument vorher nicht gab, nutzt es der Adapter auch nicht, daher kannst du es im Adapter auch nicht einstellen

                                        Der Changelog von Tibber, in dem die Änderung beschrieben ist, ist vom Datum 1.9.2025
                                        Die letzte Version von Tibberlink ist 4 Tage alt. Da hätte es ja sein können, daß die Änderung schon eingeflossen ist.

                                        H 1 Reply Last reply Reply Quote 0
                                        • H
                                          HomeUser @Gargano last edited by

                                          Für den Abruf der 15-Minuten-Werte müsste nach meinem Verständnis der neue Parameter im Aufruf der Tibber-API verwendet werden und dann der folgende Abschnitt im Adapter angepasst werden:

                                          tibberAPICaller.ts an Zeile 228

                                          				for (const price of pricesToday) {
                                          					const hour = new Date(price.startsAt.substr(0, 19)).getHours();
                                          					await this.fetchPrice(homeId, `PricesToday.${hour}`, price);
                                          				}
                                          				if (Array.isArray(pricesToday) && pricesToday[2]?.startsAt) {
                                          					// Got valid pricesToday
                                          					void this.checkAndSetValue(
                                          						`Homes.${homeId}.PricesToday.jsonBYpriceASC`,
                                          						JSON.stringify(pricesToday.sort((a, b) => a.total - b.total)),
                                          						"prices sorted by cost ascending as json",
                                          					);
                                          					exDate = new Date(pricesToday[2].startsAt);
                                          					if (exDate && exDate >= today) {
                                          						return true;
                                          					}
                                          

                                          Leider hätte ich erst in gut 2 Wochen Zeit mich experimentell darun zu versuchen. Die Hoffnung lebt, dass es bis dahin schon umgesetzt ist 🙂

                                          docadams T B 3 Replies Last reply Reply Quote 2
                                          • docadams
                                            docadams @HomeUser last edited by docadams

                                            EDIT: hat sich erledigt.
                                            Zwar waren alle Einstellungen usw. korrekt bzw. es wurden keine Probleme angezeigt. Am Gesamtsystem wurde seit 2 Jahren nichts mehr gewerkelt.
                                            Nach Trennung des Pulse und anschließender Neuverbindung entsprechend Anleitung läuft es wieder.
                                            Alles OK (hoffentlich)

                                            Hallo,
                                            ich lese hier eigentlich nur still mit.

                                            Seit heute, 02.01.25 13.59 Uhr aktualisieren sich die Tibber-Daten nicht mehr. Auch nicht bei LocalPulse.
                                            Und jetzt stelle ich fest, dass die Tipper-Handy-App auch seit etwa dieser Zeit keinen Kontakt zum Pulse hat.

                                            Es liegt also nicht an ioBroker.
                                            Batterien wurden getausch, WLAN ist OK.
                                            Weil diese Unterbrechungszeit nicht so ganz willkürlich scheint, hat jemand noch dieses Problem?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            555
                                            Online

                                            32.2k
                                            Users

                                            80.9k
                                            Topics

                                            1.3m
                                            Posts

                                            83
                                            593
                                            179222
                                            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