Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

    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

    Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tobe4it @ThomKast last edited by

      Der tibberconnect Adapter V0.0.9 läuft nicht mehr. Ich nehme an, dass das an der Umstellung seitens Tibber liegt: Breaking change in websocket subscription:

      https://developer.tibber.com/docs/overview#breaking-websocket-change

      Im Code des Adapters steht noch api.tibber.com. Ich hab' versucht das auf websocket-api.tibber.com zu ändern, blicke bei dem Code aber scheinbar nicht durch. Sind nur main.ts und main.js anzupassen?

      Ich hab' das für mich jetzt mit dem Umweg über die Anbindung von Home Assistant an ioBroker gelöst. Dort wurde die Änderung bereits eingepflegt.

      1 Reply Last reply Reply Quote 0
      • O
        oxident last edited by

        Komisch, bei mir klappt der Adapter wunderbar. Jedoch beginnt mein Vertrag erst in ein paar Wochen und der Pulse ist auch nicht da.

        Aber die stündlichen Preise werden brav aktualisiert.

        M 1 Reply Last reply Reply Quote 0
        • M
          MikeRow @oxident last edited by

          @oxident nur der Teil mit dem Pulse funktioniert derzeit nicht

          O 1 Reply Last reply Reply Quote 1
          • O
            oxident @MikeRow last edited by

            @mikerow said in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

            @oxident nur der Teil mit dem Pulse funktioniert derzeit nicht

            Ahh ok. Das ist wirklich nicht gut. Wollte darüber in Zukunft die Steuerung meines PC-Akkus laufen lassen. Wäre blöd, wenn das "unzuverlässig" ist.

            M 1 Reply Last reply Reply Quote 0
            • M
              Michaelnorge @oxident last edited by

              @oxident said in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

              Wäre blöd, wenn das "unzuverlässig" ist.

              Nicht nur Du bei der die ganze Stromregulierung abhängig ist von diesem Adapter.
              Aber keine Angst, es wird sicher daran gearbeitet!!

              1 Reply Last reply Reply Quote 0
              • T
                theGrinch last edited by theGrinch

                Auf Anregung von @MikeRow habe ich mal die BarChart von @Familienvater auf diesen Adapter angepasst.

                Einfach das "home" reinkopieren in Zeile 6+7.

                var myName = "tibber.createchartdata";
                 
                var logOn           = false;     // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben.
                var forceCreation    = false;    // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden)
                 
                var tibberPricesToday = "tibberconnect.0.Homes.*****.PricesToday.";        // mit . am Ende!
                var tibberPricesTomorrow = "tibberconnect.0.Homes.*****.PricesTomorrow.";  // mit . am Ende!
                 
                var tibberStartsAt = "startsAt";
                var tibberTotal = "total";
                 
                 
                // Datenpunkte anlegen:
                // -----------------------------------------------------------------------------
                var idChartData = "tibber.prices.chartData";                      // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idChartData, '[{"label":"15","value":"25.2","dataColor":"#ffffff"},{"label":"16","value":"28.8","dataColor":"#ffffff"},{"label":"17","value":3"5.2","dataColor":"#ffffff"},{"label":"18","value":"33.2","dataColor":"#ffffff"},{"label":"19","value":"20.2","dataColor":"#ffffff"}]', forceCreation, {
                     name: 'Chart-Data Price Forecast',
                     desc: 'Chart-Data Price Forecast',
                     type: 'string',
                     role: 'value'
                });
                 
                // Datenpunkte anlegen:
                // -----------------------------------------------------------------------------
                var idBarChartData = "tibber.prices.barChartData";                      // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idBarChartData, '[{"label":"15","value":"25.2","dataColor":"#ffffff"},{"label":"16","value":"28.8","dataColor":"#ffffff"},{"label":"17","value":3"5.2","dataColor":"#ffffff"},{"label":"18","value":"33.2","dataColor":"#ffffff"},{"label":"19","value":"20.2","dataColor":"#ffffff"}]', forceCreation, {
                     name: 'Bar Chart-Data Price Forecast',
                     desc: 'Bar Chart-Data Price Forecast',
                     type: 'string',
                     role: 'value'
                });
                 
                createBarChartData();
                 
                // Cron-Job, zum Stundenwechsel
                // Stundenwechsel, Ausführen immer um *:00:10
                schedule('10 0 * * * *', function () {createBarChartData()});
                 
                function createBarChartData () {    
                	if(logOn) console.log(myName + " Stundenwechsel");
                    
                    let barChart = [];
                 
                    var jetzt = new Date(Date.now());
                    var aktStunde = jetzt.getHours();
                    var unixTimestamp=new Date().getTime();
                 
                    // bis zu 18 Stunden in die Zukunft
                    const offsets=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18];
                 
                    for (let offset of offsets)
                    {
                        // Template Objekt für BarChart erzeugen
                        let itemData ={label:"", value:0.0, dataColor: "#c2c2c2", valueColor: "#dddddd"}; //, valueAppendix: "", valueColor: #ffffff"
                 
                        // Vorbereitung um Werte aus Tibber Adapter zu holen         
                        var prefix="";
                        aktStunde=jetzt.getHours()+offset;
                        if (aktStunde>23)
                        {
                            aktStunde=aktStunde-24;
                            prefix=tibberPricesTomorrow;
                        }
                        else
                        {
                            prefix=tibberPricesToday;
                        }
                 
                        var strStunde = (aktStunde.toString()).slice(-2); //("0" + aktStunde.toString()).slice(-2);
                        itemData['label']=strStunde;
                 
                        prefix=prefix+strStunde+'.';
                 
                        var aktPrice=getState(prefix+tibberTotal).val;
                 
                        // falls keine Daten vorliegen, weiter ohne diese ItemData an das Chart-Objekt anzuhängen
                        if (aktPrice==null && aktStunde>=0)
                            continue;
                 
                        // von 0.2345 € auf Cent mit einer Nachkomma-Stelle umrechnen
                        itemData['value']=Math.round(aktPrice*1000)/10.0;
                 
                        // Je nach Preis den Balken einfärben
                        if (aktPrice<0.30)
                            itemData['dataColor']="green";
                        else
                        if (aktPrice<0.40)
                            itemData['dataColor']="yellow";
                        else
                        if (aktPrice<0.50)
                            itemData['dataColor']="orange";
                        else
                        if (aktPrice<0.60)
                            itemData['dataColor']="red";
                        else
                            itemData['dataColor']="magenta";
                 
                        // Daten für diese Stunde dem Objekt zufügen
                        barChart.push(itemData);
                    }
                 
                    // fertiges Objekt in den Datenpunkt als JSON schreiben
                    setState("javascript."+instance+"."+idBarChartData, JSON.stringify(barChart), true);
                 
                };
                 
                function createChartData () {    
                	if(logOn) console.log(myName + " Stundenwechsel");
                    
                    let chart = {};
                    let axisLabels =[];
                    let values =[];
                    let datalabels =[];
                 
                    var jetzt = new Date(Date.now());
                    var aktStunde = jetzt.getHours();
                    var unixTimestamp=new Date().getTime();
                 
                    const offsets=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18];
                 
                    // Spaltenbeschriftungen
                 
                    //chart.graphs[0].axisLables=axisLabels;
                    chart.graphs=new Array();
                    chart.graphs.push({});
                    chart.graphs[0].color="green";
                    chart.graphs[0].type="bar";
                    chart.graphs[0].datalabel_rotation=-90;
                    chart.graphs[0].datalabel_color="lightgreen";
                    chart.graphs[0].datalabel_fontSize=10;
                    chart.graphs[0].yAxis_title_text="cent";
                    chart.graphs[0].yAxis_show=true;
                    chart.graphs[0].legendText="Uhrzeit";
                    chart.graphs[0].datalabel_show=true;
                    chart.graphs[0].yAxis_minimumDigits=1;
                    chart.graphs[0].yAxis_maximumDigits=1;
                 
                    for (let offset of offsets)
                    {
                        // Spaltenbeschriftungen
                        aktStunde=jetzt.getHours()+offset;
                        if (aktStunde>23)
                            aktStunde=aktStunde-24;
                        var strStunde = (aktStunde.toString()).slice(-2); //("0" + aktStunde.toString()).slice(-2);
                        axisLabels.push(strStunde)
                        //axisLabels.push(aktStunde);
                               
                        var prefix="";
                        aktStunde=jetzt.getHours()+offset;
                        if (aktStunde>23)
                        {
                            aktStunde=aktStunde-24;
                            prefix=tibberPricesTomorrow+".";
                        }
                        else
                        {
                            prefix=tibberPricesToday+".";
                        }
                 
                        strStunde = ("0" + aktStunde.toString()).slice(-2);
                        prefix=prefix+strStunde+'.';
                 
                        //if(logOn) console.log(myName + " Stundenwechsel, akt Stunde "+strStunde+", prefix "+prefix);
                        var aktPrice=getState(prefix+tibberTotal).val;
                        //var aktStartAt=getState(prefix+tibberStartsAt).val;
                        //if(logOn) console.log(myName + " aktPrice "+aktPrice+", aktStartAt "+aktStartAt);
                        //let itemData ={t:0, y:0.0};
                        //itemData['t']=unixTimestamp+3600*offset;
                        //itemData['y']=aktPrice;
                        values.push(Math.round(aktPrice*1000)/10.0);
                        var cents=(Math.round(aktPrice*1000)/10.0).toString();
                        datalabels.push(cents);
                 
                    }
                    chart.graphs[0].data=values;
                    chart.graphs[0].datalabel_override=datalabels;
                    chart.data=values;
                    chart.datalabel_override=datalabels;
                    chart.axisLables=axisLabels;
                 
                    setState("javascript."+instance+"."+idChartData, JSON.stringify(chart));
                 
                };
                

                /edit: Originalpost mit allen Infos: https://forum.iobroker.net/topic/47195/diagramm-mit-festen-werten-in-vis-nur-wie/12

                M O 3 Replies Last reply Reply Quote 1
                • B
                  butsch last edited by

                  Hallo ich habe aktuell einen Unterschied zwischen:

                  current total 0.1796

                  und

                  today 21 total 0.1944

                  Aktuell ist 21:48 Uhr

                  Müssten diese Werte nicht identisch sein?

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    theGrinch @butsch last edited by theGrinch

                    @butsch müssten Sie, sind sie bei mir auch:

                    tibberconnect.0.Homes.xxxxx.PricesToday.21.total = 0,1794
                    tibberconnect.0.Homes.xxxxx.CurrentPrice.total = 0,1794

                    EPEX-Script:
                    0_userdata.0.Tibber.EPEX_Spot_DE_heute.ESDE_heute_21 = 0,1794

                    0,1942 habe ich überall ab 22 Uhr.

                    /edit: Tibber App sagt 17,9c

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      butsch @theGrinch last edited by

                      @thegrinch Danke, habs gegengecheckt und die Uhrzeit am raspberry hat nicht gestimmt (London) ;-(
                      Sorry

                      W 1 Reply Last reply Reply Quote 1
                      • W
                        Waldmensch @butsch last edited by

                        Mal ne Verständnisfrage: Reicht zur Preisabfrage ein Account bei Tibber mit Api Key oder gibt es die Preisinfo nur, wenn man einen Stromvertrag hat? Die Account Basisdaten werden vom Adapter geladen aber die Preisinfos kommen als leere Arrays.

                        Wen ich auf der Developer Seite eine Abfragemit meinem Token starte, kommt nur

                        {
                          viewer {
                            homes {
                              currentSubscription{
                                priceInfo{
                                  current{
                                    total
                                    energy
                                    tax
                                    startsAt
                                  }
                                  today {
                                    total
                                    energy
                                    tax
                                    startsAt
                                  }
                                  tomorrow {
                                    total
                                    energy
                                    tax
                                    startsAt
                                  }
                                }
                              }
                            }
                          }
                        }
                        
                        {
                          "data": {
                            "viewer": {
                              "homes": [
                                {
                                  "currentSubscription": null
                                }
                              ]
                            }
                          }
                        }
                        
                        T O 2 Replies Last reply Reply Quote 0
                        • M
                          MikeRow @theGrinch last edited by

                          @thegrinch Super, vielen Dank. Läuft!

                          1 Reply Last reply Reply Quote 1
                          • T
                            ThomKast @Waldmensch last edited by

                            @waldmensch
                            Preise werden erst mit Abschluss und Aktivierung eines Vertrags übermittelt. Ich hatte im November 2022 den Vertrag zum 01.01.23 geschlossen und hatte ca. Mitte Dezember erstmalig Zugriff auf Preis Informationen.

                            1 Reply Last reply Reply Quote 0
                            • O
                              oxident @Waldmensch last edited by

                              @waldmensch Ja, gibt es erst nach Vertragsabschluss aber in der Tat auch schon vor Lieferbeginn.

                              1 Reply Last reply Reply Quote 0
                              • M
                                Michaelnorge last edited by

                                Gibt es jetzt eigentlich schon einen fix für den Pulse?

                                1 Reply Last reply Reply Quote 0
                                • Michael Wyraz
                                  Michael Wyraz @PavelCoast last edited by Michael Wyraz

                                  @pavelcoast said in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

                                  Soll zwar nur für Norweger sein, aber vielleicht funktioniert es auch hier, dann könnte man täglich den Zählerstand automatisiert senden, statt über die App.

                                  Leider nicht:

                                  ebec0252-0f27-4e8b-bf59-9492e997b8a0-grafik.png

                                  Dazu müsste man sich die App mal anschauen und die private API herausfinden.

                                  Edit: Hab mir die App mal angeschaut und die private API herausgefunden ^^

                                  https://app.tibber.com/v4/gql

                                  Beispiele:

                                  Auth-Info:

                                  {
                                    me {
                                      id
                                      firstName
                                      homes {
                                        id
                                      }
                                    }
                                  }
                                  

                                  Aktueller Zähler:

                                  {
                                    me {
                                      home(id:"xxxxxx-xxxxxx-xxxxxx-xxxxx") {
                                        currentMeter {
                                          id
                                          meterNo
                                          isUserRead
                                        }
                                      }
                                    }
                                  }
                                  

                                  Zähler und Register anzeigen:

                                  {
                                    me {
                                      meters {
                                        items {
                                          type
                                          title
                                          meter {
                                            id
                                            readingDateScreen {
                                              title
                                              nextButtonText
                                            }
                                            registers {
                                              id
                                              title
                                              description
                                              expectedMin
                                              expectedMax
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                  

                                  Zählerstand eintragen

                                  mutation {
                                    me {
                                      addMeterReadings(meterId: "xxxxx-xxxxx-xxxxx-xxxx-xxxxxxxx",readingDate: "2023-01-16", readings: [{id:"1-0:1.8.0",value:26529}])
                                      {
                                        success {
                                          inputTitle
                                          inputValue
                                          title
                                          descriptionHtml
                                          doneButtonText
                                        }
                                        error {
                                          statusCode
                                          title
                                          message
                                        }
                                      }
                                    }
                                  }
                                  

                                  Viel Spaß damit 😉

                                  O S 3 Replies Last reply Reply Quote 1
                                  • O
                                    oxident @Michael Wyraz last edited by

                                    @michael-wyraz Mal eine blöde Frage: Warum braucht man das? Überträgt die Bridge den Zählerstand nicht automatisch?

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      theGrinch @oxident last edited by

                                      @oxident ich würde denken wenn du deinen Zähler anders als mit dem Pulse ausliest.

                                      O 1 Reply Last reply Reply Quote 0
                                      • O
                                        oxident @theGrinch last edited by

                                        @thegrinch said in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

                                        @oxident ich würde denken wenn du deinen Zähler anders als mit dem Pulse ausliest.

                                        Ach, das ist möglich/erlaubt? Zumindest theoretisch...

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          theGrinch @oxident last edited by

                                          @oxident so wie ich das auf tibber.de gelesen habe, machen die stündliche Abrechnung nur mit dem Pulse. Hätte also nur einen Effekt für die monatliche Übermittlung, wenn es denn akzeptiert wird.

                                          Michael Wyraz 1 Reply Last reply Reply Quote 1
                                          • Michael Wyraz
                                            Michael Wyraz @theGrinch last edited by

                                            @thegrinch said in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

                                            @oxident so wie ich das auf tibber.de gelesen habe, machen die stündliche Abrechnung nur mit dem Pulse. Hätte also nur einen Effekt für die monatliche Übermittlung, wenn es denn akzeptiert wird.

                                            Exakt. Die ursprüngliche Frage war ja, ob/wie man Werte hochladen kann, anstatt sie monatlich selbst in die App einzugeben, wenn man keinen Pulse hat. Da ich vor dem selben Problem stehe, bis mein Pulse ankommt und bis ich weiß, dass er mit meinem Zähler kompatibel ist, habe ich mich damit mal beschäftigt.

                                            Mit einem funktionierenden Pulse erledigt sich das Thema natürlich komplett.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            423
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            49
                                            360
                                            65927
                                            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