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
    1.9k

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

Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

Geplant Angeheftet Gesperrt Verschoben Tester
360 Beiträge 49 Kommentatoren 91.0k 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.
  • M Offline
    M Offline
    Michaelnorge
    schrieb am zuletzt editiert von
    #154

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

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

    • 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
    • P PavelCoast

      @Codibris
      Hallo,

      habe Deinen Adapter nun auch installiert, super Arbeit, liefert die Werte, die ich benötige, habe vorher mit Node-RED gearbeitet, allerdings mit der alten API.
      Hast Du vor auch die Übertragung des Zählerstandes mit einzubauen?
      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.

      Ich mein dies in der API:
      Field Argument Type Description
      sendMeterReading MeterReadingResponse!
      Send meter reading for home (only available for Norwegian users)

      input MeterReadingInput!
      updateHome Home!
      Update home information

      Beste Grüße
      René

      Michael WyrazM Offline
      Michael WyrazM Offline
      Michael Wyraz
      schrieb am zuletzt editiert von Michael Wyraz
      #155

      @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 Antworten Letzte Antwort
      1
      • 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
        #156

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

        T 1 Antwort Letzte Antwort
        0
        • O oxident

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

          T Offline
          T Offline
          theGrinch
          schrieb am zuletzt editiert von
          #157

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

          O 1 Antwort Letzte Antwort
          0
          • T theGrinch

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

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

            @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 Antwort Letzte Antwort
            0
            • O oxident

              @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 Offline
              T Offline
              theGrinch
              schrieb am zuletzt editiert von
              #159

              @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 WyrazM 1 Antwort Letzte Antwort
              1
              • T theGrinch

                @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 WyrazM Offline
                Michael WyrazM Offline
                Michael Wyraz
                schrieb am zuletzt editiert von
                #160

                @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 Antwort Letzte Antwort
                2
                • 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 ;-)

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

                  @michael-wyraz

                  Wenn da jemand nen blocklyoder JavaScript machen könnte, wäre super... ich weiss gar nicht wie ich anfangen soll..

                  Nen Automatismus der z.B. am 01 jedes Monats um 0:10Uhr) den Zählerstand überträgt würde reichen..

                  Michael WyrazM 1 Antwort Letzte Antwort
                  0
                  • S Schimi

                    @michael-wyraz

                    Wenn da jemand nen blocklyoder JavaScript machen könnte, wäre super... ich weiss gar nicht wie ich anfangen soll..

                    Nen Automatismus der z.B. am 01 jedes Monats um 0:10Uhr) den Zählerstand überträgt würde reichen..

                    Michael WyrazM Offline
                    Michael WyrazM Offline
                    Michael Wyraz
                    schrieb am zuletzt editiert von
                    #162

                    @schimi

                    Ich baue mir gerade eine kleine Anwendung dazu. Wird allerdings in Java, weil mir das locker aus der Hand fließt.

                    • Konfigurierbare Quelle, erstmal generische REST-Api oder ne Zeitreihendatenbank
                    • Angabe des Ziels (Login zu Tibber)

                    Das Tool soll täglich nach neuen Zählerständen schauen und die fehlenden bis maximal 30 Tage zurück nachtragen (die API erlaubt maximal Tageswerte und maximal 30 Tage zurück).

                    Welche Datenquelle hast Du?

                    S 1 Antwort Letzte Antwort
                    0
                    • Michael WyrazM Michael Wyraz

                      @schimi

                      Ich baue mir gerade eine kleine Anwendung dazu. Wird allerdings in Java, weil mir das locker aus der Hand fließt.

                      • Konfigurierbare Quelle, erstmal generische REST-Api oder ne Zeitreihendatenbank
                      • Angabe des Ziels (Login zu Tibber)

                      Das Tool soll täglich nach neuen Zählerständen schauen und die fehlenden bis maximal 30 Tage zurück nachtragen (die API erlaubt maximal Tageswerte und maximal 30 Tage zurück).

                      Welche Datenquelle hast Du?

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

                      @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)

                      Michael WyrazM O crunchipC 3 Antworten 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)

                        Michael WyrazM Offline
                        Michael WyrazM Offline
                        Michael Wyraz
                        schrieb am zuletzt editiert von
                        #164

                        @schimi
                        Ich denke, du möchtest die 1_8_0 melden. Woher kommt die Ausgabe, ist das von ioBroker? (ich kenne ioBroker nicht, hab nur hier gepostet, weil ich hier einige Infos gefunden habe und mich mit meinen Infos revanchieren wollte).

                        S 1 Antwort Letzte Antwort
                        0
                        • Michael WyrazM Michael Wyraz

                          @schimi
                          Ich denke, du möchtest die 1_8_0 melden. Woher kommt die Ausgabe, ist das von ioBroker? (ich kenne ioBroker nicht, hab nur hier gepostet, weil ich hier einige Infos gefunden habe und mich mit meinen Infos revanchieren wollte).

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

                          @michael-wyraz sagte in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

                          ...
                          (ich kenne ioBroker nicht, hab nur hier gepostet, weil ich hier einige Infos gefunden habe und mich mit meinen Infos revanchieren wollte)...

                          Ahso..... ok... das ist aber auch mega cool von dir :+1:

                          ja genau, die 1_8_0.... und kommt von iobroker... wird alle par sek aktualisiert :-)

                          Michael WyrazM 1 Antwort Letzte Antwort
                          0
                          • S Schimi

                            @michael-wyraz sagte in Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse:

                            ...
                            (ich kenne ioBroker nicht, hab nur hier gepostet, weil ich hier einige Infos gefunden habe und mich mit meinen Infos revanchieren wollte)...

                            Ahso..... ok... das ist aber auch mega cool von dir :+1:

                            ja genau, die 1_8_0.... und kommt von iobroker... wird alle par sek aktualisiert :-)

                            Michael WyrazM Offline
                            Michael WyrazM Offline
                            Michael Wyraz
                            schrieb am zuletzt editiert von
                            #166

                            @schimi

                            Welche Möglichkeit gibt es denn, die abzurufen?

                            S 1 Antwort Letzte Antwort
                            0
                            • Michael WyrazM Michael Wyraz

                              @schimi

                              Welche Möglichkeit gibt es denn, die abzurufen?

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

                              @michael-wyraz

                              den Datenpunkt auslesen würde reichen....

                              Leider weiß ich nicht wie ich es anders beschreiben soll....

                              hier habe ich mal nen Script was einen andern Datenpunkt ausließt und an eine Wallbox sendet...
                              Ich nutze es zwar nicht (habe es nur in der Sammlung, falls ich sowas mal "brauche") aber es funktioniert (getestet)

                              vielleicht erklärt es einiges.

                              on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
                              var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                               
                              Arbeit = getState("smartmeter.0.1-0:1_8_0__255.value").val;
                              Arbeit = Arbeit * 1000
                              Leistung  = getState("smartmeter.0.1-0:16_7_0__255.value").val;
                              Strom = Leistung / 0.690
                               
                              var url = "http://192.168.20.148/cnf?cmd=set_ajax_meter&dev_id=M5";
                               
                              var xhr = new XMLHttpRequest();
                              xhr.open("POST", url);
                               
                              xhr.setRequestHeader("Authorization", "Basic YWRtaW46MTIzNGFiY2Q=");
                              xhr.setRequestHeader("Content-Type", "application/json");
                               
                              xhr.onreadystatechange = function () {
                                 if (xhr.readyState === 4) {
                                    console.log(xhr.status);
                                    console.log(xhr.responseText);
                                 }};
                              var data = `{
                                 "import_vah": ${Arbeit},
                                 "power_va": ${Leistung},
                                 "current": [${Strom}, ${Strom}, ${Strom}]
                              }`;
                              xhr.send(data);
                              });
                              
                              1 Antwort Letzte Antwort
                              0
                              • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          602

                                          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