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

  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

Geplant Angeheftet Gesperrt Verschoben Tester
360 Beiträge 49 Kommentatoren 91.2k Aufrufe 53 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.
  • T 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

    O Offline
    O Offline
    oxident
    schrieb am zuletzt editiert von
    #168

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

    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

    Danke dafür!

    Wichtig ist jedoch zu wissen, dass der Adapter derzeit den Folgetag nicht zurücksetzt. Daher sind bis mittags noch die Daten vom aktuellen und Folgetag gleich.

    Das betrifft auch das Diagramm.

    1 Antwort Letzte Antwort
    0
    • M MikeRow

      @joau8 Bei mir läuft es, gerade mal getestet
      06550d02-a9c2-4c27-9ea6-9c64bfc05cdd-image.png

      Nur im Tibberconnect Adapter kommt seit gestern das LiveMeasurement nicht mehr rüber

      J Offline
      J Offline
      JoAu84
      schrieb am zuletzt editiert von
      #169

      @mikerow @ThomKast
      sorry für die sehr späte Antwort; das Skript lief bei mir auch, aber das Livemeasurement nicht mehr. Geht übrigens immer noch nicht - weiß jemand, wann das im Adapter geändert werden könnte (gab ja wohl ne Änderung der Api-Adresse...
      Vielen Dank!

      M T 2 Antworten Letzte Antwort
      0
      • J JoAu84

        @mikerow @ThomKast
        sorry für die sehr späte Antwort; das Skript lief bei mir auch, aber das Livemeasurement nicht mehr. Geht übrigens immer noch nicht - weiß jemand, wann das im Adapter geändert werden könnte (gab ja wohl ne Änderung der Api-Adresse...
        Vielen Dank!

        M Offline
        M Offline
        MikeRow
        schrieb am zuletzt editiert von
        #170

        @joau84 Leider nein, ich denke dass muss sich @Codibris ansehen. Ich nutze für den Übergang eine Home Assistant Instanz mit Tibber Adapter. Diese Daten lese ich dann mit IOB ein.

        1 Antwort Letzte Antwort
        0
        • J JoAu84

          @mikerow @ThomKast
          sorry für die sehr späte Antwort; das Skript lief bei mir auch, aber das Livemeasurement nicht mehr. Geht übrigens immer noch nicht - weiß jemand, wann das im Adapter geändert werden könnte (gab ja wohl ne Änderung der Api-Adresse...
          Vielen Dank!

          T Offline
          T Offline
          ThomKast
          schrieb am zuletzt editiert von ThomKast
          #171

          @joau84 wie @MikeRow schon schreibt...
          Such mal auf dieser Seite nach NOTERED, denn weiter oben habe ich 2 Einträge erstellt, wie die Daten mit NODERED abgeholt werden können. Funktioniert 1a

          1 Antwort Letzte Antwort
          0
          • L Offline
            L Offline
            Leviathan09
            schrieb am zuletzt editiert von
            #172

            Hi, hat noch wer das Problem das nach einer gewissen Zeit keine Preis-Updates mehr kommen?
            Ich hatte es jetzt schon ein paar mal die Tage das ich den Adapter neustarten musste damit ich wieder die aktuellen Preise bekomme.

            Kann das damit zusammenliegen das mein Vertrag erst im Februar aktiv ist und daher meine Abrfragen per API eingeschränkt werden.
            Oder könnte es an einem Problem mit dem Adapter liegen?

            Ich habe jetzt mal einen Neustart immer Nachts um 00:15 eingeplant um zu schauen ob es etwas bringt und dem Problem eventuell entgegen zu wirken.

            L 1 Antwort Letzte Antwort
            0
            • L Leviathan09

              Hi, hat noch wer das Problem das nach einer gewissen Zeit keine Preis-Updates mehr kommen?
              Ich hatte es jetzt schon ein paar mal die Tage das ich den Adapter neustarten musste damit ich wieder die aktuellen Preise bekomme.

              Kann das damit zusammenliegen das mein Vertrag erst im Februar aktiv ist und daher meine Abrfragen per API eingeschränkt werden.
              Oder könnte es an einem Problem mit dem Adapter liegen?

              Ich habe jetzt mal einen Neustart immer Nachts um 00:15 eingeplant um zu schauen ob es etwas bringt und dem Problem eventuell entgegen zu wirken.

              L Offline
              L Offline
              Leviathan09
              schrieb am zuletzt editiert von
              #173

              Habe mal in den Logs geschaut was heute so los war. Folgendes taucht auf:

              host.iobroker
              	2023-01-23 10:55:09.733	error	instance system.adapter.tibberconnect.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
              tibberconnect.0
              	2023-01-23 10:55:09.183	error	undefined
              tibberconnect.0
              	2023-01-23 10:55:09.183	error	unhandled promise rejection: undefined
              tibberconnect.0
              	2023-01-23 10:55:09.182	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
              tibberconnect.0
              	2023-01-23 10:55:09.174	warn	Terminated (UNCAUGHT_EXCEPTION): Without reason
              tibberconnect.0
              	2023-01-23 10:55:09.173	info	terminating
              tibberconnect.0
              	2023-01-23 10:55:09.171	error	undefined
              tibberconnect.0
              	2023-01-23 10:55:09.171	error	unhandled promise rejection: undefined
              tibberconnect.0
              	2023-01-23 10:55:09.170	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
              tibberconnect.0
              	2023-01-23 10:55:09.168	error	undefined
              tibberconnect.0
              	2023-01-23 10:55:09.168	error	unhandled promise rejection: undefined
              tibberconnect.0
              	2023-01-23 10:55:09.167	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
              
              1 Antwort Letzte Antwort
              0
              • S Schimi

                @michael-wyraz

                ich nutze einen IR Lesekopf mit dem "smartmeter"-Adapter...
                gibt dann so eine ausgabe:
                460b24ab-dd3c-4bc6-b767-33a4a608bd25-image.png

                Vielleicht kannst du das ja über ne variable lösen, wo man im config bereich den Datenpunkt angibt.....

                mir würde es im grunde reichen wenn ich einmal im Monat (lösbar über Cronjob, dann könnte man flexibel auch jeden Tag oder so, wählen) den Zählerstand übertrage.... (In meinem fall, macht der Pulse wenig sinn und ich habe mehr vom Durchschnittspreis)

                O Offline
                O Offline
                oxident
                schrieb am zuletzt editiert von
                #174

                @schimi Kannst Du erläutern, wieso bei Dir der Durchschnittspreis mehr Sinn macht?

                Ich überlege mir das nämlich auch gerade...

                S 1 Antwort Letzte Antwort
                0
                • O oxident

                  @schimi Kannst Du erläutern, wieso bei Dir der Durchschnittspreis mehr Sinn macht?

                  Ich überlege mir das nämlich auch gerade...

                  S Online
                  S Online
                  Schimi
                  schrieb am zuletzt editiert von
                  #175

                  @oxident

                  da wir den hauptverbrauch am Tag haben... so das wir in der günstigen Zeit nicht genug verbauchen um auf den Tag gesehen günstiger zu sein....

                  Hoffe das ist verständlich geschrieben :-)

                  Sobald das E-Auto öfters als (aktuell) einmal alle 2-3 Monate zuhause geladen wird, sieht die rechnung wieder bestimmt anderes aus

                  O 1 Antwort Letzte Antwort
                  1
                  • S Schimi

                    @oxident

                    da wir den hauptverbrauch am Tag haben... so das wir in der günstigen Zeit nicht genug verbauchen um auf den Tag gesehen günstiger zu sein....

                    Hoffe das ist verständlich geschrieben :-)

                    Sobald das E-Auto öfters als (aktuell) einmal alle 2-3 Monate zuhause geladen wird, sieht die rechnung wieder bestimmt anderes aus

                    O Offline
                    O Offline
                    oxident
                    schrieb am zuletzt editiert von
                    #176

                    @schimi Ja, das leuchtet ein. Respekt, dass Du das für Dich so ausrechnen konntest ;-)

                    S 1 Antwort Letzte Antwort
                    0
                    • O oxident

                      @schimi Ja, das leuchtet ein. Respekt, dass Du das für Dich so ausrechnen konntest ;-)

                      S Online
                      S Online
                      Schimi
                      schrieb am zuletzt editiert von
                      #177

                      @oxident sehe dir einfach deinen Tagesverbrauch an und was du davon Nachts verbrauchst....
                      Damit kann man schon recht viel abschätzen....

                      Als Berufstätiger (Ohne Schichtdienst) ist man ja meistens zu den spitzenzeiten zuhause (deswegen entstehen die ja überhaupt)... Mit Family potenziert sich das sogar....
                      Nachts (quasi wenns günstig ist)läuft nur die Wärmepumpe (die braucht nicht viel) und die Grundlast...
                      Am We ist es ja sogar manchmal am Tag günstig... dann profitiert man beim Durchschnittspreis auch davon....

                      Obs nachher richtig ist... sieht man wenns zu spät ist :-) aber bei 2 Wochen Kündigungsfrist kann man gut reagieren... oder mit dem Pulse auf Std. abrechnung umstellen

                      1 Antwort Letzte Antwort
                      1
                      • M Offline
                        M Offline
                        Michaelnorge
                        schrieb am zuletzt editiert von
                        #178

                        Mal ganz dumm ChatGPT gefragt, verstehe halt nix :-)

                        const request = require('request');
                        
                        // Replace YOUR_API_KEY with your actual Tibber API key
                        const API_KEY = 'YOUR_API_KEY';
                        
                        // Replace YOUR_PULSE_ID with the id of your Pulse device in ioBroker
                        const PULSE_ID = 'YOUR_PULSE_ID';
                        
                        // Endpoint for Tibber API to retrieve current power consumption
                        const API_ENDPOINT = `https://api.tibber.com/v1-beta/gql`;
                        
                        // Function to retrieve current power consumption from Tibber API
                        function getCurrentPowerConsumption() {
                            const query = `
                                query {
                                    viewer {
                                        homes {
                                            liveMeasurement {
                                                power
                                            }
                                        }
                                    }
                                }
                            `;
                        
                            const options = {
                                method: 'POST',
                                headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': `Bearer ${API_KEY}`
                                },
                                body: JSON.stringify({query: query})
                            };
                        
                            request(API_ENDPOINT, options, (error, response, body) => {
                                if (!error && response.statusCode === 200) {
                                    const data = JSON.parse(body);
                                    const power = data.data.viewer.homes[0].liveMeasurement.power;
                                    setPowerConsumptionInPulse(power);
                                } else {
                                    console.error(`Error retrieving power consumption: ${error}`);
                                }
                            });
                        }
                        
                        // Function to set current power consumption in ioBroker's Pulse device
                        function setPowerConsumptionInPulse(power) {
                            const options = {
                                method: 'POST',
                                url: `http://localhost:8087/setState?id=${PULSE_ID}.power&value=${power}`
                            };
                        
                            request(options, (error, response, body) => {
                                if (!error && response.statusCode === 200) {
                                    console.log(`Successfully set power consumption in Pulse: ${power} W`);
                                } else {
                                    console.error(`Error setting power consumption in Pulse: ${error}`);
                                }
                            });
                        }
                        
                        // Retrieve current power consumption every 10 minutes
                        setInterval(getCurrentPowerConsumption, 600000);
                        
                        

                        –--------------------------------------------------------------------------------------

                        • Smart mit: Rasp 4B / ioBroker / Conbee2 / Trådfri / Xiaomi / HUE / Logitech Harmony / Aqara / Easee Wallbox / Hyundai Ioniq / Alexa / Google Home / Fully Kiosk / VIS
                        1 Antwort Letzte Antwort
                        0
                        • Michael WyrazM 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 Offline
                          O Offline
                          oxident
                          schrieb am zuletzt editiert von
                          #179

                          @michael-wyraz
                          Jetzt bin ich spontan auch daran interessiert, meinen Zählerstand automatisiert hochzuladen ;-)
                          Wie ich das sehe müsste man sich aber dennoch vor Nutzung der privaten API authentifizieren ... gibt's da dann'nen Cookie oder kann man es auch direkt via Token nutzen?

                          1 Antwort Letzte Antwort
                          1
                          • M Offline
                            M Offline
                            MikeRow
                            schrieb am zuletzt editiert von
                            #180

                            Moin, mal eine Frage in die Runde. Das bei diesem Adapter die Pulse Funktion derzeit nicht funktioniert ist bekannt. Seit ein paar Tagen sehe ich auf folgendes Problem.

                            Die Tagespreise passen, aber die Preise von morgen werden um Mitternacht nicht mehr gelöscht und aktualisiert. Jetzt gerade 08:10 Uhr sehe ich, dass die Preise von morgen noch gefüllt sind mit den gestrigen werden. Sonst waren die ab Mitternacht immer leer bis zur Aktualisierung am Nachmittag ab ca 13:00Uhr.

                            Habt ihr auch das Problem?
                            @Codibris bist du noch aktiv an dem Adapter? Hast dich lange nicht mehr gemeldet?

                            O 1 Antwort Letzte Antwort
                            0
                            • M MikeRow

                              Moin, mal eine Frage in die Runde. Das bei diesem Adapter die Pulse Funktion derzeit nicht funktioniert ist bekannt. Seit ein paar Tagen sehe ich auf folgendes Problem.

                              Die Tagespreise passen, aber die Preise von morgen werden um Mitternacht nicht mehr gelöscht und aktualisiert. Jetzt gerade 08:10 Uhr sehe ich, dass die Preise von morgen noch gefüllt sind mit den gestrigen werden. Sonst waren die ab Mitternacht immer leer bis zur Aktualisierung am Nachmittag ab ca 13:00Uhr.

                              Habt ihr auch das Problem?
                              @Codibris bist du noch aktiv an dem Adapter? Hast dich lange nicht mehr gemeldet?

                              O Offline
                              O Offline
                              oxident
                              schrieb am zuletzt editiert von
                              #181

                              @mikerow Ist bei mir auch so. Musste ich für meine Berechnungen via Skript abfangen...

                              M 1 Antwort Letzte Antwort
                              0
                              • O oxident

                                @mikerow Ist bei mir auch so. Musste ich für meine Berechnungen via Skript abfangen...

                                M Offline
                                M Offline
                                MikeRow
                                schrieb am zuletzt editiert von
                                #182

                                @oxident OK, das ist blöd. Wenn sich @Codibris nicht meldet, ist der Adapter somit fast nicht mehr zu gebrauchen. Zur Info der alte Adapter https://forum.iobroker.net/topic/46954/test-adapter-tibber-v0-1-x liefert noch korrekte Preise

                                1 Antwort Letzte Antwort
                                1
                                • T 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 Offline
                                  M Offline
                                  MikeRow
                                  schrieb am zuletzt editiert von
                                  #183

                                  @thegrinch Moin, der Tibberconnect Adapter liefert keine Preise von morgen mehr.
                                  https://forum.iobroker.net/topic/52486/test-adapter-tibberconnect-0-0-x-inkl-tibber-pulse/181?_=1674978446344

                                  Meinst du der Code für den Chart kann auf die Preis Struktur von @ThomKast angepasst werden?

                                  https://forum.iobroker.net/topic/60938/geräte-zu-stundenpreisen-epex-oder-pv-überschuss-betreiben/65

                                  Gruß Mike

                                  O 1 Antwort Letzte Antwort
                                  0
                                  • M MikeRow

                                    @thegrinch Moin, der Tibberconnect Adapter liefert keine Preise von morgen mehr.
                                    https://forum.iobroker.net/topic/52486/test-adapter-tibberconnect-0-0-x-inkl-tibber-pulse/181?_=1674978446344

                                    Meinst du der Code für den Chart kann auf die Preis Struktur von @ThomKast angepasst werden?

                                    https://forum.iobroker.net/topic/60938/geräte-zu-stundenpreisen-epex-oder-pv-überschuss-betreiben/65

                                    Gruß Mike

                                    O Offline
                                    O Offline
                                    oxident
                                    schrieb am zuletzt editiert von
                                    #184

                                    @mikerow Hmm, ich dachte, das wäre schon immer so gewesen.
                                    Die Frage ist ja auch, wie man das überhaupt lösen würde. Wir haben ja immer die Situation, dass es einen halben Tag lang keine neuen Daten geben wird.

                                    Wäre es besser, wenn der Adapter dann einfach die unbekannten Stunden auf "Null" setzt?

                                    M 1 Antwort Letzte Antwort
                                    0
                                    • O oxident

                                      @mikerow Hmm, ich dachte, das wäre schon immer so gewesen.
                                      Die Frage ist ja auch, wie man das überhaupt lösen würde. Wir haben ja immer die Situation, dass es einen halben Tag lang keine neuen Daten geben wird.

                                      Wäre es besser, wenn der Adapter dann einfach die unbekannten Stunden auf "Null" setzt?

                                      M Offline
                                      M Offline
                                      MikeRow
                                      schrieb am zuletzt editiert von
                                      #185

                                      @oxident Ja, bisher war das ja auch so mit dem Adapter. Ab 13:00 Uhr sollen die Daten für morgen vorliegen. Liegen Sie vor, werden sie gefüllt. Ab 00:00 Uhr werden sie von morgen auf heute umgelegt und morgen wieder auf Null gesetzt. Ab 13: 00Uhr kommen dann wieder neue Daten von morgen usw usw..

                                      Ich habe gerade mal alle Objekte des Adapters gelöscht. Sie sind jetzt aktuell. Mal schauen wie der Umzug der Daten Mitternacht läuft. Vermutlich liegt da der Fehler

                                      O B 2 Antworten Letzte Antwort
                                      0
                                      • M MikeRow

                                        @oxident Ja, bisher war das ja auch so mit dem Adapter. Ab 13:00 Uhr sollen die Daten für morgen vorliegen. Liegen Sie vor, werden sie gefüllt. Ab 00:00 Uhr werden sie von morgen auf heute umgelegt und morgen wieder auf Null gesetzt. Ab 13: 00Uhr kommen dann wieder neue Daten von morgen usw usw..

                                        Ich habe gerade mal alle Objekte des Adapters gelöscht. Sie sind jetzt aktuell. Mal schauen wie der Umzug der Daten Mitternacht läuft. Vermutlich liegt da der Fehler

                                        O Offline
                                        O Offline
                                        oxident
                                        schrieb am zuletzt editiert von
                                        #186

                                        @mikerow Das ist ja komisch. Ich nutzen den Adapter erst seit ca. 2 Wochen und bei mir war das von Anfang an so ... aber eventuell liegt es wirklich daran, wie die Daten vom Server geliefert werden.

                                        Zum Glück haben wir ja die Datenpunkte mit dem "Beginn" des Preises. Da könnte man ansetzen.

                                        1 Antwort Letzte Antwort
                                        0
                                        • M MikeRow

                                          @oxident Ja, bisher war das ja auch so mit dem Adapter. Ab 13:00 Uhr sollen die Daten für morgen vorliegen. Liegen Sie vor, werden sie gefüllt. Ab 00:00 Uhr werden sie von morgen auf heute umgelegt und morgen wieder auf Null gesetzt. Ab 13: 00Uhr kommen dann wieder neue Daten von morgen usw usw..

                                          Ich habe gerade mal alle Objekte des Adapters gelöscht. Sie sind jetzt aktuell. Mal schauen wie der Umzug der Daten Mitternacht läuft. Vermutlich liegt da der Fehler

                                          B Online
                                          B Online
                                          babl
                                          schrieb am zuletzt editiert von
                                          #187

                                          @mikerow vor 4 Tagen wurde aber in github was gemacht also müsste @Codibris aktiv sein. Hoffe ich zumindest. Wäre schade um den Adapter.

                                          1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          705

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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