Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. M-A Hueb

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 1
    • Followers 0
    • Topics 5
    • Posts 205
    • Best 14
    • Groups 2

    M-A Hueb

    @M-A Hueb

    15
    Reputation
    13
    Profile views
    205
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    M-A Hueb Follow
    Pro Starter

    Best posts made by M-A Hueb

    • RE: Roborock Adapter tester gesucht

      @copystring Danke für die Info. Und an dieser Stelle auch mal vielen Dank für deine Arbeit. Echt top was du da in sehr kurzer Zeit hinbekommen hast

      posted in JavaScript
      M-A Hueb
      M-A Hueb
    • RE: TTS mit HomePod

      @wildbill Dank dir. Hatte es auf steuere. das problem lies sich durch einen Reboot beheben

      posted in Cloud Dienste
      M-A Hueb
      M-A Hueb
    • RE: Adapter "smartmeter"

      @m-a-hueb erledigt. Windows reboot hilft

      posted in ioBroker Allgemein
      M-A Hueb
      M-A Hueb
    • RE: Roborock Adapter tester gesucht

      @copystring vielen Dank für deine Mühe. Du hast in echt kurzer Zeit ein super Ergebnis erzielt

      posted in JavaScript
      M-A Hueb
      M-A Hueb
    • RE: Test ioBroker unter Windows installieren - 2022 Edition

      @jb_sullivan Also bei mir braucht das einfach kurz bis iobroker stop durch ist:
      a7a508cf-b4b9-40cf-b884-f506b7b0c163-grafik.png

      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: Support Adapter Energiefluss-erweitert v0.7.7

      Guten Tag,
      ich habe bisher den Energieflusser Adapter verwendet.
      Dort kann man ja einstellen, dass die Punkte auf de nLinien in Abhängigkeit der Leistung schneller oder langsamer fahren.
      Wie realisiere ich das in dem erweiterten Adapter?

      posted in Visualisierung
      M-A Hueb
      M-A Hueb
    • RE: Roborock Adapter tester gesucht

      @copystring Hindernisserkennung passt bei mir.
      Zonenerstellung auf Touch geräten tut auch

      posted in JavaScript
      M-A Hueb
      M-A Hueb
    • RE: [Tutorial] VIS Fritzbox Status & Up/Downloadanzeige

      Hallo,

      habe jetzt über diesen Thread drübergelesen und ahbe das ganze auch mit einer 6591 am laufen. Was immer noch auftritt ist, dass wenn die 4GB grenze beim Up/Download erreicht wird springt der wert auf 0 zurück. Gibt es hierfür eine Lösung?

      posted in Praktische Anwendungen (Showcase)
      M-A Hueb
      M-A Hueb
    • RE: Test ioBroker unter Windows installieren - 2023 Edition

      @gaspode Habe gerade das Update gemacht. sieht soweit gut aus log.zip
      Logs habe ich mal angehängt

      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: HowTo: Zusatz-Programme fuer jarvis v3

      @mcu Ich danke dir für deine Geduld. in einem privaten Fenster funktioniert es. ich leere jetzt mal alle Caches. Vielen Dank

      Und so wie du es gemacht hast passt es

      posted in JavaScript
      M-A Hueb
      M-A Hueb

    Latest posts made by M-A Hueb

    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      @jrbwh habs dort auch reingestellt

      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      hab hier mal 2 Charts gebaut. Dank geht an
      @jrbwh für die Grundidee und ChatGPT:

      
       
      //
      // Create chart for Tibber data. To be used with flexcharts.
      //
      // Sample http request for hourly data chart:
      // http://localhost:8082/flexcharts/echarts.html?source=script&message=tibber&chart=hourly
      //
       
      // Replace 'MY-TOKEN' with your own token:
      const ID_TIBBER = 'tibberlink.0.Homes.MY-TOKEN.Consumption';
       
      const IDS = { hourly:  '.jsonHourly',  // hourly data
                    daily:   '.jsonDaily',   // daily data
                    weekly:  '.jsonWeekly',  // weekly data
                    monthly: '.jsonMonthly'  // monthly data
                  };
       
      onMessage('tibber', (httpParams, callback) => {
          // Use hourly data in case of invalid chart type
          const id = (httpParams.chart && httpParams.chart in IDS ? ID_TIBBER+IDS[httpParams.chart] : ID_TIBBER+IDS['hourly']);
          if (existsState(id)) { 
              evalTibberData(httpParams.chart, id, result => callback(result));
          } else {
              console.log('Requested state is not available >>'+id+'<<');
              callback({title: { left: "center", textStyle: { color: "#ff0000" }, text: "REQUESTED STATE IS NOT AVAILABLE: >>" + id +"<<" }});
          }
      });
       
      function evalTibberData(myChart, id, callback) {
          const tibber = JSON.parse(getState(id).val);  // Read tibber data
          const chart = {
                          tooltip: { trigger: "axis", axisPointer: { type: "cross" }},
                          legend: { show: true, orient: "horizontal", left: "center", top: 25 },
                          title: { left: "center", text: "Tibber " },
                          grid: { right: "20%" },
                          toolbox: { feature: { dataView: { show: true, readOnly: false }, restore: { show: true }, saveAsImage: { show: true }}},
                          xAxis: [{ type: "category", axisTick: { alignWithLabel: true }, data: []}],
                          yAxis: [{ type: "value", position: "left",  alignTicks: true, axisLine: { show: true, lineStyle: { color: "#5470C6" }}, axisLabel: { formatter: "{value} kWh" }},
                                  { type: "value", position: "right", alignTicks: true, axisLine: { show: true, lineStyle: { color: "#91CC75" }}, axisLabel: { formatter: "{value} €" }}],
                          series: [{ name: "Consumption", type: "bar", yAxisIndex: 0, data: []},
                                   { name: "Cost",        type: "bar", yAxisIndex: 1, data: []}]
                         };
          const xAxis  = [];
          const yAxis0 = [];
          const yAxis1 = [];
          for (const data of Object.values(tibber)) {
              const isHourly = (myChart == 'hourly');  // Hourly data?
              const xValue = (isHourly ? new Date(data.from).toLocaleTimeString() : new Date(data.from).toLocaleDateString());
              xAxis.push(xValue);
              yAxis0.push((data.consumption ? data.consumption.toFixed(2) : 0));  // push 0 on null values
              yAxis1.push((data.cost ? data.cost.toFixed(2) : 0));                // push 0 on null values
          }
          chart.xAxis[0].data  = xAxis;       // Set chart x-axis data
          chart.series[0].data = yAxis0;      // Set chart y-values consumption
          chart.series[1].data = yAxis1;      // Set chart y-values cost
          chart.title.text = "Tibber stündliche Kosten";             // Add type of chart to title
          console.log('Evaluation of tibber '+myChart+' data done.');
          callback(chart);
      }
      

      94944cd3-bb2b-4465-8141-29187309cfb3-grafik.png

      und das hier:

      
      
      //http://localhost:8082/flexcharts/echarts.html?source=script&message=tibberpreis&chart=hourly&darkmode
      const ID_TIBBER = 'tibberlink.0.Homes.MY-HOME-ID.PricesToday';
      
      onMessage('tibberpreis', (httpParams, callback) => {
          console.log("Anfrage für Tibber-Daten:", httpParams);
      
          const id = ID_TIBBER + '.json'; // Stündliche Daten für heute
      
          if (existsState(id)) { 
              evalTibberData(id, result => callback(result));
          } else {
              console.warn('Datenpunkt nicht verfügbar:', id);
              callback({
                  title: {
                      left: "center",
                      textStyle: { color: "#ff0000" },
                      text: "Daten nicht verfügbar: >>" + id + "<<"
                  }
              });
          }
      });
      
      function evalTibberData(id, callback) {
          console.log("Lese Tibber-Daten:", id);
      
          let tibber;
          try {
              tibber = JSON.parse(getState(id).val);
              console.log("Tibber-Daten geladen:", tibber);
          } catch (error) {
              console.error("Fehler beim Parsen:", error);
              callback({
                  title: { left: "center", textStyle: { color: "#ff0000" }, text: "FEHLER BEIM PARSEN" }
              });
              return;
          }
      
          if (!Array.isArray(tibber) || tibber.length === 0) {
              console.error("Keine gültigen Daten:", tibber);
              callback({
                  title: { left: "center", textStyle: { color: "#ff0000" }, text: "KEINE GÜLTIGEN DATEN VERFÜGBAR" }
              });
              return;
          }
      
          console.log("Verarbeite", tibber.length, "Einträge.");
      
          const currentHour = new Date().getHours(); // Aktuelle Stunde holen
          console.log("Aktuelle Stunde:", currentHour);
      
          const chart = {
              tooltip: {
                  trigger: "axis",
                  axisPointer: { type: "shadow" },
                  formatter: function (params) {
                      let energyPrice = 0;
                      let taxPrice = 0;
                      let totalPrice = 0;
      
                      // Berechne die Werte von Energiepreis, Steuern und Gesamtkosten aus den aktuellen Tooltip-Elementen
                      params.forEach(function (item) {
                          if (item.seriesName === "Energiepreis") {
                              energyPrice = item.value;
                          } else if (item.seriesName === "Steuern") {
                              taxPrice = item.value;
                          } else if (item.seriesName === "Gesamtkosten") {
                              totalPrice = item.value;
                          }
                      });
      
                      // Zeige die Summe von Energiepreis und Steuern im Tooltip an
                      return `
                          <div>
                              <strong>${params[0].name}</strong><br />
                              Energiepreis: ${energyPrice} €/kWh<br />
                              Steuern: ${taxPrice} €/kWh<br />
                              <strong>Gesamtkosten: ${totalPrice} €/kWh</strong>
                          </div>
                      `;
                  }
              },
              legend: { show: true, left: "center", top: 25 },
              title: { left: "center", text: "Tibberpreis heute" }, // Neuer Titel
              grid: { right: "10%" },
              toolbox: {
                  feature: {
                      dataView: { show: true, readOnly: false },
                      restore: { show: true },
                      saveAsImage: { show: true }
                  }
              },
              xAxis: [{ type: "category", axisTick: { alignWithLabel: true }, data: [] }],
              yAxis: [{ type: "value", position: "left", axisLabel: { formatter: "{value} €/kWh" }}],
              series: [
                  { name: "Energiepreis", type: "bar", stack: "cost", data: [] },
                  { name: "Steuern", type: "bar", stack: "cost", data: [] },
                  { name: "Gesamtkosten", type: "bar", data: [], itemStyle: { color: "green", borderColor: "black", borderWidth: 2 } } // Separate Serie für Gesamtkosten
              ]
          };
      
          const xAxis = [];
          const energyPrices = [];
          const taxPrices = [];
          const totalPrices = []; // Neues Array für Gesamtkosten
      
          for (const data of tibber) {
              if (!data.startsAt || typeof data.energy === "undefined" || typeof data.tax === "undefined") {
                  console.warn("Fehlende Werte:", data);
                  continue;
              }
      
              const date = new Date(data.startsAt);
              const hour = date.getHours();
              const xValue = date.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });
      
              console.log(`Zeit: ${xValue}, Energie: ${data.energy}, Steuern: ${data.tax}`);
      
              xAxis.push(xValue);
              energyPrices.push(Number(data.energy).toFixed(4)); // Netto-Energiepreis
              taxPrices.push(Number(data.tax).toFixed(4)); // Steuern
      
              // Berechne die Gesamtkosten (Energiepreis + Steuern) und füge sie zu totalPrices hinzu
              const totalPrice = (Number(data.energy) + Number(data.tax)).toFixed(4);
              totalPrices.push(totalPrice); // Gesamtkosten als neuer Balken
          }
      
          // Ändere die Farbe des Gesamtkostenbalkens für die aktuelle Stunde zu rot
          chart.series[2].data = totalPrices.map((totalPrice, index) => {
              const hour = new Date(tibber[index].startsAt).getHours();
              return {
                  value: totalPrice,
                  itemStyle: {
                      color: hour === currentHour ? 'red' : 'green', // Rot für aktuelle Stunde, sonst grün
                      borderColor: "black",
                      borderWidth: 2
                  }
              };
          });
      
          chart.xAxis[0].data = xAxis;
          chart.series[0].data = energyPrices;
          chart.series[1].data = taxPrices;
      
          console.log("Finales Chart-Objekt:", JSON.stringify(chart, null, 2));
          console.log("Chart für Tibberpreis heute fertig.");
      
          callback(chart);
      }
      
      

      377d7b18-c88d-43ad-9c95-5490660e080e-grafik.png

      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      @merlin123 von dem hier:

      
      //
      // Create chart for Tibber data. To be used with flexcharts.
      //
      // Sample http request for hourly data chart:
      // http://localhost:8082/flexcharts/echarts.html?source=script&message=tibber&chart=hourly
      //
       
      // Replace 'MY-TOKEN' with your own token:
      const ID_TIBBER = 'tibberLink.0.Homes.MY-TOKEN.Consumption';
       
      const IDS = { hourly:  '.jsonHourly',  // hourly data
                    daily:   '.jsonDaily',   // daily data
                    weekly:  '.jsonWeekly',  // weekly data
                    monthly: '.jsonMonthly'  // monthly data
                  };
       
      onMessage('tibber', (httpParams, callback) => {
          // Use hourly data in case of invalid chart type
          const id = (httpParams.chart && httpParams.chart in IDS ? ID_TIBBER+IDS[httpParams.chart] : ID_TIBBER+IDS['hourly']);
          if (existsState(id)) { 
              evalTibberData(httpParams.chart, id, result => callback(result));
          } else {
              console.log('Requested state is not available >>'+id+'<<');
              callback({title: { left: "center", textStyle: { color: "#ff0000" }, text: "REQUESTED STATE IS NOT AVAILABLE: >>" + id +"<<" }});
          }
      });
       
      function evalTibberData(myChart, id, callback) {
          const tibber = JSON.parse(getState(id).val);  // Read tibber data
          const chart = {
                          tooltip: { trigger: "axis", axisPointer: { type: "cross" }},
                          legend: { show: true, orient: "horizontal", left: "center", top: 25 },
                          title: { left: "center", text: "Tibber " },
                          grid: { right: "20%" },
                          toolbox: { feature: { dataView: { show: true, readOnly: false }, restore: { show: true }, saveAsImage: { show: true }}},
                          xAxis: [{ type: "category", axisTick: { alignWithLabel: true }, data: []}],
                          yAxis: [{ type: "value", position: "left",  alignTicks: true, axisLine: { show: true, lineStyle: { color: "#5470C6" }}, axisLabel: { formatter: "{value} kWh" }},
                                  { type: "value", position: "right", alignTicks: true, axisLine: { show: true, lineStyle: { color: "#91CC75" }}, axisLabel: { formatter: "{value} €" }}],
                          series: [{ name: "Consumption", type: "bar", yAxisIndex: 0, data: []},
                                   { name: "Cost",        type: "bar", yAxisIndex: 1, data: []}]
                         };
          const xAxis  = [];
          const yAxis0 = [];
          const yAxis1 = [];
          for (const data of Object.values(tibber)) {
              const isHourly = (myChart == 'hourly');  // Hourly data?
              const xValue = (isHourly ? new Date(data.from).toLocaleTimeString() : new Date(data.from).toLocaleDateString());
              xAxis.push(xValue);
              yAxis0.push((data.consumption ? data.consumption.toFixed(2) : 0));  // push 0 on null values
              yAxis1.push((data.cost ? data.cost.toFixed(2) : 0));                // push 0 on null values
          }
          chart.xAxis[0].data  = xAxis;       // Set chart x-axis data
          chart.series[0].data = yAxis0;      // Set chart y-values consumption
          chart.series[1].data = yAxis1;      // Set chart y-values cost
          chart.title.text += myChart;             // Add type of chart to title
          console.log('Evaluation of tibber '+myChart+' data done.');
          callback(chart);
      }
      
      
      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      @merlin123 wenn ich das Richtig gesehn hab bei deinem TestSkript wird unter dem DP flexcharts.0.info kein Punkt angelegt.
      könnte man das noch mit rein machen?
      Woher bekomme ich die URL die bei dir im Kommentar steht?

      posted in Tester
      M-A Hueb
      M-A Hueb
    • RE: Jarvis 3.1.8 - zukünftige Strompreise - Skalierung, Farben

      @mcu Danke für die Erklärung

      posted in Visualisierung
      M-A Hueb
      M-A Hueb
    • RE: HowTo: Zusatz-Programme fuer jarvis v3

      @der-eine gt: Steht für "greater than" (größer als). Definiert die untere Grenze des Bereichs.

      lte: Steht für "less than or equal to" (kleiner oder gleich). Definiert die obere Grenze des Bereichs.

      posted in JavaScript
      M-A Hueb
      M-A Hueb
    • RE: Jarvis 3.1.8 - zukünftige Strompreise - Skalierung, Farben

      @mcu ist gt nicht greater than? dann müsste das doch bei 0.53 rot sein

      [
        {
          "gt": 0,
          "lte": 0.15,
          "color": "lightgreen"
        },
        {
          "gt": 0.15,
          "lte": 0.22,
          "color": "green"
        },
        {
          "gt": 0.22,
          "lte": 0.29,
          "color": "yellow"
        },
        {
          "gt": 0.29,
          "lte": 0.35,
          "color": "orange"
        },
        {
          "gt": 0.35,
          "color": "red"
        }
      ]
      

      Wo finde ich den FlexChart? ich seh da nix im Adapter

      posted in Visualisierung
      M-A Hueb
      M-A Hueb
    • RE: Jarvis 3.1.8 - zukünftige Strompreise - Skalierung, Farben

      Hallo,
      ich habe heute tibberHTML wie in der Anleitung https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/tibber/tibberhtml-pro beschrieben eingestellt
      Leider bleiben sowohl today als auch tomorrow leer.
      Hier der DP htmltoday:

      <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Tibber-Tageswert</title><script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script></head><body><div id="chart-container" style="width: 100%; height:400px;"></div><script>    var data = [{"time":1738537200000,"value":0.398,"tax":0.2685,"energy":0.1295,"level":"NORMAL"},{"time":1738540800000,"value":0.3945,"tax":0.2679,"energy":0.1266,"level":"NORMAL"},{"time":1738544400000,"value":0.3922,"tax":0.2675,"energy":0.1247,"level":"NORMAL"},{"time":1738548000000,"value":0.3867,"tax":0.2667,"energy":0.12,"level":"NORMAL"},{"time":1738551600000,"value":0.3905,"tax":0.2673,"energy":0.1232,"level":"NORMAL"},{"time":1738555200000,"value":0.3959,"tax":0.2681,"energy":0.1278,"level":"NORMAL"},{"time":1738558800000,"value":0.4332,"tax":0.274,"energy":0.1592,"level":"NORMAL"},{"time":1738562400000,"value":0.4912,"tax":0.2833,"energy":0.2079,"level":"EXPENSIVE"},{"time":1738566000000,"value":0.5333,"tax":0.2901,"energy":0.2432,"level":"EXPENSIVE"},{"time":1738569600000,"value":0.4557,"tax":0.2777,"energy":0.178,"level":"NORMAL"},{"time":1738573200000,"value":0.4222,"tax":0.2722,"energy":0.15,"level":"NORMAL"},{"time":1738576800000,"value":0.3938,"tax":0.2678,"energy":0.126,"level":"NORMAL"},{"time":1738580400000,"value":0.3834,"tax":0.2661,"energy":0.1173,"level":"NORMAL"},{"time":1738584000000,"value":0.381,"tax":0.2657,"energy":0.1153,"level":"NORMAL"},{"time":1738587600000,"value":0.3916,"tax":0.2674,"energy":0.1242,"level":"NORMAL"},{"time":1738591200000,"value":0.4174,"tax":0.2715,"energy":0.1459,"level":"NORMAL"},{"time":1738594800000,"value":0.447,"tax":0.2763,"energy":0.1707,"level":"NORMAL"},{"time":1738598400000,"value":0.5008,"tax":0.2848,"energy":0.216,"level":"EXPENSIVE"},{"time":1738602000000,"value":0.4827,"tax":0.282,"energy":0.2007,"level":"EXPENSIVE"},{"time":1738605600000,"value":0.4831,"tax":0.282,"energy":0.2011,"level":"EXPENSIVE"},{"time":1738609200000,"value":0.4434,"tax":0.2757,"energy":0.1677,"level":"NORMAL"},{"time":1738612800000,"value":0.4259,"tax":0.2729,"energy":0.153,"level":"NORMAL"},{"time":1738616400000,"value":0.4154,"tax":0.2712,"energy":0.1442,"level":"NORMAL"},{"time":1738620000000,"value":0.4054,"tax":0.2696,"energy":0.1358,"level":"NORMAL"}];    var chartContainer = document.getElementById("chart-container");    var myChart = echarts.init(chartContainer);    function formatTime(time) {        return moment(time).format("HH");    }    function calculateArrowPosition(hour){       return (hour / 24) * 100 +1 + "%";    }    function updateChart() {        var minValue = Math.min.apply(null, data.map(function (item) {          return item.value;        }));        var yAxisMin = 0.36;        var maxValue = 0.533;        let avgValue = 0.428;        var visualMapPieces =[{"gt":0,"lte":0.15,"color":"lightgreen"},{"gt":0.15,"lte":0.22,"color":"green"},{"gt":0.22,"lte":0.29,"color":"yellow"},{"gt":0.29,"lte":0.35,"color":"orange"},{"gt":0.35,"color":"red"}];        var values = data.map(item => (item.value-minValue).toFixed(2));        var maxLineValue = Math.max.apply(null, values);        var maxLineIndex = values.indexOf(maxLineValue);        var maxLineData = {time:1738566000000,value:0.533};        var currentHour = new Date().getHours() ;        var currentDay = new Date().getDate();        var endOfDayTimestamp = 1738623599999;        var colorStops = [];        visualMapPieces.map(piece => {          if(piece["lte"] >=yAxisMin && piece["gt"]<=maxValue){             if(piece["gt"]>=yAxisMin){             colorStops.push({              offset:  ((piece["gt"]-yAxisMin)/(maxValue-yAxisMin)),              color: piece.color             });            }            if(piece["lte"]<=maxValue){             colorStops.push({              offset:  ((piece["lte"]-yAxisMin)/(maxValue-yAxisMin)),              color: piece.color             });            }            if(piece["lte"]>maxValue ){            colorStops.push({              offset:  1,              color: piece.color             });           };          }else{           if(piece["lte"]>=maxValue && piece["gt"]<=maxValue ){            colorStops.push({              offset:  ((piece["lte"]-yAxisMin)/(maxValue-yAxisMin)),              color: piece.color            });           }else if(piece["lte"]>=maxValue && piece["gt"] <= maxValue){            colorStops.push({              offset:  ((piece["lte"]-yAxisMin)/(maxValue-yAxisMin)),              color: piece.color            });           }          };         });        colorStops.push({            offset: 1,            color: colorStops[colorStops.length-1].color        });        colorStops.splice(0, 0, {offset: 0,color:colorStops[0].color});        myChart.setOption({            title: {                text: "Today-Tageswerte",                show: true            },            visualMap: {              type: "piecewise",              pieces: visualMapPieces,              dimension: 1,              showLabel: true,              precision: 2,              itemWidth: 6,              orient: "horizontal",              left: "center", calculable: true,selectedMode: "multiple",              bottom: 10,              text: ["High", "Low"],              textStyle: {                color: "white"              },            },            grid: {              right: 50,              left: 10,              containLabel: true            },            areaStyle: {              color: colorStops            },            toolbox: {              feature: {                saveAsImage: {                   backgroundColor: "rgba(38, 37, 37, 1)",                   title: "Speichern",                   name: "TibberHTML Today 03.02.2025"                },                magicType: {                  type: ["line", "bar"],                  title:{                     line: "Line-Chart",                     bar: "Bar-Chart",                  }                },                dataView: {                  title: "Daten aus der Serie",                  lang: ["Daten der Kurve", "Schließen", "Aktualisieren"],                  optionToContent: function (opt) {                      var table = '<table style="width:100%;"><tbody><tr style="text-align: left;"><th>Stunde</th><th>Wert</th><th>Energie</th><th>Steuer</th><th>Level</th></tr>';                      for (var i = 0; i< opt.series[0].data.length;i++) {                          table += "<tr>";                         for(let x =0; x < opt.series[0].data[i].value.length; x++){                            if(x==0){                               table +=  "<td>" + ("0"+new Date(opt.series[0].data[i].value[x]).getHours()).slice(-2) + "</td>";                            }else{                               table +=  "<td>" + opt.series[0].data[i].value[x] + "</td>";                            }                          }                           table += "</tr>";                      }                      table += "</tbody></table>";                      return table;                  },                  readOnly: true                },              }            },            xAxis: {                type: "time",                axisLabel: {                    show: true,                    formatter: function (value) {                        return formatTime(value);                    }                },                splitNumber: 10,            },            yAxis: {                type: "value",                axisLabel: {                  formatter: function (value) {                     return value.toFixed(3) + " €";                  }                },               min: 0.36,               max: 0.55,            },            series: [{                z:1,                data: data.map(function (item) {                    var hour = new Date(item.time).getHours();                    var day = new Date(item.time).getDate();                    return {                       value: [item.time, item.value, item.energy, item.tax, item.level],                        symbol: "circle",                    symbolSize: day === currentDay && hour === currentHour ? 10:null,                     itemStyle: {                           borderColor: day === currentDay && hour === currentHour ? "white":null,                           shadowColor: day === currentDay && hour === currentHour ? "white":null,                           borderWidth: day === currentDay && hour === currentHour ? 2:null,                           shadowBlur: day === currentDay && hour === currentHour ? 20:null,                     },                        emphasis: {                          itemStyle: {                            color: "white"                           },                          label: {                            show: true,                            formatter: function (params) {                               return params.data.value[1].toFixed(3) + " €";                            },                            color: "black",                            fontWeight: "bold",                             backgroundColor: "white"                          }                        }                     }                 }),            step: "end",                areaStyle:{                    color: new echarts.graphic.LinearGradient(0, 1, 0, 0, colorStops),                },                type: "line",                markLine: {                  symbol: "none",                  lineStyle: {                    color: "red",                    type: "dashed"                  },                  z:0,                  data: [                   {yAxis: minValue ,name: "MIN", lineStyle: { color: "lime" },label: { show: true, position: "end", formatter: "Min\n"+ minValue.toFixed(3)+" €",textStyle: { fontSize: 12,fontWeight: "bold", color:"white"  } }  },                   {yAxis: maxValue,name: "MAX", lineStyle: { color: "red" },label: { show: true, position: "end", formatter: "Max\n"+ maxValue.toFixed(3)+" €",textStyle: { fontSize: 12,fontWeight: "bold", color:"white"  } } },                   {yAxis: avgValue ,name: "AVG", lineStyle: { color: "blue" },label: { show: true, position: "end", formatter: "Avg\n"+ avgValue.toFixed(3)+" €",textStyle: { fontSize: 12,fontWeight: "bold", color:"white"  } } },                  ],                 },            }],            tooltip: {              trigger: "axis",              axisPointer: {               type: "shadow"              },              textStyle: {                fontFamily: "Courier",                fontWeight: "bold"              },              formatter: function (params) {                let time = "Start ab: "+ moment(params[0].axisValue).format("HH:mm")+ " Uhr";                let value = "Preis:&nbsp&nbsp&nbsp&nbsp"+params[0].value[1].toFixed(4) + " €";            let energy = "Energie:&nbsp&nbsp"+params[0].value[2].toFixed(4) + " €";            let tax    = "Steuer:&nbsp&nbsp&nbsp"+params[0].value[3].toFixed(4) + " €";            let lev    = "Level:&nbsp&nbsp&nbsp&nbsp"+ params[0].value[4];            return  `${time}<br/>${value}<br/>${energy}<br/>${tax}<br/>${lev}` ;              }            },        })     }    updateChart();      var updateInterval = setInterval(updateChart, 3600000);</script></body></html>
      

      Diese Meldung kommt im F12 Menu:

      13:18:14.304 App Welcome to jarvis v3.1.8 index-2c99918a.js:112:44201
      13:18:14.308 App using instance 0. index-2c99918a.js:112:45143
      13:18:14.344
      TypeError: a.default.detectStore(...) is undefined
      h1-check.js:1:1301
      13:18:16.330 App Sentry is turned on. You may deactivate it in the adapter settings. index-2c99918a.js:112:38413
      13:37:24.569
      Uncaught TypeError: colorStops[(colorStops.length - 1)] is undefined
          updateChart about:srcdoc:1
          <anonymous> about:srcdoc:1
      srcdoc:1:4775
      13:37:24.571
      Uncaught TypeError: colorStops[(colorStops.length - 1)] is undefined
          updateChart about:srcdoc:1
          <anonymous> about:srcdoc:1
      
      

      an was kann das liegen?
      a7c091a1-840e-4a0d-9506-4477b798f21e-grafik.png

      Pro Version habe ich in v 3.1.8

      posted in Visualisierung
      M-A Hueb
      M-A Hueb
    • RE: [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana

      Guten Morgen,

      habe heute mal getestet manuel meine BYD Batterie vom Netz zu laden (S7K Wechselrichter).
      b4e14050-5fde-4dee-a0a0-0f773d234a6c-grafik.png
      Ich habe hierzu 103237 auf 4 gesetzt und 103243 auf 3
      hat soweit auch funktioniert. Allerdings rennt dann 40084 auf einen unrealistischen Wert. Liegt denk ich am Skalierungsfaktor 40085 der sich nicht ändert.
      19a5e0cd-2adb-4f42-b438-8d659dcb5427-grafik.png
      Das versaut mir natürlich meine gelogten Daten.
      Bei Produktion aus PV passt alles
      An was kann das liegen?

      posted in Praktische Anwendungen (Showcase)
      M-A Hueb
      M-A Hueb
    • RE: Test Adapter Energiefluss-erweitert v0.7.x GitHub/Latest

      @skb Alles klar danke. dann mach ich das darüber

      posted in Tester
      M-A Hueb
      M-A Hueb
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo