Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst]Parser Adapter Refusol Inverter - der richtige Weg?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Parser Adapter Refusol Inverter - der richtige Weg?

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Aiouh @Homoran last edited by Aiouh

      @Homoran DAS war die gute Frage, ich hatte in "page source" geschaut...
      Mit "inspect" finde ich die Tabelle und die Werte - hätte ich selbst drauf kommen sollen. DANKE

      <table class="invisible"><tbody><tr class="invisible"><th class="invisible"><h3>Inverter</h3></th><th class="invisible"><h3></h3></th></tr><tr class="invisible"><td class="invisible" valign="top" align="center"><table><tbody><tr><th>Name</th><th>Value</th><th>Unit</th></tr><tr><td>P DC</td><td align="right"> 193.33</td><td>W</td></tr><tr><td>U DC</td><td align="right"> 393.22</td><td>V</td></tr><tr><td>I DC</td><td align="right">   0.49</td><td>A</td></tr><tr><td>U AC</td><td align="right"> 229.44</td><td>V</td></tr><tr><td>I AC</td><td align="right">   0.87</td><td>A</td></tr><tr><td>F AC</td><td align="right">  50.01</td><td>Hz</td></tr><tr><td>P AC</td><td align="right"> 177.47</td><td>W</td></tr></tbody></table></td><td class="invisible" valign="top" align="center"></td></tr></tbody></table>
      
      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Aiouh last edited by

        @Aiouh was bekommst du denn wenn du auf der Website mit der rechten Maustaste klickst und Quelltext anzeigen auswählst?

        A 1 Reply Last reply Reply Quote 0
        • A
          Aiouh @Homoran last edited by

          @Homoran

          Rechte Maustaste "view page source", dann bekomme ich was ich zuerst gepostet hatte.
          Bei "Inspect Page" bekomme ich:

          dc57d889-80ca-444a-b61e-b4a71f55ec47-image.png

          (hab noch nicht rausgefunden wie ich das komplett aufklappen und als Text kopieren kann)

          A Homoran 2 Replies Last reply Reply Quote 0
          • A
            Aiouh @Aiouh last edited by Aiouh

            Zu früh gefreut, geht nicht :(, der Parser Adapter sieht nur nur das was unter "page source" gezeigt wird. Und da nutzt das parsen ja Nix

            UncleSam 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Aiouh last edited by Homoran

              @Aiouh sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

              Bei "Inspect Page" bekomme ich:

              das ist ja auch der Inhalt der über js aufbereiteten Seite.

              @Aiouh sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

              Rechte Maustaste "view page source", dann bekomme ich was ich zuerst gepostet hatte.

              das ist der echte Quelltext

              ... dann geht es nicht mit dem parser.

              Du kannst jetzt mal unter events (??) nachsehen, wie diese Werte ausgelesen werden und ggf. diesen Befehl über js absetzen

              oder kannst du das js-script gen.measurements.table.js sehen?

              A 1 Reply Last reply Reply Quote 0
              • UncleSam
                UncleSam Developer @Aiouh last edited by

                @Aiouh ... oder du schaust mal unter "Netzwerk" welche Requests gemacht werden. Wahrscheinlich wirst du in einer der Antworten die Werte finden. Dumm wäre nur, wenn es über WebSocket geht, dann bringt dir der Parser nichts. Für alle anderen Antworten sollte es gehen.

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @UncleSam last edited by

                  @UncleSam sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

                  du schaust mal unter "Netzwerk" welche Requests gemacht werden.

                  Ach ja, so heisst das 😉

                  1 Reply Last reply Reply Quote 0
                  • A
                    Aiouh @Homoran last edited by Aiouh

                    @Homoran @UncleSam

                    js-script gen.measurements.table.js sieht wie folgt aus

                    document.write("<table class='invisible'><tr class='invisible'><th class='invisible'><h3>Inverter</h3></th><th class='invisible'><h3></h3></th></tr><tr class='invisible'><td class='invisible' valign='top' align='center'><table><tr><th>Name</th><th>Value</th><th>Unit</th></tr><tr><td>P DC</td><td align='right'>  72.20</td><td>W</td></tr><tr><td>U DC</td><td align='right'> 221.75</td><td>V</td></tr><tr><td>I DC</td><td align='right'>   0.33</td><td>A</td></tr><tr><td>U AC</td><td align='right'> 231.10</td><td>V</td></tr><tr><td>I AC</td><td align='right'>   0.31</td><td>A</td></tr><tr><td>F AC</td><td align='right'>  50.01</td><td>Hz</td></tr><tr><td>P AC</td><td align='right'>  56.62</td><td>W</td></tr></table></td><td class='invisible' valign='top' align='center'></table></td></tr></table>");
                    

                    da gibt es auch noch script.chart.min.js

                    var Chart = function(s) {
                        function v(a, c, b) {
                            a = A((a - c.graphMin) / (c.steps * c.stepValue), 1, 0);
                            return b * c.steps * a
                        }
                        function x(a, c, b, e) {
                            function h() {
                                g += f;
                                var k = a.animation ? A(d(g), null, 0) : 1;
                                e.clearRect(0, 0, q, u);
                                a.scaleOverlay ? (b(k),
                                c()) : (c(),
                                b(k));
                                if (1 >= g)
                                    D(h);
                                else if ("function" == typeof a.onAnimationComplete)
                                    a.onAnimationComplete()
                            }
                            var f = a.animation ? 1 / A(a.animationSteps, Number.MAX_VALUE, 1) : 1
                              , d = B[a.animationEasing]
                              , g = a.animation ? 0 : 1;
                            "function" !== typeof c && (c = function() {}
                            );
                            D(h)
                        }
                        function C(a, c, b, e, h, f) {
                            var d;
                            a = Math.floor(Math.log(e - h) / Math.LN10);
                            h = Math.floor(h / (1 * Math.pow(10, a))) * Math.pow(10, a);
                            e = Math.ceil(e / (1 * Math.pow(10, a))) * Math.pow(10, a) - h;
                            a = Math.pow(10, a);
                            for (d = Math.round(e / a); d < b || d > c; )
                                a = d < b ? a / 2 : 2 * a,
                                d = Math.round(e / a);
                            c = [];
                            z(f, c, d, h, a);
                            return {
                                steps: d,
                                stepValue: a,
                                graphMin: h,
                                labels: c
                            }
                        }
                        function z(a, c, b, e, h) {
                            if (a)
                                for (var f = 1; f < b + 1; f++)
                                    c.push(E(a, {
                                        value: (e + h * f).toFixed(0 != h % 1 ? h.toString().split(".")[1].length : 0)
                                    }))
                        }
                        function A(a, c, b) {
                            return !isNaN(parseFloat(c)) && isFinite(c) && a > c ? c : !isNaN(parseFloat(b)) && isFinite(b) && a < b ? b : a
                        }
                        function y(a, c) {
                            var b = {}, e;
                            for (e in a)
                                b[e] = a[e];
                            for (e in c)
                                b[e] = c[e];
                            return b
                        }
                        function E(a, c) {
                            var b = !/\W/.test(a) ? F[a] = F[a] || E(document.getElementById(a).innerHTML) : new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" + a.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'") + "');}return p.join('');");
                            return c ? b(c) : b
                        }
                        var r = this
                          , B = {
                            linear: function(a) {
                                return a
                            },
                            easeInQuad: function(a) {
                                return a * a
                            },
                            easeOutQuad: function(a) {
                                return -1 * a * (a - 2)
                            },
                            easeInOutQuad: function(a) {
                                return 1 > (a /= 0.5) ? 0.5 * a * a : -0.5 * (--a * (a - 2) - 1)
                            },
                            easeInCubic: function(a) {
                                return a * a * a
                            },
                            easeOutCubic: function(a) {
                                return 1 * ((a = a / 1 - 1) * a * a + 1)
                            },
                            easeInOutCubic: function(a) {
                                return 1 > (a /= 0.5) ? 0.5 * a * a * a : 0.5 * ((a -= 2) * a * a + 2)
                            },
                            easeInQuart: function(a) {
                                return a * a * a * a
                            },
                            easeOutQuart: function(a) {
                                return -1 * ((a = a / 1 - 1) * a * a * a - 1)
                            },
                            easeInOutQuart: function(a) {
                                return 1 > (a /= 0.5) ? 0.5 * a * a * a * a : -0.5 * ((a -= 2) * a * a * a - 2)
                            },
                            easeInQuint: function(a) {
                                return 1 * (a /= 1) * a * a * a * a
                            },
                            easeOutQuint: function(a) {
                                return 1 * ((a = a / 1 - 1) * a * a * a * a + 1)
                            },
                            easeInOutQuint: function(a) {
                                return 1 > (a /= 0.5) ? 0.5 * a * a * a * a * a : 0.5 * ((a -= 2) * a * a * a * a + 2)
                            },
                            easeInSine: function(a) {
                                return -1 * Math.cos(a / 1 * (Math.PI / 2)) + 1
                            },
                            easeOutSine: function(a) {
                                return 1 * Math.sin(a / 1 * (Math.PI / 2))
                            },
                            easeInOutSine: function(a) {
                                return -0.5 * (Math.cos(Math.PI * a / 1) - 1)
                            },
                            easeInExpo: function(a) {
                                return 0 == a ? 1 : 1 * Math.pow(2, 10 * (a / 1 - 1))
                            },
                            easeOutExpo: function(a) {
                                return 1 == a ? 1 : 1 * (-Math.pow(2, -10 * a / 1) + 1)
                            },
                            easeInOutExpo: function(a) {
                                return 0 == a ? 0 : 1 == a ? 1 : 1 > (a /= 0.5) ? 0.5 * Math.pow(2, 10 * (a - 1)) : 0.5 * (-Math.pow(2, -10 * --a) + 2)
                            },
                            easeInCirc: function(a) {
                                return 1 <= a ? a : -1 * (Math.sqrt(1 - (a /= 1) * a) - 1)
                            },
                            easeOutCirc: function(a) {
                                return 1 * Math.sqrt(1 - (a = a / 1 - 1) * a)
                            },
                            easeInOutCirc: function(a) {
                                return 1 > (a /= 0.5) ? -0.5 * (Math.sqrt(1 - a * a) - 1) : 0.5 * (Math.sqrt(1 - (a -= 2) * a) + 1)
                            },
                            easeInElastic: function(a) {
                                var c = 1.70158
                                  , b = 0
                                  , e = 1;
                                if (0 == a)
                                    return 0;
                                if (1 == (a /= 1))
                                    return 1;
                                b || (b = 0.3);
                                e < Math.abs(1) ? (e = 1,
                                c = b / 4) : c = b / (2 * Math.PI) * Math.asin(1 / e);
                                return -(e * Math.pow(2, 10 * (a -= 1)) * Math.sin((1 * a - c) * 2 * Math.PI / b))
                            },
                            easeOutElastic: function(a) {
                                var c = 1.70158
                                  , b = 0
                                  , e = 1;
                                if (0 == a)
                                    return 0;
                                if (1 == (a /= 1))
                                    return 1;
                                b || (b = 0.3);
                                e < Math.abs(1) ? (e = 1,
                                c = b / 4) : c = b / (2 * Math.PI) * Math.asin(1 / e);
                                return e * Math.pow(2, -10 * a) * Math.sin((1 * a - c) * 2 * Math.PI / b) + 1
                            },
                            easeInOutElastic: function(a) {
                                var c = 1.70158
                                  , b = 0
                                  , e = 1;
                                if (0 == a)
                                    return 0;
                                if (2 == (a /= 0.5))
                                    return 1;
                                b || (b = 1 * 0.3 * 1.5);
                                e < Math.abs(1) ? (e = 1,
                                c = b / 4) : c = b / (2 * Math.PI) * Math.asin(1 / e);
                                return 1 > a ? -0.5 * e * Math.pow(2, 10 * (a -= 1)) * Math.sin((1 * a - c) * 2 * Math.PI / b) : 0.5 * e * Math.pow(2, -10 * (a -= 1)) * Math.sin((1 * a - c) * 2 * Math.PI / b) + 1
                            },
                            easeInBack: function(a) {
                                return 1 * (a /= 1) * a * (2.70158 * a - 1.70158)
                            },
                            easeOutBack: function(a) {
                                return 1 * ((a = a / 1 - 1) * a * (2.70158 * a + 1.70158) + 1)
                            },
                            easeInOutBack: function(a) {
                                var c = 1.70158;
                                return 1 > (a /= 0.5) ? 0.5 * a * a * (((c *= 1.525) + 1) * a - c) : 0.5 * ((a -= 2) * a * (((c *= 1.525) + 1) * a + c) + 2)
                            },
                            easeInBounce: function(a) {
                                return 1 - B.easeOutBounce(1 - a)
                            },
                            easeOutBounce: function(a) {
                                return (a /= 1) < 1 / 2.75 ? 1 * 7.5625 * a * a : a < 2 / 2.75 ? 1 * (7.5625 * (a -= 1.5 / 2.75) * a + 0.75) : a < 2.5 / 2.75 ? 1 * (7.5625 * (a -= 2.25 / 2.75) * a + 0.9375) : 1 * (7.5625 * (a -= 2.625 / 2.75) * a + 0.984375)
                            },
                            easeInOutBounce: function(a) {
                                return 0.5 > a ? 0.5 * B.easeInBounce(2 * a) : 0.5 * B.easeOutBounce(2 * a - 1) + 0.5
                            }
                        }
                          , q = s.canvas.width
                          , u = s.canvas.height;
                        window.devicePixelRatio && (s.canvas.style.width = q + "px",
                        s.canvas.style.height = u + "px",
                        s.canvas.height = u * window.devicePixelRatio,
                        s.canvas.width = q * window.devicePixelRatio,
                        s.scale(window.devicePixelRatio, window.devicePixelRatio));
                        this.PolarArea = function(a, c) {
                            r.PolarArea.defaults = {
                                scaleOverlay: !0,
                                scaleOverride: !1,
                                scaleSteps: null,
                                scaleStepWidth: null,
                                scaleStartValue: null,
                                scaleShowLine: !0,
                                scaleLineColor: "rgba(0,0,0,.1)",
                                scaleLineWidth: 1,
                                scaleShowLabels: !0,
                                scaleLabel: "<%=value%>",
                                scaleFontFamily: "'Arial'",
                                scaleFontSize: 12,
                                scaleFontStyle: "normal",
                                scaleFontColor: "#666",
                                scaleShowLabelBackdrop: !0,
                                scaleBackdropColor: "rgba(255,255,255,0.75)",
                                scaleBackdropPaddingY: 2,
                                scaleBackdropPaddingX: 2,
                                segmentShowStroke: !0,
                                segmentStrokeColor: "#fff",
                                segmentStrokeWidth: 2,
                                animation: !0,
                                animationSteps: 100,
                                animationEasing: "easeOutBounce",
                                animateRotate: !0,
                                animateScale: !1,
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.PolarArea.defaults, c) : r.PolarArea.defaults;
                            return new G(a,b,s)
                        }
                        ;
                        this.Radar = function(a, c) {
                            r.Radar.defaults = {
                                scaleOverlay: !1,
                                scaleOverride: !1,
                                scaleSteps: null,
                                scaleStepWidth: null,
                                scaleStartValue: null,
                                scaleShowLine: !0,
                                scaleLineColor: "rgba(0,0,0,.1)",
                                scaleLineWidth: 1,
                                scaleShowLabels: !1,
                                scaleLabel: "<%=value%>",
                                scaleFontFamily: "'Arial'",
                                scaleFontSize: 12,
                                scaleFontStyle: "normal",
                                scaleFontColor: "#666",
                                scaleShowLabelBackdrop: !0,
                                scaleBackdropColor: "rgba(255,255,255,0.75)",
                                scaleBackdropPaddingY: 2,
                                scaleBackdropPaddingX: 2,
                                angleShowLineOut: !0,
                                angleLineColor: "rgba(0,0,0,.1)",
                                angleLineWidth: 1,
                                pointLabelFontFamily: "'Arial'",
                                pointLabelFontStyle: "normal",
                                pointLabelFontSize: 12,
                                pointLabelFontColor: "#666",
                                pointDot: !0,
                                pointDotRadius: 3,
                                pointDotStrokeWidth: 1,
                                datasetStroke: !0,
                                datasetStrokeWidth: 2,
                                datasetFill: !0,
                                animation: !0,
                                animationSteps: 60,
                                animationEasing: "easeOutQuart",
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.Radar.defaults, c) : r.Radar.defaults;
                            return new H(a,b,s)
                        }
                        ;
                        this.Pie = function(a, c) {
                            r.Pie.defaults = {
                                segmentShowStroke: !0,
                                segmentStrokeColor: "#fff",
                                segmentStrokeWidth: 2,
                                animation: !0,
                                animationSteps: 100,
                                animationEasing: "easeOutBounce",
                                animateRotate: !0,
                                animateScale: !1,
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.Pie.defaults, c) : r.Pie.defaults;
                            return new I(a,b,s)
                        }
                        ;
                        this.Doughnut = function(a, c) {
                            r.Doughnut.defaults = {
                                segmentShowStroke: !0,
                                segmentStrokeColor: "#fff",
                                segmentStrokeWidth: 2,
                                percentageInnerCutout: 50,
                                animation: !0,
                                animationSteps: 100,
                                animationEasing: "easeOutBounce",
                                animateRotate: !0,
                                animateScale: !1,
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.Doughnut.defaults, c) : r.Doughnut.defaults;
                            return new J(a,b,s)
                        }
                        ;
                        this.Line = function(a, c) {
                            r.Line.defaults = {
                                scaleOverlay: !1,
                                scaleOverride: !1,
                                scaleSteps: null,
                                scaleStepWidth: null,
                                scaleStartValue: null,
                                scaleLineColor: "rgba(0,0,0,.1)",
                                scaleLineWidth: 1,
                                scaleShowLabels: !0,
                                scaleLabel: "<%=value%>",
                                scaleFontFamily: "'Arial'",
                                scaleFontSize: 12,
                                scaleFontStyle: "normal",
                                scaleFontColor: "#666",
                                scaleShowGridLines: !0,
                                scaleGridLineColor: "rgba(0,0,0,.05)",
                                scaleGridLineWidth: 1,
                                bezierCurve: !0,
                                pointDot: !0,
                                pointDotRadius: 4,
                                pointDotStrokeWidth: 2,
                                datasetStroke: !0,
                                datasetStrokeWidth: 2,
                                datasetFill: !0,
                                animation: !0,
                                animationSteps: 60,
                                animationEasing: "easeOutQuart",
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.Line.defaults, c) : r.Line.defaults;
                            return new K(a,b,s)
                        }
                        ;
                        this.Bar = function(a, c) {
                            r.Bar.defaults = {
                                scaleOverlay: !1,
                                scaleOverride: !1,
                                scaleSteps: null,
                                scaleStepWidth: null,
                                scaleStartValue: null,
                                scaleLineColor: "rgba(0,0,0,.1)",
                                scaleLineWidth: 1,
                                scaleShowLabels: !0,
                                scaleLabel: "<%=value%>",
                                scaleFontFamily: "'Arial'",
                                scaleFontSize: 12,
                                scaleFontStyle: "normal",
                                scaleFontColor: "#666",
                                scaleShowGridLines: !0,
                                scaleGridLineColor: "rgba(0,0,0,.05)",
                                scaleGridLineWidth: 1,
                                barShowStroke: !0,
                                barStrokeWidth: 2,
                                barValueSpacing: 5,
                                barDatasetSpacing: 1,
                                animation: !0,
                                animationSteps: 60,
                                animationEasing: "easeOutQuart",
                                onAnimationComplete: null
                            };
                            var b = c ? y(r.Bar.defaults, c) : r.Bar.defaults;
                            return new L(a,b,s)
                        }
                        ;
                        var G = function(a, c, b) {
                            var e, h, f, d, g, k, j, l, m;
                            g = Math.min.apply(Math, [q, u]) / 2;
                            g -= Math.max.apply(Math, [0.5 * c.scaleFontSize, 0.5 * c.scaleLineWidth]);
                            d = 2 * c.scaleFontSize;
                            c.scaleShowLabelBackdrop && (d += 2 * c.scaleBackdropPaddingY,
                            g -= 1.5 * c.scaleBackdropPaddingY);
                            l = g;
                            d = d ? d : 5;
                            e = Number.MIN_VALUE;
                            h = Number.MAX_VALUE;
                            for (f = 0; f < a.length; f++)
                                a[f].value > e && (e = a[f].value),
                                a[f].value < h && (h = a[f].value);
                            f = Math.floor(l / (0.66 * d));
                            d = Math.floor(0.5 * (l / d));
                            m = c.scaleShowLabels ? c.scaleLabel : null;
                            c.scaleOverride ? (j = {
                                steps: c.scaleSteps,
                                stepValue: c.scaleStepWidth,
                                graphMin: c.scaleStartValue,
                                labels: []
                            },
                            z(m, j.labels, j.steps, c.scaleStartValue, c.scaleStepWidth)) : j = C(l, f, d, e, h, m);
                            k = g / j.steps;
                            x(c, function() {
                                for (var a = 0; a < j.steps; a++)
                                    if (c.scaleShowLine && (b.beginPath(),
                                    b.arc(q / 2, u / 2, k * (a + 1), 0, 2 * Math.PI, !0),
                                    b.strokeStyle = c.scaleLineColor,
                                    b.lineWidth = c.scaleLineWidth,
                                    b.stroke()),
                                    c.scaleShowLabels) {
                                        b.textAlign = "center";
                                        b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily;
                                        var e = j.labels[a];
                                        if (c.scaleShowLabelBackdrop) {
                                            var d = b.measureText(e).width;
                                            b.fillStyle = c.scaleBackdropColor;
                                            b.beginPath();
                                            b.rect(Math.round(q / 2 - d / 2 - c.scaleBackdropPaddingX), Math.round(u / 2 - k * (a + 1) - 0.5 * c.scaleFontSize - c.scaleBackdropPaddingY), Math.round(d + 2 * c.scaleBackdropPaddingX), Math.round(c.scaleFontSize + 2 * c.scaleBackdropPaddingY));
                                            b.fill()
                                        }
                                        b.textBaseline = "middle";
                                        b.fillStyle = c.scaleFontColor;
                                        b.fillText(e, q / 2, u / 2 - k * (a + 1))
                                    }
                            }, function(e) {
                                var d = -Math.PI / 2
                                  , g = 2 * Math.PI / a.length
                                  , f = 1
                                  , h = 1;
                                c.animation && (c.animateScale && (f = e),
                                c.animateRotate && (h = e));
                                for (e = 0; e < a.length; e++)
                                    b.beginPath(),
                                    b.arc(q / 2, u / 2, f * v(a[e].value, j, k), d, d + h * g, !1),
                                    b.lineTo(q / 2, u / 2),
                                    b.closePath(),
                                    b.fillStyle = a[e].color,
                                    b.fill(),
                                    c.segmentShowStroke && (b.strokeStyle = c.segmentStrokeColor,
                                    b.lineWidth = c.segmentStrokeWidth,
                                    b.stroke()),
                                    d += h * g
                            }, b)
                        }
                          , H = function(a, c, b) {
                            var e, h, f, d, g, k, j, l, m;
                            a.labels || (a.labels = []);
                            g = Math.min.apply(Math, [q, u]) / 2;
                            d = 2 * c.scaleFontSize;
                            for (e = l = 0; e < a.labels.length; e++)
                                b.font = c.pointLabelFontStyle + " " + c.pointLabelFontSize + "px " + c.pointLabelFontFamily,
                                h = b.measureText(a.labels[e]).width,
                                h > l && (l = h);
                            g -= Math.max.apply(Math, [l, 1.5 * (c.pointLabelFontSize / 2)]);
                            g -= c.pointLabelFontSize;
                            l = g = A(g, null, 0);
                            d = d ? d : 5;
                            e = Number.MIN_VALUE;
                            h = Number.MAX_VALUE;
                            for (f = 0; f < a.datasets.length; f++)
                                for (m = 0; m < a.datasets[f].data.length; m++)
                                    a.datasets[f].data[m] > e && (e = a.datasets[f].data[m]),
                                    a.datasets[f].data[m] < h && (h = a.datasets[f].data[m]);
                            f = Math.floor(l / (0.66 * d));
                            d = Math.floor(0.5 * (l / d));
                            m = c.scaleShowLabels ? c.scaleLabel : null;
                            c.scaleOverride ? (j = {
                                steps: c.scaleSteps,
                                stepValue: c.scaleStepWidth,
                                graphMin: c.scaleStartValue,
                                labels: []
                            },
                            z(m, j.labels, j.steps, c.scaleStartValue, c.scaleStepWidth)) : j = C(l, f, d, e, h, m);
                            k = g / j.steps;
                            x(c, function() {
                                var e = 2 * Math.PI / a.datasets[0].data.length;
                                b.save();
                                b.translate(q / 2, u / 2);
                                if (c.angleShowLineOut) {
                                    b.strokeStyle = c.angleLineColor;
                                    b.lineWidth = c.angleLineWidth;
                                    for (var d = 0; d < a.datasets[0].data.length; d++)
                                        b.rotate(e),
                                        b.beginPath(),
                                        b.moveTo(0, 0),
                                        b.lineTo(0, -g),
                                        b.stroke()
                                }
                                for (d = 0; d < j.steps; d++) {
                                    b.beginPath();
                                    if (c.scaleShowLine) {
                                        b.strokeStyle = c.scaleLineColor;
                                        b.lineWidth = c.scaleLineWidth;
                                        b.moveTo(0, -k * (d + 1));
                                        for (var f = 0; f < a.datasets[0].data.length; f++)
                                            b.rotate(e),
                                            b.lineTo(0, -k * (d + 1));
                                        b.closePath();
                                        b.stroke()
                                    }
                                    c.scaleShowLabels && (b.textAlign = "center",
                                    b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily,
                                    b.textBaseline = "middle",
                                    c.scaleShowLabelBackdrop && (f = b.measureText(j.labels[d]).width,
                                    b.fillStyle = c.scaleBackdropColor,
                                    b.beginPath(),
                                    b.rect(Math.round(-f / 2 - c.scaleBackdropPaddingX), Math.round(-k * (d + 1) - 0.5 * c.scaleFontSize - c.scaleBackdropPaddingY), Math.round(f + 2 * c.scaleBackdropPaddingX), Math.round(c.scaleFontSize + 2 * c.scaleBackdropPaddingY)),
                                    b.fill()),
                                    b.fillStyle = c.scaleFontColor,
                                    b.fillText(j.labels[d], 0, -k * (d + 1)))
                                }
                                for (d = 0; d < a.labels.length; d++) {
                                    b.font = c.pointLabelFontStyle + " " + c.pointLabelFontSize + "px " + c.pointLabelFontFamily;
                                    b.fillStyle = c.pointLabelFontColor;
                                    var f = Math.sin(e * d) * (g + c.pointLabelFontSize)
                                      , h = Math.cos(e * d) * (g + c.pointLabelFontSize);
                                    b.textAlign = e * d == Math.PI || 0 == e * d ? "center" : e * d > Math.PI ? "right" : "left";
                                    b.textBaseline = "middle";
                                    b.fillText(a.labels[d], f, -h)
                                }
                                b.restore()
                            }, function(d) {
                                var e = 2 * Math.PI / a.datasets[0].data.length;
                                b.save();
                                b.translate(q / 2, u / 2);
                                for (var g = 0; g < a.datasets.length; g++) {
                                    b.beginPath();
                                    b.moveTo(0, d * -1 * v(a.datasets[g].data[0], j, k));
                                    for (var f = 1; f < a.datasets[g].data.length; f++)
                                        b.rotate(e),
                                        b.lineTo(0, d * -1 * v(a.datasets[g].data[f], j, k));
                                    b.closePath();
                                    b.fillStyle = a.datasets[g].fillColor;
                                    b.strokeStyle = a.datasets[g].strokeColor;
                                    b.lineWidth = c.datasetStrokeWidth;
                                    b.fill();
                                    b.stroke();
                                    if (c.pointDot) {
                                        b.fillStyle = a.datasets[g].pointColor;
                                        b.strokeStyle = a.datasets[g].pointStrokeColor;
                                        b.lineWidth = c.pointDotStrokeWidth;
                                        for (f = 0; f < a.datasets[g].data.length; f++)
                                            b.rotate(e),
                                            b.beginPath(),
                                            b.arc(0, d * -1 * v(a.datasets[g].data[f], j, k), c.pointDotRadius, 2 * Math.PI, !1),
                                            b.fill(),
                                            b.stroke()
                                    }
                                    b.rotate(e)
                                }
                                b.restore()
                            }, b)
                        }
                          , I = function(a, c, b) {
                            for (var e = 0, h = Math.min.apply(Math, [u / 2, q / 2]) - 5, f = 0; f < a.length; f++)
                                e += a[f].value;
                            x(c, null, function(d) {
                                var g = -Math.PI / 2
                                  , f = 1
                                  , j = 1;
                                c.animation && (c.animateScale && (f = d),
                                c.animateRotate && (j = d));
                                for (d = 0; d < a.length; d++) {
                                    var l = j * a[d].value / e * 2 * Math.PI;
                                    b.beginPath();
                                    b.arc(q / 2, u / 2, f * h, g, g + l);
                                    b.lineTo(q / 2, u / 2);
                                    b.closePath();
                                    b.fillStyle = a[d].color;
                                    b.fill();
                                    c.segmentShowStroke && (b.lineWidth = c.segmentStrokeWidth,
                                    b.strokeStyle = c.segmentStrokeColor,
                                    b.stroke());
                                    g += l
                                }
                            }, b)
                        }
                          , J = function(a, c, b) {
                            for (var e = 0, h = Math.min.apply(Math, [u / 2, q / 2]) - 5, f = h * (c.percentageInnerCutout / 100), d = 0; d < a.length; d++)
                                e += a[d].value;
                            x(c, null, function(d) {
                                var k = -Math.PI / 2
                                  , j = 1
                                  , l = 1;
                                c.animation && (c.animateScale && (j = d),
                                c.animateRotate && (l = d));
                                for (d = 0; d < a.length; d++) {
                                    var m = l * a[d].value / e * 2 * Math.PI;
                                    b.beginPath();
                                    b.arc(q / 2, u / 2, j * h, k, k + m, !1);
                                    b.arc(q / 2, u / 2, j * f, k + m, k, !0);
                                    b.closePath();
                                    b.fillStyle = a[d].color;
                                    b.fill();
                                    c.segmentShowStroke && (b.lineWidth = c.segmentStrokeWidth,
                                    b.strokeStyle = c.segmentStrokeColor,
                                    b.stroke());
                                    k += m
                                }
                            }, b)
                        }
                          , K = function(a, c, b) {
                            var e, h, f, d, g, k, j, l, m, t, r, n, p, s = 0;
                            g = u;
                            b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily;
                            t = 1;
                            for (d = 0; d < a.labels.length; d++)
                                e = b.measureText(a.labels[d]).width,
                                t = e > t ? e : t;
                            q / a.labels.length < t ? (s = 45,
                            q / a.labels.length < Math.cos(s) * t ? (s = 90,
                            g -= t) : g -= Math.sin(s) * t) : g -= c.scaleFontSize;
                            d = c.scaleFontSize;
                            g = g - 5 - d;
                            e = Number.MIN_VALUE;
                            h = Number.MAX_VALUE;
                            for (f = 0; f < a.datasets.length; f++)
                                for (l = 0; l < a.datasets[f].data.length; l++)
                                    a.datasets[f].data[l] > e && (e = a.datasets[f].data[l]),
                                    a.datasets[f].data[l] < h && (h = a.datasets[f].data[l]);
                            f = Math.floor(g / (0.66 * d));
                            d = Math.floor(0.5 * (g / d));
                            l = c.scaleShowLabels ? c.scaleLabel : "";
                            c.scaleOverride ? (j = {
                                steps: c.scaleSteps,
                                stepValue: c.scaleStepWidth,
                                graphMin: c.scaleStartValue,
                                labels: []
                            },
                            z(l, j.labels, j.steps, c.scaleStartValue, c.scaleStepWidth)) : j = C(g, f, d, e, h, l);
                            k = Math.floor(g / j.steps);
                            d = 1;
                            if (c.scaleShowLabels) {
                                b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily;
                                for (e = 0; e < j.labels.length; e++)
                                    h = b.measureText(j.labels[e]).width,
                                    d = h > d ? h : d;
                                d += 10
                            }
                            r = q - d - t;
                            m = Math.floor(r / (a.labels.length - 1));
                            n = q - t / 2 - r;
                            p = g + c.scaleFontSize / 2;
                            x(c, function() {
                                b.lineWidth = c.scaleLineWidth;
                                b.strokeStyle = c.scaleLineColor;
                                b.beginPath();
                                b.moveTo(q - t / 2 + 5, p);
                                b.lineTo(q - t / 2 - r - 5, p);
                                b.stroke();
                                0 < s ? (b.save(),
                                b.textAlign = "right") : b.textAlign = "center";
                                b.fillStyle = c.scaleFontColor;
                                for (var d = 0; d < a.labels.length; d++)
                                    b.save(),
                                    0 < s ? (b.translate(n + d * m, p + c.scaleFontSize),
                                    b.rotate(-(s * (Math.PI / 180))),
                                    b.fillText(a.labels[d], 0, 0),
                                    b.restore()) : b.fillText(a.labels[d], n + d * m, p + c.scaleFontSize + 3),
                                    b.beginPath(),
                                    b.moveTo(n + d * m, p + 3),
                                    c.scaleShowGridLines && 0 < d ? (b.lineWidth = c.scaleGridLineWidth,
                                    b.strokeStyle = c.scaleGridLineColor,
                                    b.lineTo(n + d * m, 5)) : b.lineTo(n + d * m, p + 3),
                                    b.stroke();
                                b.lineWidth = c.scaleLineWidth;
                                b.strokeStyle = c.scaleLineColor;
                                b.beginPath();
                                b.moveTo(n, p + 5);
                                b.lineTo(n, 5);
                                b.stroke();
                                b.textAlign = "right";
                                b.textBaseline = "middle";
                                for (d = 0; d < j.steps; d++)
                                    b.beginPath(),
                                    b.moveTo(n - 3, p - (d + 1) * k),
                                    c.scaleShowGridLines ? (b.lineWidth = c.scaleGridLineWidth,
                                    b.strokeStyle = c.scaleGridLineColor,
                                    b.lineTo(n + r + 5, p - (d + 1) * k)) : b.lineTo(n - 0.5, p - (d + 1) * k),
                                    b.stroke(),
                                    c.scaleShowLabels && b.fillText(j.labels[d], n - 8, p - (d + 1) * k)
                            }, function(d) {
                                function e(b, c) {
                                    return p - d * v(a.datasets[b].data[c], j, k)
                                }
                                for (var f = 0; f < a.datasets.length; f++) {
                                    b.strokeStyle = a.datasets[f].strokeColor;
                                    b.lineWidth = c.datasetStrokeWidth;
                                    b.beginPath();
                                    b.moveTo(n, p - d * v(a.datasets[f].data[0], j, k));
                                    for (var g = 1; g < a.datasets[f].data.length; g++)
                                        c.bezierCurve ? b.bezierCurveTo(n + m * (g - 0.5), e(f, g - 1), n + m * (g - 0.5), e(f, g), n + m * g, e(f, g)) : b.lineTo(n + m * g, e(f, g));
                                    b.stroke();
                                    c.datasetFill ? (b.lineTo(n + m * (a.datasets[f].data.length - 1), p),
                                    b.lineTo(n, p),
                                    b.closePath(),
                                    b.fillStyle = a.datasets[f].fillColor,
                                    b.fill()) : b.closePath();
                                    if (c.pointDot) {
                                        b.fillStyle = a.datasets[f].pointColor;
                                        b.strokeStyle = a.datasets[f].pointStrokeColor;
                                        b.lineWidth = c.pointDotStrokeWidth;
                                        for (g = 0; g < a.datasets[f].data.length; g++)
                                            b.beginPath(),
                                            b.arc(n + m * g, p - d * v(a.datasets[f].data[g], j, k), c.pointDotRadius, 0, 2 * Math.PI, !0),
                                            b.fill(),
                                            b.stroke()
                                    }
                                }
                            }, b)
                        }
                          , L = function(a, c, b) {
                            var e, h, f, d, g, k, j, l, m, t, r, n, p, s, w = 0;
                            g = u;
                            b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily;
                            t = 1;
                            for (d = 0; d < a.labels.length; d++)
                                e = b.measureText(a.labels[d]).width,
                                t = e > t ? e : t;
                            q / a.labels.length < t ? (w = 45,
                            q / a.labels.length < Math.cos(w) * t ? (w = 90,
                            g -= t) : g -= Math.sin(w) * t) : g -= c.scaleFontSize;
                            d = c.scaleFontSize;
                            g = g - 5 - d;
                            e = Number.MIN_VALUE;
                            h = Number.MAX_VALUE;
                            for (f = 0; f < a.datasets.length; f++)
                                for (l = 0; l < a.datasets[f].data.length; l++)
                                    a.datasets[f].data[l] > e && (e = a.datasets[f].data[l]),
                                    a.datasets[f].data[l] < h && (h = a.datasets[f].data[l]);
                            f = Math.floor(g / (0.66 * d));
                            d = Math.floor(0.5 * (g / d));
                            l = c.scaleShowLabels ? c.scaleLabel : "";
                            c.scaleOverride ? (j = {
                                steps: c.scaleSteps,
                                stepValue: c.scaleStepWidth,
                                graphMin: c.scaleStartValue,
                                labels: []
                            },
                            z(l, j.labels, j.steps, c.scaleStartValue, c.scaleStepWidth)) : j = C(g, f, d, e, h, l);
                            k = Math.floor(g / j.steps);
                            d = 1;
                            if (c.scaleShowLabels) {
                                b.font = c.scaleFontStyle + " " + c.scaleFontSize + "px " + c.scaleFontFamily;
                                for (e = 0; e < j.labels.length; e++)
                                    h = b.measureText(j.labels[e]).width,
                                    d = h > d ? h : d;
                                d += 10
                            }
                            r = q - d - t;
                            m = Math.floor(r / a.labels.length);
                            s = (m - 2 * c.scaleGridLineWidth - 2 * c.barValueSpacing - (c.barDatasetSpacing * a.datasets.length - 1) - (c.barStrokeWidth / 2 * a.datasets.length - 1)) / a.datasets.length;
                            n = q - t / 2 - r;
                            p = g + c.scaleFontSize / 2;
                            x(c, function() {
                                b.lineWidth = c.scaleLineWidth;
                                b.strokeStyle = c.scaleLineColor;
                                b.beginPath();
                                b.moveTo(q - t / 2 + 5, p);
                                b.lineTo(q - t / 2 - r - 5, p);
                                b.stroke();
                                0 < w ? (b.save(),
                                b.textAlign = "right") : b.textAlign = "center";
                                b.fillStyle = c.scaleFontColor;
                                for (var d = 0; d < a.labels.length; d++)
                                    b.save(),
                                    0 < w ? (b.translate(n + d * m, p + c.scaleFontSize),
                                    b.rotate(-(w * (Math.PI / 180))),
                                    b.fillText(a.labels[d], 0, 0),
                                    b.restore()) : b.fillText(a.labels[d], n + d * m + m / 2, p + c.scaleFontSize + 3),
                                    b.beginPath(),
                                    b.moveTo(n + (d + 1) * m, p + 3),
                                    b.lineWidth = c.scaleGridLineWidth,
                                    b.strokeStyle = c.scaleGridLineColor,
                                    b.lineTo(n + (d + 1) * m, 5),
                                    b.stroke();
                                b.lineWidth = c.scaleLineWidth;
                                b.strokeStyle = c.scaleLineColor;
                                b.beginPath();
                                b.moveTo(n, p + 5);
                                b.lineTo(n, 5);
                                b.stroke();
                                b.textAlign = "right";
                                b.textBaseline = "middle";
                                for (d = 0; d < j.steps; d++)
                                    b.beginPath(),
                                    b.moveTo(n - 3, p - (d + 1) * k),
                                    c.scaleShowGridLines ? (b.lineWidth = c.scaleGridLineWidth,
                                    b.strokeStyle = c.scaleGridLineColor,
                                    b.lineTo(n + r + 5, p - (d + 1) * k)) : b.lineTo(n - 0.5, p - (d + 1) * k),
                                    b.stroke(),
                                    c.scaleShowLabels && b.fillText(j.labels[d], n - 8, p - (d + 1) * k)
                            }, function(d) {
                                b.lineWidth = c.barStrokeWidth;
                                for (var e = 0; e < a.datasets.length; e++) {
                                    b.fillStyle = a.datasets[e].fillColor;
                                    b.strokeStyle = a.datasets[e].strokeColor;
                                    for (var f = 0; f < a.datasets[e].data.length; f++) {
                                        var g = n + c.barValueSpacing + m * f + s * e + c.barDatasetSpacing * e + c.barStrokeWidth * e;
                                        b.beginPath();
                                        b.moveTo(g, p);
                                        b.lineTo(g, p - d * v(a.datasets[e].data[f], j, k) + c.barStrokeWidth / 2);
                                        b.lineTo(g + s, p - d * v(a.datasets[e].data[f], j, k) + c.barStrokeWidth / 2);
                                        b.lineTo(g + s, p);
                                        c.barShowStroke && b.stroke();
                                        b.closePath();
                                        b.fill()
                                    }
                                }
                            }, b)
                        }
                          , D = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(a) {
                            window.setTimeout(a, 1E3 / 60)
                        }
                          , F = {}
                    };
                    
                    

                    Unter Network siehts so aus
                    c3bdd967-595c-4645-8dc4-bb55cc391b15-image.png

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @Aiouh last edited by Homoran

                      @Aiouh sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

                      js-script gen.measurements.table.js sieht wie folgt aus

                      wenn sich das von dem ioBroker Server so aufrufen ließe, könnte man wahrscheinlich die Werte auslesen.

                      Aber da ist @UncleSam der viel bessere Ansprechpartner

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        Aiouh @Homoran last edited by

                        @UncleSam
                        Darf ich Dich dazu kurz nochmal befragen ob ich hier eine Chance habe weiter zu kommen oder ob das eine Sackgasse ist ? Danke Dir

                        UncleSam 1 Reply Last reply Reply Quote 0
                        • UncleSam
                          UncleSam Developer @Aiouh last edited by

                          @aiouh sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

                          @UncleSam
                          Darf ich Dich dazu kurz nochmal befragen ob ich hier eine Chance habe weiter zu kommen oder ob das eine Sackgasse ist ? Danke Dir

                          Ja klar.

                          @homoran sagte in Parser Adapter Refusol Inverter - der richtige Weg?:

                          Aber da ist @UncleSam der viel bessere Ansprechpartner

                          Vielen Dank für die 🌻🥀🌻...

                          Aber eigentlich hat es @Homoran schon geschrieben: du musst einfach die Datei gen.measurements.table.js parsen. Wenn du auf den Dateinamen klickst, kannst du sehen, wie die gesamte URL lautet (auf der rechten Seite steht zu oberst "General" > "Request URL"). Diese URL kannst du dann im Parser Adapter verwenden um die Werte rauszuparsen.

                          Du hast ja jeweils drei Werte auf einer Zeile: <tr><td>U DC</td><td align='right'> 221.75</td><td>V</td></tr>
                          Nach dem ersten musst du suchen, den zweiten verwenden und den dritten kannst du eigentlich ignorieren (da der eh fix ist).

                          Für obiges Beispiel müsste also das funktionieren: U DC.+?<td.+?>\s*([\d.]+)\s*<
                          Siehe hier: https://regex101.com/r/CAi1gr/1

                          A 1 Reply Last reply Reply Quote 1
                          • A
                            Aiouh @UncleSam last edited by

                            @unclesam Perfekt, Vielen Dank auch dass Du mir gleich das RegEx mundgerecht erstellt hast. Damit kann ich auch gleich ein paar andere Fragestellungen erledingen 👍

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

                            Support us

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

                            803
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            parser adapter refusol
                            3
                            14
                            628
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo