NEWS
Test Adapter PoolControl
-
Super, vielen Dank für die schnelle Reaktion. Ich werde berichten.
-
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.
-
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.
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.
-
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.
-
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.
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.
-
Guten Morgen. Na klar schicke ich mal die Screenshots.
Results

Logbook
Inputs
Calculation
Debug
-
Guten Morgen. Na klar schicke ich mal die Screenshots.
Results

Logbook
Inputs
Calculation
Debug
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 -
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 👍
-
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!

-
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.
-
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.
-
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, "&"); t = t.replace(/</g, "<"); t = t.replace(/>/g, ">"); 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>" + " | COP: <b style='color:" + copColor + ";'>" + esc(copText) + "</b>" + " | COP-Score: <b style='color:" + scoreColor + ";letter-spacing:1px;'>" + stars(score) + " (" + score + "/5)</b>" + " | Laufzeit: <b>" + esc(formatNumber(min, 0)) + " min</b>" + " | Solarertrag: <b style='color:" + kwhColor + ";'>" + esc(formatNumber(kwh, 2)) + " kWh</b>" + " | Solarspitze: <b>" + esc(formatNumber(peak, 0)) + " W</b>" + "<br>" + "Status: <b>" + esc(state) + "</b>" + " | Kollektor: <b>" + esc(collector === null ? "-" : formatNumber(collector, 1)) + " °C</b>" + " | Δ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> -
Vielen Dank, werde ich testen
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