Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter PoolControl

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    859

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.0k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    942

Test Adapter PoolControl

Geplant Angeheftet Gesperrt Verschoben Tester
testerpoolpoolcontrolsolar
436 Beiträge 14 Kommentatoren 31.2k Aufrufe 14 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D DennisMenger
    • solar.active
    • solar.extended.active
    • analytics.insights.solar.results.solar_ran_today

    solar.active = habe ich nicht (oder meintest du solar-control-active, der ist true
    solar.extended.active = jetzt false (seit 17:05 Uhr) war heute definitiv auch auf true
    analytics.insights.solar.results.solar_ran_today = false

    Solar wurde auch definitiv in den letzten beiden Tagen jeweils eingeschaltet durch den Adapter.

    DasBo1975D Offline
    DasBo1975D Offline
    DasBo1975
    Developer
    schrieb am zuletzt editiert von
    #383

    @DennisMenger sagte:

    • solar.active
    • solar.extended.active
    • analytics.insights.solar.results.solar_ran_today

    solar.active = habe ich nicht (oder meintest du solar-control-active, der ist true
    solar.extended.active = jetzt false (seit 17:05 Uhr) war heute definitiv auch auf true
    analytics.insights.solar.results.solar_ran_today = false

    Solar wurde auch definitiv in den letzten beiden Tagen jeweils eingeschaltet durch den Adapter.

    entschuldige, ich meinte sorar.request_active

    aber ich bin dran, das gerade zu überprüfen

    • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

    • Einfach macht aus einem Problem keine Lösung

    • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

    1 Antwort Letzte Antwort
    0
    • DasBo1975D Offline
      DasBo1975D Offline
      DasBo1975
      Developer
      schrieb am zuletzt editiert von
      #384

      Moin zusammen 🙂

      ich habe heute die Version 1.3.7 nachgeschoben, nachdem mich ein Hinweis von Dennis auf einen Fehler in den Solar Insights aufmerksam gemacht hat.

      Bei der Auswertung wurde für Standard-Solar ein falscher Datenpunkt verwendet, wodurch es in bestimmten Konstellationen passieren konnte, dass „Solar lief heute“ nicht korrekt erkannt wurde.

      Das habe ich jetzt korrigiert, so dass sowohl normales Solar als auch Solar Extended sauber berücksichtigt werden.

      Zusätzlich habe ich noch eine kleine Verbesserung im photovoltaicHelper mit reingenommen (Rundung im Status-Text + Timer-Umstellung).

      Sorry für die erneute Version in kurzer Zeit, aber das wollte ich sauber geradeziehen 👍

      • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

      • Einfach macht aus einem Problem keine Lösung

      • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

      1 Antwort Letzte Antwort
      0
      • D Online
        D Online
        DennisMenger
        schrieb am zuletzt editiert von
        #385

        Super, vielen Dank für die schnelle Reaktion. Ich werde berichten.

        1 Antwort Letzte Antwort
        1
        • H Offline
          H Offline
          homecineplexx
          schrieb am zuletzt editiert von
          #386

          Nachdem ich nächstes Wochenende auch erstmals unseren Pool in Betrieb nehmen werde, werd ich diesen Adapter ausprobieren. Mal schauen wie der mit meinen Geräten zusammenspielen kann/wird.

          DasBo1975D 1 Antwort Letzte Antwort
          0
          • H homecineplexx

            Nachdem ich nächstes Wochenende auch erstmals unseren Pool in Betrieb nehmen werde, werd ich diesen Adapter ausprobieren. Mal schauen wie der mit meinen Geräten zusammenspielen kann/wird.

            DasBo1975D Offline
            DasBo1975D Offline
            DasBo1975
            Developer
            schrieb am zuletzt editiert von
            #387

            @homecineplexx sagte:

            Nachdem ich nächstes Wochenende auch erstmals unseren Pool in Betrieb nehmen werde, werd ich diesen Adapter ausprobieren. Mal schauen wie der mit meinen Geräten zusammenspielen kann/wird.

            Freut mich zu hören, dass du den Adapter testen möchtest 🙂
            Wenn dir etwas auffällt oder du Fragen hast, immer gerne her damit.

            Gib gerne auch kurz Rückmeldung, wie gut er mit deinen Geräten zusammenspielt – das hilft mir enorm bei der Weiterentwicklung.

            • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

            • Einfach macht aus einem Problem keine Lösung

            • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

            1 Antwort Letzte Antwort
            1
            • D Online
              D Online
              DennisMenger
              schrieb am zuletzt editiert von
              #388

              Habe heute morgen gleich die neue Version installiert. Solar ist heute auch wieder definitiv gelaufen. Datenpunkt solar-ran-today steht auf true, Datenpunkt active-minutes-today steht aber weiter auf 0. Letzter Zeitstempel vom 20.04.2026.

              DasBo1975D 1 Antwort Letzte Antwort
              0
              • D DennisMenger

                Habe heute morgen gleich die neue Version installiert. Solar ist heute auch wieder definitiv gelaufen. Datenpunkt solar-ran-today steht auf true, Datenpunkt active-minutes-today steht aber weiter auf 0. Letzter Zeitstempel vom 20.04.2026.

                DasBo1975D Offline
                DasBo1975D Offline
                DasBo1975
                Developer
                schrieb am zuletzt editiert von
                #389

                @DennisMenger sagte:

                Habe heute morgen gleich die neue Version installiert. Solar ist heute auch wieder definitiv gelaufen. Datenpunkt solar-ran-today steht auf true, Datenpunkt active-minutes-today steht aber weiter auf 0. Letzter Zeitstempel vom 20.04.2026.

                Moin. Ich danke dir für die Info. Ich kann das bei mir leider nicht nachvollziehen. Bei mir wird der Datenpunkt gefüllt. Ich werde das morgen spätestens am Wochenende noch mal genauer unter die Lupe nehmen. Vielleicht kannst du mir einmal Screenshots von allen Daten punkten schicken aus dem Solar Inside Bereich.

                • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                • Einfach macht aus einem Problem keine Lösung

                • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                1 Antwort Letzte Antwort
                0
                • D Online
                  D Online
                  DennisMenger
                  schrieb am zuletzt editiert von
                  #390

                  Guten Morgen. Na klar schicke ich mal die Screenshots.

                  Results results.png
                  Logbooklogbook.png
                  Inputs inputs.png
                  Calculation calculation.png
                  Debug debug.png

                  DasBo1975D 1 Antwort Letzte Antwort
                  0
                  • D DennisMenger

                    Guten Morgen. Na klar schicke ich mal die Screenshots.

                    Results results.png
                    Logbooklogbook.png
                    Inputs inputs.png
                    Calculation calculation.png
                    Debug debug.png

                    DasBo1975D Offline
                    DasBo1975D Offline
                    DasBo1975
                    Developer
                    schrieb am zuletzt editiert von
                    #391

                    @DennisMenger sagte:

                    Guten Morgen. Na klar schicke ich mal die Screenshots.

                    Hallo Dennis,

                    vielen Dank nochmal für deine Hinweise und dein genaues Hinschauen – das hilft mir wirklich enorm weiter 👍

                    Ich habe mir das Ganze inzwischen nochmal genauer angesehen und dabei aktuell zwei Fehler identifiziert. Die werde ich heute Abend bzw. spätestens morgen sauber beheben und dann mit einer neuen Version veröffentlichen.

                    Bis dahin bitte ich noch um ein wenig Geduld.

                    Danke dir nochmal für deine Unterstützung und dein Feedback!

                    Viele Grüße
                    Dirk

                    • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                    • Einfach macht aus einem Problem keine Lösung

                    • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                    1 Antwort Letzte Antwort
                    0
                    • DasBo1975D Offline
                      DasBo1975D Offline
                      DasBo1975
                      Developer
                      schrieb am zuletzt editiert von
                      #392

                      ich habe heute die Version 1.3.9 nachgeschoben.

                      Dabei habe ich mehrere Fehler im Solar-Logbook und im Solar-Insights-Bereich behoben. Unter anderem wurden teilweise Logeinträge gar nicht erstellt bzw. doppelt geschrieben, außerdem gab es Probleme bei Zeitstempeln und der Tagesauswertung (z. B. solar_ran_today und active_minutes_today). Diese Punkte sollten jetzt wieder sauber und nachvollziehbar funktionieren.

                      Zusätzlich habe ich die Stabilität des Loggings verbessert und die Verarbeitung der Wettertexte optimiert.

                      Vielen Dank an Dennis für die hilfreichen Hinweise und das genaue Mitprüfen 👍

                      • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                      • Einfach macht aus einem Problem keine Lösung

                      • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                      1 Antwort Letzte Antwort
                      0
                      • DasBo1975D Offline
                        DasBo1975D Offline
                        DasBo1975
                        Developer
                        schrieb am zuletzt editiert von
                        #393

                        Moin ihr alle,

                        ich habe mir heute mal die Zeit genommen, ein bisschen mit den Daten aus den Datenpunkten der Solarauswertung zu spielen und habe mir daraus eine kleine Solar-COP-Auswertung in VIS mit einem HTML-Widget gebastelt.

                        Ich wollte euch einfach mal daran teilhaben lassen, wie sowas aussehen kann 🙂

                        Die Daten kommen komplett aus den vorhandenen States (z. B. Laufzeit, geschätzter Solarertrag, Leistung, Temperaturen usw.), daraus habe ich mir eine kompakte Übersicht gebaut mit:

                        • Tagesstatus (ob Solar überhaupt aktiv war)
                        • Laufzeit in Minuten
                        • Solarertrag und Spitzenleistung
                        • COP-/Effizienz-Bewertung als kleines Sternesystem
                        • und einem Logbuch mit den Tagesereignissen

                        Das Ganze läuft rein über ein HTML-Widget und wertet die JSON- bzw. Text-Datenpunkte aus, die der Adapter sowieso schon liefert.

                        Die Kombination aus:

                        • kompakter Zusammenfassung oben
                        • farblicher Bewertung
                        • und Logbuch darunter

                        macht es für mich deutlich übersichtlicher als einzelne States durchzuklicken.

                        Aktuell ist bei mir noch nicht viel zu sehen, weil:

                        • es mitten in der Nacht ist 😄
                        • und die Solarerträge momentan wegen dem Wetter eh ziemlich mau sind

                        Falls jemand Interesse an dem HTML-Code für das Widget hat, einfach kurz Bescheid sagen – ich kann das gerne teilen.

                        Feedback oder Ideen sind natürlich auch willkommen!

                        Solar COP.png

                        • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                        • Einfach macht aus einem Problem keine Lösung

                        • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                        1 Antwort Letzte Antwort
                        0
                        • D Online
                          D Online
                          DennisMenger
                          schrieb am zuletzt editiert von
                          #394

                          Ich hätte da grundsätzlich Interesse dran. Das wäre klasse, wenn du das teilen würdest.

                          PS: Solarauswertung scheint jetzt auch bei mir zu funktionieren.

                          DasBo1975D 1 Antwort Letzte Antwort
                          0
                          • D DennisMenger

                            Ich hätte da grundsätzlich Interesse dran. Das wäre klasse, wenn du das teilen würdest.

                            PS: Solarauswertung scheint jetzt auch bei mir zu funktionieren.

                            DasBo1975D Offline
                            DasBo1975D Offline
                            DasBo1975
                            Developer
                            schrieb am zuletzt editiert von
                            #395

                            @DennisMenger

                            Freut mich zu hören, dass die Solarauswertung bei dir jetzt funktioniert. Den HTML Code für das Widget schicke ich in den nächsten Tagen.

                            • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                            • Einfach macht aus einem Problem keine Lösung

                            • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                            1 Antwort Letzte Antwort
                            0
                            • DasBo1975D Offline
                              DasBo1975D Offline
                              DasBo1975
                              Developer
                              schrieb am zuletzt editiert von
                              #396

                              @dennismenger

                              Hier mal der html Code für das html widget.

                              <div style="width:100%;height:100%;box-sizing:border-box;font-family:Arial,sans-serif;color:white;overflow:hidden;">
                              
                                <div id="solarCopHeaderV5" style="
                                  width:100%;
                                  box-sizing:border-box;
                                  padding:7px 10px;
                                  margin-bottom:7px;
                                  background:rgba(5,20,32,.94);
                                  border:1px solid rgba(0,216,255,.45);
                                  border-radius:8px;
                                  color:#00d8ff;
                                  font-weight:bold;
                                  font-size:15px;
                                  letter-spacing:.3px;
                                ">
                                  Solar COP Auswertung
                                  <div id="solarCopStatsV5" style="
                                    margin-top:5px;
                                    color:#ffffff;
                                    font-weight:normal;
                                    font-size:10px;
                                    line-height:1.35;
                                  ">lade Tageswerte...</div>
                                </div>
                              
                                <div id="solarLogbookV5" style="
                                  width:100%;
                                  height:calc(100% - 76px);
                                  overflow-y:auto;
                                  padding:0 4px 8px 4px;
                                  box-sizing:border-box;
                                ">
                                  lade...
                                </div>
                              
                              </div>
                              
                              <script>
                              (function () {
                                var baseLog = "poolcontrol.0.analytics.insights.solar.logbook";
                                var dpText = baseLog + ".day_log_text";
                                var baseResults = "poolcontrol.0.analytics.insights.solar.results";
                              
                                var targetId = "solarLogbookV5";
                                var statsId = "solarCopStatsV5";
                              
                                function esc(t) {
                                  t = String(t || "");
                                  t = t.replace(/&/g, "&amp;");
                                  t = t.replace(/</g, "&lt;");
                                  t = t.replace(/>/g, "&gt;");
                                  return t;
                                }
                              
                                function val(states, id, fallback) {
                                  if (states && states[id] && states[id].val !== undefined && states[id].val !== null && states[id].val !== "") {
                                    return states[id].val;
                                  }
                                  return fallback;
                                }
                              
                                function cleanNumber(v, fallback) {
                                  if (v === null || v === undefined) return fallback;
                              
                                  v = String(v).trim();
                              
                                  if (v === "" || v === "(null)" || v === "null" || v === "undefined" || v === "$null") {
                                    return fallback;
                                  }
                              
                                  v = v.replace(",", ".").replace(/[^\d.-]/g, "");
                                  var n = parseFloat(v);
                              
                                  if (isNaN(n)) return fallback;
                                  return n;
                                }
                              
                                function formatNumber(n, d) {
                                  n = cleanNumber(n, 0);
                                  return n.toFixed(d).replace(".", ",");
                                }
                              
                                function getDeltaColor(delta) {
                                  if (delta === null) return "#9fb3c8";
                                  if (delta < 0) return "#ff5c5c";
                                  if (delta <= 1.5) return "#ffb13b";
                                  return "#00ff88";
                                }
                              
                                function getColor(text) {
                                  if (text.indexOf("nicht gelaufen") !== -1 || text.indexOf("kein sinnvoller") !== -1) return "#ffb13b";
                                  if (text.indexOf("Fehler") !== -1 || text.indexOf("Warnung") !== -1) return "#ff5c5c";
                                  if (text.indexOf("OK") !== -1 || text.indexOf("gut") !== -1 || text.indexOf("gelaufen") !== -1) return "#00ff88";
                                  return "#00d8ff";
                                }
                              
                                function calcCopScore(min, cop) {
                                  if (min <= 0 || cop === null || cop <= 0) return 0;
                                  if (cop < 2) return 1;
                                  if (cop < 4) return 2;
                                  if (cop < 6) return 3;
                                  if (cop < 8) return 4;
                                  return 5;
                                }
                              
                                function stars(score) {
                                  var s = "";
                                  var i;
                                  var activeColor = score >= 4 ? "#00ff88" : "#ffb13b";
                              
                                  for (i = 1; i <= 5; i++) {
                                    if (i <= score) {
                                      s += "<span style='color:" + activeColor + ";'>★</span>";
                                    } else {
                                      s += "<span style='color:#555;'>☆</span>";
                                    }
                                  }
                              
                                  return s;
                                }
                              
                                function renderStats(states) {
                                  var el = document.getElementById(statsId);
                                  if (!el) return;
                              
                                  var min = cleanNumber(val(states, baseResults + ".active_minutes_today", 0), 0);
                                  var kwh = cleanNumber(val(states, baseResults + ".estimated_gain_today_kwh", 0), 0);
                                  var peak = cleanNumber(val(states, baseResults + ".peak_power_today_w", 0), 0);
                                  var copRaw = cleanNumber(val(states, baseResults + ".estimated_efficiency_ratio", null), null);
                              
                                  var ran = val(states, baseResults + ".solar_ran_today", false);
                                  var effective = val(states, baseResults + ".solar_effective_now", false);
                                  var state = val(states, baseResults + ".solar_gain_state", "no_data");
                              
                                  var collector = cleanNumber(val(states, baseResults + ".collector_temp_used", "-"), null);
                                  var delta = cleanNumber(val(states, baseResults + ".delta_t_used", "-"), null);
                                  var deltaColor = getDeltaColor(delta);
                              
                                  var cop = null;
                                  var copText = "-";
                                  var copColor = "#9fb3c8";
                              
                                  if (min > 0 && copRaw !== null && copRaw > 0) {
                                    cop = copRaw;
                                    copText = formatNumber(cop, 2);
                                    copColor = cop >= 6 ? "#00ff88" : (cop >= 2 ? "#ffb13b" : "#ff5c5c");
                                  }
                              
                                  var statusText = "Heute: keine Aktivität";
                                  var statusColor = "#ffb13b";
                              
                                  if (ran === true || ran === "true" || min > 0) {
                                    statusText = "Heute: Solar war aktiv";
                                    statusColor = "#00ff88";
                                  }
                              
                                  if (effective === true || effective === "true") {
                                    statusText = "Solar aktuell wirksam";
                                    statusColor = "#00ff88";
                                  }
                              
                                  var kwhColor = kwh > 0 ? "#00ff88" : "#ffb13b";
                                  var score = calcCopScore(min, cop);
                                  var scoreColor = score >= 4 ? "#00ff88" : (score >= 2 ? "#ffb13b" : "#9fb3c8");
                              
                                  el.innerHTML =
                                    "<span style='color:" + statusColor + ";font-weight:bold;'>" + esc(statusText) + "</span>"
                                    + " &nbsp; | &nbsp; COP: <b style='color:" + copColor + ";'>" + esc(copText) + "</b>"
                                    + " &nbsp; | &nbsp; COP-Score: <b style='color:" + scoreColor + ";letter-spacing:1px;'>"
                                    + stars(score) + " (" + score + "/5)</b>"
                                    + " &nbsp; | &nbsp; Laufzeit: <b>" + esc(formatNumber(min, 0)) + " min</b>"
                                    + " &nbsp; | &nbsp; Solarertrag: <b style='color:" + kwhColor + ";'>" + esc(formatNumber(kwh, 2)) + " kWh</b>"
                                    + " &nbsp; | &nbsp; Solarspitze: <b>" + esc(formatNumber(peak, 0)) + " W</b>"
                                    + "<br>"
                                    + "Status: <b>" + esc(state) + "</b>"
                                    + " &nbsp; | &nbsp; Kollektor: <b>" + esc(collector === null ? "-" : formatNumber(collector, 1)) + " °C</b>"
                                    + " &nbsp; | &nbsp; ΔT: <b style='color:" + deltaColor + ";'>" + esc(delta === null ? "-" : formatNumber(delta, 1)) + " K</b>";
                                }
                              
                                function renderLog(raw) {
                                  var box = document.getElementById(targetId);
                                  if (!box) return;
                              
                                  if (!raw || raw === "undefined" || raw === "null" || raw === "$null") {
                                    box.innerHTML = "<div style='color:#ffb13b;padding:10px;font-size:10px;'>Keine Logbuchdaten vorhanden.</div>";
                                    return;
                                  }
                              
                                  var lines = String(raw).split(/\r?\n/).reverse();
                                  var html = "";
                                  var i;
                              
                                  for (i = 0; i < lines.length; i++) {
                                    var line = lines[i].trim();
                                    if (!line) continue;
                              
                                    var m = line.match(/^([0-9]{2}:[0-9]{2})\s*-\s*(.*)$/);
                                    var time = "";
                                    var text = line;
                              
                                    if (m) {
                                      time = m[1];
                                      text = m[2];
                                    }
                              
                                    var firstSentence = text.split(". ")[0] || text;
                                    if (firstSentence.length > 120) {
                                      firstSentence = firstSentence.substring(0, 120) + "...";
                                    }
                              
                                    var color = getColor(text);
                                    var bg = "rgba(0,30,50,.65)";
                                    var border = "rgba(0,170,255,.35)";
                              
                                    if (i < 3) {
                                      bg = "rgba(0,50,80,.82)";
                                      border = color;
                                    }
                              
                                    html += ""
                                      + "<div style='display:grid;grid-template-columns:54px 1fr;gap:8px;border:1px solid " + border + ";border-radius:8px;padding:6px 8px;margin-bottom:7px;background:" + bg + ";box-shadow:0 0 8px rgba(0,0,0,.35);'>"
                                      +   "<div style='color:" + color + ";font-weight:bold;font-size:10px;white-space:nowrap;'>" + esc(time) + "</div>"
                                      +   "<div style='color:#ffffff;font-size:10px;line-height:1.28;'>"
                                      +     "<div style='font-weight:bold;color:#ffffff;margin-bottom:2px;'>" + esc(firstSentence) + "</div>"
                                      +     "<div style='opacity:.72;'>" + esc(text) + "</div>"
                                      +   "</div>"
                                      + "</div>";
                                  }
                              
                                  box.innerHTML = html;
                                }
                              
                                function refresh() {
                                  vis.conn.getStates(baseLog + ".*", function (errLog, logStates) {
                                    var raw = "";
                              
                                    if (!errLog && logStates && logStates[dpText]) {
                                      raw = logStates[dpText].val;
                                    }
                              
                                    renderLog(raw);
                                  });
                              
                                  vis.conn.getStates(baseResults + ".*", function (errRes, resultStates) {
                                    renderStats(resultStates || {});
                                  });
                                }
                              
                                function startWhenReady() {
                                  if (typeof vis !== "undefined" && vis.conn && vis.conn.getStates) {
                                    refresh();
                                    setInterval(refresh, 60000);
                                  } else {
                                    setTimeout(startWhenReady, 500);
                                  }
                                }
                              
                                startWhenReady();
                              })();
                              </script>
                              
                              • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                              • Einfach macht aus einem Problem keine Lösung

                              • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                              1 Antwort Letzte Antwort
                              0
                              • D Online
                                D Online
                                DennisMenger
                                schrieb am zuletzt editiert von
                                #397

                                Vielen Dank, werde ich testen

                                1 Antwort Letzte Antwort
                                1
                                • DasBo1975D Offline
                                  DasBo1975D Offline
                                  DasBo1975
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #398

                                  Mit der Version 1.3.10 habe ich einige größere Erweiterungen und Verbesserungen rund um die Photovoltaik-Integration umgesetzt.

                                  ✨ Neu: Photovoltaic Insights

                                  Ich habe einen neuen Analysebereich analytics.insights.photovoltaic eingeführt.

                                  Damit werte ich jetzt aus:

                                  wie lange die Pumpe durch PV-Überschuss gelaufen ist
                                  wie viel Energie dabei genutzt wurde
                                  und welche Einsparung sich daraus ungefähr ergibt

                                  Dazu gibt es:

                                  einen neuen Helper (photovoltaicInsightsHelper)
                                  eine eigene State-Struktur (Inputs, Calculation, Results, Debug)
                                  sowie Zusammenfassungen als Text, JSON und HTML

                                  Der Bereich ist vollständig in das bestehende i18n-System integriert.

                                  🔧 Verbesserung: Active Helper Handling

                                  Ich habe das Handling von pump.active_helper vereinheitlicht.

                                  Folgende Helper unterstützen das jetzt sauber:

                                  photovoltaicHelper
                                  solarHelper
                                  solarExtendedHelper

                                  Bisher haben einige dieser Helper den Status nicht gesetzt, wenn sie die Pumpe gesteuert haben.
                                  Das habe ich jetzt vereinheitlicht.

                                  Jeder Helper:

                                  setzt sich selbst als aktiven Helper, wenn er die Pumpe steuert
                                  gibt die Kontrolle wieder frei, wenn er fertig ist
                                  überschreibt keine anderen aktiven Helper

                                  Zusätzlich kann der Datenpunkt pump.active_helper jetzt auch sehr gut für Visualisierungen genutzt werden,
                                  um direkt zu sehen, welcher Helper aktuell die Pumpe steuert und warum sie läuft.

                                  Das sorgt für eine saubere Prioritätslogik und verhindert Konflikte zwischen den Helpern.

                                  🧠 Verbesserung: PV-Laufzeit-Auswertung

                                  Die PV-Laufzeit wird jetzt nur noch gezählt, wenn:

                                  tatsächlich PV-Überschuss aktiv ist
                                  und der photovoltaicHelper die Pumpe auch wirklich steuert

                                  Dadurch sind die Werte für Laufzeit, Energie und Einsparung deutlich genauer.

                                  🐛 Fix: PV-Umwälzlogik

                                  Ich habe einen Fehler behoben, bei dem die Pumpe gestoppt wurde, obwohl
                                  photovoltaic.ignore_on_circulation = false gesetzt war.

                                  Die Prüfung der Umwälzmenge greift jetzt nur noch, wenn diese Option auch wirklich aktiviert ist.

                                  • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                                  • Einfach macht aus einem Problem keine Lösung

                                  • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                                  1 Antwort Letzte Antwort
                                  0
                                  • DasBo1975D Offline
                                    DasBo1975D Offline
                                    DasBo1975
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #399

                                    Hallo zusammen,

                                    ich habe soeben die Version 1.3.11 veröffentlicht.

                                    Die Version ist diesmal relativ schnell nach der letzten erschienen, weil sich ein Fehler in der Solarsteuerung eingeschlichen hatte.
                                    Konkret haben sich solarHelper und solarExtendedHelper beim Datenpunkt für die Sprachausgabe (speech.solar_active) gegenseitig beeinflusst. Im ungünstigsten Fall führte das dazu, dass die Sprachausgabe minütlich zwischen „eingeschaltet“ und „beendet“ gewechselt hat.

                                    Das Verhalten ist jetzt korrigiert. Die beiden Solarmodi sind sauber voneinander getrennt und beeinflussen sich nicht mehr gegenseitig. Die Sprachausgabe arbeitet damit wieder stabil.

                                    Da ich ohnehin am Code war, habe ich zusätzlich zwei größere Funktionen integriert, die ich ohnehin als nächste Schritte geplant hatte:

                                    Neu: pH-Auswertung (chemistry.ph)

                                    • Unterstützung für manuelle Eingabe und externe Datenpunkte
                                    • Berücksichtigung des Messortes (Pool, Messstrecke etc.)
                                    • Plausibilitätsprüfung und Statusbewertung
                                    • Verständliche Handlungsempfehlungen (keine automatische Dosierung)
                                    • Optionaler Mischlauf mit sauberem Pumpen-Handling
                                    • Erste Historienfunktionen

                                    Neu: TDS-Auswertung (chemistry.tds)

                                    • Unterstützung für manuelle Eingabe und externe Datenpunkte
                                    • Trendanalyse über 24h, 7 Tage und 30 Tage
                                    • Referenzwert (Startwert) zur Bewertung der Wasserentwicklung
                                    • Bewertung auf Basis von Trend, Absolutwert und Veränderung
                                    • Speicherung von Messwerten für die Trendberechnung
                                    • Ausgaben als Text, JSON und HTML für spätere Visualisierung

                                    Wie immer gilt:
                                    Das Ganze ist bewusst erstmal ohne automatische Chemie-Steuerung umgesetzt. Fokus liegt auf sauberer Auswertung und nachvollziehbaren Hinweisen.

                                    Falls euch beim Testen noch etwas auffällt oder ihr Ideen habt, gerne melden 🙂

                                    Viele Grüße
                                    DasBo

                                    • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                                    • Einfach macht aus einem Problem keine Lösung

                                    • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                                    1 Antwort Letzte Antwort
                                    0
                                    • DasBo1975D Offline
                                      DasBo1975D Offline
                                      DasBo1975
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #400

                                      Mit Version 1.3.13 wurde die Projektdokumentation erweitert.

                                      Neu hinzugekommen ist eine ausführliche Funktionsübersicht des Adapters in deutscher und englischer Sprache unter docs/de und docs/en.
                                      Die Dokumentation beschreibt die wichtigsten Bereiche und Funktionen von PoolControl, darunter Pumpensteuerung, Solar/PV, Statistik-, Insights- sowie Chemie- und Analysefunktionen.

                                      Zusätzlich wurde ein ungültiger common.installedFrom-Eintrag in der io-package.json bereinigt.

                                      • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                                      • Einfach macht aus einem Problem keine Lösung

                                      • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Online
                                        D Online
                                        DennisMenger
                                        schrieb am zuletzt editiert von DennisMenger
                                        #401

                                        Moin.
                                        Ich habe heute festgestellt, dass bei mir im Zeitmodus die Umwälzmenge in circulation/daily_total nicht angepasst wird. Im Automatikmodus funktioniert es.

                                        Aktuelle Version: v1.3.15

                                        1 Antwort Letzte Antwort
                                        0
                                        • DasBo1975D Offline
                                          DasBo1975D Offline
                                          DasBo1975
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #402

                                          Guten Morgen. Schaue ich mir an

                                          • Entwickler des Adapters PoolControl / BertinSoft-Sprachassistent

                                          • Einfach macht aus einem Problem keine Lösung

                                          • universelle Gerätedatenstruktur mit kontextueller Funktionszuordnung. Oder einfach gesagt: Jedes Gerät spricht dieselbe Sprache - nur nicht jedes sagt alles!

                                          1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          590

                                          Online

                                          32.9k

                                          Benutzer

                                          83.1k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe