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

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.2k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    17
    1
    6.4k

Test Adapter PoolControl

Geplant Angeheftet Gesperrt Verschoben Tester
testerpoolpoolcontrolsolar
534 Beiträge 19 Kommentatoren 61.4k Aufrufe 18 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 Online
    D Online
    DennisMenger
    schrieb am zuletzt editiert von
    #522

    Alles klar, kein Problem. Vielen Dank schon mal.

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

      Version 1.4.4 ist fertig und sollte in den nächsten Stunden über das Repository verfügbar sein.

      Zunächst möchte ich mich diesmal dafür entschuldigen, dass dieser Bugfix etwas länger gedauert hat als sonst.

      Der Grund war, dass ich den Fehler auf meiner eigenen Anlage einfach nicht nachstellen konnte. Ich nutze nur ein Balkonkraftwerk und dort trat dieses Verhalten nie auf. Deshalb hätte ich den Fehler auf meiner Hardware niemals zuverlässig reproduzieren können.

      Dank der ausführlichen Rückmeldungen von Dennis und den bereitgestellten Logdateien konnte ich den Fehler aber Schritt für Schritt eingrenzen. Anschließend habe ich den kompletten Ablauf in einer Testumgebung mit einer virtuellen größeren PV-Anlage und den Werten aus Dennis' Log nachgestellt. Erst dadurch wurde die eigentliche Ursache sichtbar.

      Kurz erklärt:

      Bei schnellen Änderungen der PV-Erzeugung und des Hausverbrauchs konnte es in seltenen Fällen passieren, dass beide Werte intern nicht mehr als zusammengehöriges Wertepaar verarbeitet wurden. Dadurch konnte der Auto-PV-Modus kurzzeitig mit veralteten Zwischenwerten arbeiten und unter bestimmten Bedingungen einen Nachlauf oder sogar eine Abschaltung auslösen, obwohl eigentlich weiterhin ausreichend PV-Leistung vorhanden war.

      Für die Version 1.4.4 habe ich den internen Ablauf deshalb überarbeitet. Die Berechnung wartet jetzt kurz auf zusammengehörige Messwerte und verarbeitet diese anschließend sauber und in der richtigen Reihenfolge. Gleichzeitig wurde sichergestellt, dass ältere Berechnungen keine neueren Ergebnisse mehr überschreiben können.

      Für euch als Anwender ändert sich an der Bedienung nichts. Die Berechnung des PV-Überschusses und alle bisherigen Funktionen bleiben unverändert – lediglich der interne Ablauf wurde robuster gemacht.

      Ich hoffe sehr, dass damit nun auch das von Dennis gemeldete Problem endgültig behoben ist.

      Zum Schluss möchte ich mich noch einmal ganz herzlich bei Dennis bedanken. Ohne seine Geduld, die vielen Tests und die ausführlichen Logdateien wäre dieser Fehler vermutlich noch lange unentdeckt geblieben. Genau solche Rückmeldungen helfen mir dabei, PoolControl Schritt für Schritt weiter zu verbessern und robuster zu machen.

      Vielen Dank an alle, die den Adapter testen, Ideen einbringen und mich bei der Weiterentwicklung unterstützen. Genau das macht dieses Projekt für mich so besonders. 😊

      • 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!

      D 1 Antwort Letzte Antwort
      2
      • DasBo1975D DasBo1975

        Version 1.4.4 ist fertig und sollte in den nächsten Stunden über das Repository verfügbar sein.

        Zunächst möchte ich mich diesmal dafür entschuldigen, dass dieser Bugfix etwas länger gedauert hat als sonst.

        Der Grund war, dass ich den Fehler auf meiner eigenen Anlage einfach nicht nachstellen konnte. Ich nutze nur ein Balkonkraftwerk und dort trat dieses Verhalten nie auf. Deshalb hätte ich den Fehler auf meiner Hardware niemals zuverlässig reproduzieren können.

        Dank der ausführlichen Rückmeldungen von Dennis und den bereitgestellten Logdateien konnte ich den Fehler aber Schritt für Schritt eingrenzen. Anschließend habe ich den kompletten Ablauf in einer Testumgebung mit einer virtuellen größeren PV-Anlage und den Werten aus Dennis' Log nachgestellt. Erst dadurch wurde die eigentliche Ursache sichtbar.

        Kurz erklärt:

        Bei schnellen Änderungen der PV-Erzeugung und des Hausverbrauchs konnte es in seltenen Fällen passieren, dass beide Werte intern nicht mehr als zusammengehöriges Wertepaar verarbeitet wurden. Dadurch konnte der Auto-PV-Modus kurzzeitig mit veralteten Zwischenwerten arbeiten und unter bestimmten Bedingungen einen Nachlauf oder sogar eine Abschaltung auslösen, obwohl eigentlich weiterhin ausreichend PV-Leistung vorhanden war.

        Für die Version 1.4.4 habe ich den internen Ablauf deshalb überarbeitet. Die Berechnung wartet jetzt kurz auf zusammengehörige Messwerte und verarbeitet diese anschließend sauber und in der richtigen Reihenfolge. Gleichzeitig wurde sichergestellt, dass ältere Berechnungen keine neueren Ergebnisse mehr überschreiben können.

        Für euch als Anwender ändert sich an der Bedienung nichts. Die Berechnung des PV-Überschusses und alle bisherigen Funktionen bleiben unverändert – lediglich der interne Ablauf wurde robuster gemacht.

        Ich hoffe sehr, dass damit nun auch das von Dennis gemeldete Problem endgültig behoben ist.

        Zum Schluss möchte ich mich noch einmal ganz herzlich bei Dennis bedanken. Ohne seine Geduld, die vielen Tests und die ausführlichen Logdateien wäre dieser Fehler vermutlich noch lange unentdeckt geblieben. Genau solche Rückmeldungen helfen mir dabei, PoolControl Schritt für Schritt weiter zu verbessern und robuster zu machen.

        Vielen Dank an alle, die den Adapter testen, Ideen einbringen und mich bei der Weiterentwicklung unterstützen. Genau das macht dieses Projekt für mich so besonders. 😊

        D Online
        D Online
        DennisMenger
        schrieb am zuletzt editiert von
        #524

        @DasBo1975 Heute erst wieder zum Testen gekommen. Leider kann ich bei mir noch keine Entwarnung bezüglich des PV-Modus geben.

        Er schaltet noch immer nach ein paar Sekunden ab, obwohl weiter PV-Überschuss vorhanden ist.

        Was ich beobachtet habe ist, dass zeitgleich zum Ausschalten der Pumpe die Werte
        photovoltaic/last_update
        photovoltaic/power_generated_w
        photovoltaic/power_house_w
        photovoltaic/power_surplus_w
        photovoltaic/status_text

        vom Zeitstempel her aktualisiert werden. Das macht ja auch eigentlich Sinn. Aber irgendwie scheint er sich da immer zu verschlucken. Ich habe keine Ahnung wo ich noch gucken kann.

        Sag mir gerne wenn ich noch was testen, überprüfen oder bereitstellen kann.

        Vielen Dank

        DasBo1975D 1 Antwort Letzte Antwort
        0
        • D DennisMenger

          @DasBo1975 Heute erst wieder zum Testen gekommen. Leider kann ich bei mir noch keine Entwarnung bezüglich des PV-Modus geben.

          Er schaltet noch immer nach ein paar Sekunden ab, obwohl weiter PV-Überschuss vorhanden ist.

          Was ich beobachtet habe ist, dass zeitgleich zum Ausschalten der Pumpe die Werte
          photovoltaic/last_update
          photovoltaic/power_generated_w
          photovoltaic/power_house_w
          photovoltaic/power_surplus_w
          photovoltaic/status_text

          vom Zeitstempel her aktualisiert werden. Das macht ja auch eigentlich Sinn. Aber irgendwie scheint er sich da immer zu verschlucken. Ich habe keine Ahnung wo ich noch gucken kann.

          Sag mir gerne wenn ich noch was testen, überprüfen oder bereitstellen kann.

          Vielen Dank

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

          @DennisMenger sagte:

          @DasBo1975 Heute erst wieder zum Testen gekommen. Leider kann ich bei mir noch keine Entwarnung bezüglich des PV-Modus geben.

          Er schaltet noch immer nach ein paar Sekunden ab, obwohl weiter PV-Überschuss vorhanden ist.

          Was ich beobachtet habe ist, dass zeitgleich zum Ausschalten der Pumpe die Werte
          photovoltaic/last_update
          photovoltaic/power_generated_w
          photovoltaic/power_house_w
          photovoltaic/power_surplus_w
          photovoltaic/status_text

          vom Zeitstempel her aktualisiert werden. Das macht ja auch eigentlich Sinn. Aber irgendwie scheint er sich da immer zu verschlucken. Ich habe keine Ahnung wo ich noch gucken kann.

          Sag mir gerne wenn ich noch was testen, überprüfen oder bereitstellen kann.

          Vielen Dank

          Schaue ich mir natürlich an. Gib mir ein bisschen.

          Eine Frage noch. Deine Schalt-/Messsteckdose ist von HM?

          • 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!

          D 1 Antwort Letzte Antwort
          0
          • DasBo1975D DasBo1975

            @DennisMenger sagte:

            @DasBo1975 Heute erst wieder zum Testen gekommen. Leider kann ich bei mir noch keine Entwarnung bezüglich des PV-Modus geben.

            Er schaltet noch immer nach ein paar Sekunden ab, obwohl weiter PV-Überschuss vorhanden ist.

            Was ich beobachtet habe ist, dass zeitgleich zum Ausschalten der Pumpe die Werte
            photovoltaic/last_update
            photovoltaic/power_generated_w
            photovoltaic/power_house_w
            photovoltaic/power_surplus_w
            photovoltaic/status_text

            vom Zeitstempel her aktualisiert werden. Das macht ja auch eigentlich Sinn. Aber irgendwie scheint er sich da immer zu verschlucken. Ich habe keine Ahnung wo ich noch gucken kann.

            Sag mir gerne wenn ich noch was testen, überprüfen oder bereitstellen kann.

            Vielen Dank

            Schaue ich mir natürlich an. Gib mir ein bisschen.

            Eine Frage noch. Deine Schalt-/Messsteckdose ist von HM?

            D Online
            D Online
            DennisMenger
            schrieb am zuletzt editiert von
            #526

            Schaue ich mir natürlich an. Gib mir ein bisschen.

            Eine Frage noch. Deine Schalt-/Messsteckdose ist von HM?

            Moin, ja HmIP

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

              Habe nochmal einen Test gemacht, dass ich die Datenpunkte der HmIP-Steckdose direkt ausgewählt habe und nicht über den Alias-Datenpunkt. Brachte aber keine Veränderung.

              DasBo1975D 1 Antwort Letzte Antwort
              0
              • D DennisMenger

                Habe nochmal einen Test gemacht, dass ich die Datenpunkte der HmIP-Steckdose direkt ausgewählt habe und nicht über den Alias-Datenpunkt. Brachte aber keine Veränderung.

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

                @DennisMenger sagte:

                Habe nochmal einen Test gemacht, dass ich die Datenpunkte der HmIP-Steckdose direkt ausgewählt habe und nicht über den Alias-Datenpunkt. Brachte aber keine Veränderung.

                Hallo Dennis,

                danke dir erst einmal, dass du weiterhin so geduldig mit testest.

                Da das Problem trotz der bisherigen Änderungen weiterhin auftritt, möchte ich jetzt bewusst nicht noch einmal auf Verdacht etwas an PoolControl ändern. Die bisherigen Analysen haben zwar tatsächlich zwei Fehler im Auto-PV-Bereich aufgedeckt, die inzwischen behoben sind, aber offensichtlich waren diese nicht die eigentliche Ursache für das von dir beobachtete Abschalten.

                Deshalb möchte ich jetzt einen anderen Weg gehen und den Ablauf auf deinem System wesentlich genauer protokollieren.

                Ich habe dafür ein kleines Diagnose-Skript vorbereitet, das du bitte temporär im ioBroker-JavaScript-Adapter laufen lässt.

                Wichtig: Das Skript steuert nichts. Es verändert weder PoolControl noch deine Pumpe oder irgendwelche anderen Datenpunkte. Es beobachtet ausschließlich die für den Auto-PV-Betrieb relevanten Zustände und schreibt das Ergebnis gesammelt in einen eigenen Diagnose-Datenpunkt unter 0_userdata.0.

                Du musst im Skript auch keine Datenpunkte anpassen. Es liest die von dir in PoolControl eingestellten Datenpunkte für Pumpenschalter, Pumpenleistung, PV-Erzeugung und Hausverbrauch automatisch aus der Konfiguration von poolcontrol.0 aus.

                Bitte geh folgendermaßen vor:

                Im JavaScript-Adapter ein neues Skript anlegen.
                Den folgenden Code vollständig hineinkopieren.
                Skript starten.
                Danach den Auto-PV-Modus so testen, wie du es bisher gemacht hast.
                Warten, bis die Pumpe wieder unerwartet ausgeht.
                Anschließend bitte den Inhalt dieses Datenpunktes kopieren:

                0_userdata.0.PoolControlDebug.AutoPVTrace

                Dort werden die letzten 400 relevanten Ereignisse mit Zeitstempeln im Millisekundenbereich gesammelt.

                Mich interessiert dabei vor allem die genaue Reihenfolge: Kommt zuerst der Ausschaltzustand von der HmIP-Steckdose? Setzt PoolControl zuerst seinen internen Pumpenschalter auf AUS? Ändert sich vorher die PV-Berechnung? Oder passiert noch etwas ganz anderes?

                Zusätzlich werden unter anderem ack, die Quelle der Stateänderung, Pumpenmodus, aktiver Helper, Pumpenleistung, PV-Erzeugung, Hausverbrauch, Überschuss und der aktuelle Auto-PV-Status festgehalten.

                Damit sollten wir beim nächsten Auftreten wesentlich genauer erkennen können, was tatsächlich die Ursache und was nur die Folge des Abschaltens ist.

                Hier das Skript:

                // PoolControl Auto-PV Diagnose-Trace fuer ioBroker JavaScript-Adapter
                // Read-only gegenueber PoolControl und Hardware.
                // Schreibt nur nach 0_userdata.0.PoolControlDebug.AutoPVTrace.
                
                const PC = 'poolcontrol.0';
                const TRACE_ID = '0_userdata.0.PoolControlDebug.AutoPVTrace';
                const MAX_EVENTS = 400;
                
                let trace = [];
                let ids = {
                  pumpSwitch: '',
                  pumpPower: '',
                  pvPower: '',
                  housePower: ''
                };
                
                const pcStates = [
                  `${PC}.pump.mode`,
                  `${PC}.pump.active_helper`,
                  `${PC}.pump.pump_switch`,
                  `${PC}.pump.current_power`,
                  `${PC}.pump.pump_max_watt`,
                  `${PC}.pump.error`,
                  `${PC}.photovoltaic.power_generated_w`,
                  `${PC}.photovoltaic.power_house_w`,
                  `${PC}.photovoltaic.power_surplus_w`,
                  `${PC}.photovoltaic.surplus_active`,
                  `${PC}.photovoltaic.status_text`,
                  `${PC}.photovoltaic.afterrun_min`,
                  `${PC}.photovoltaic.last_update`,
                  `${PC}.circulation.daily_remaining`,
                  `${PC}.status.season_active`
                ];
                
                function v(id) {
                  if (!id) return null;
                  const s = getState(id);
                  return s ? s.val : null;
                }
                
                function nowMs() {
                  const d = new Date();
                  return d.toTimeString().slice(0, 8) + '.' + String(d.getMilliseconds()).padStart(3, '0');
                }
                
                function short(id) {
                  return String(id || '').replace(`${PC}.`, '');
                }
                
                function add(src, s) {
                  const ev = {
                    rt: nowMs(),
                    src: short(src),
                    v: s ? s.val : null,
                    ack: s ? s.ack : null,
                    ts: s ? s.ts : null,
                    lc: s ? s.lc : null,
                    from: s ? s.from : null,
                    q: s && s.q !== undefined ? s.q : null,
                
                    mode: v(`${PC}.pump.mode`),
                    owner: v(`${PC}.pump.active_helper`),
                    pump: v(`${PC}.pump.pump_switch`),
                    hwPump: v(ids.pumpSwitch),
                    pumpW: v(`${PC}.pump.current_power`),
                    hwPumpW: v(ids.pumpPower),
                    maxW: v(`${PC}.pump.pump_max_watt`),
                
                    pv: v(`${PC}.photovoltaic.power_generated_w`),
                    house: v(`${PC}.photovoltaic.power_house_w`),
                    surplus: v(`${PC}.photovoltaic.power_surplus_w`),
                    surplusActive: v(`${PC}.photovoltaic.surplus_active`),
                    pvText: v(`${PC}.photovoltaic.status_text`),
                    afterrun: v(`${PC}.photovoltaic.afterrun_min`),
                
                    error: v(`${PC}.pump.error`),
                    dailyRemaining: v(`${PC}.circulation.daily_remaining`),
                    season: v(`${PC}.status.season_active`)
                  };
                
                  if (ids.pvPower) ev.hwPv = v(ids.pvPower);
                  if (ids.housePower) ev.hwHouse = v(ids.housePower);
                
                  trace.push(ev);
                  while (trace.length > MAX_EVENTS) trace.shift();
                
                  setState(TRACE_ID, JSON.stringify(trace), true);
                }
                
                createState(TRACE_ID, '[]', {
                  name: 'PoolControl Auto-PV Trace',
                  type: 'string',
                  role: 'json',
                  read: true,
                  write: true
                }, () => {
                  setState(TRACE_ID, '[]', true);
                
                  getObject(`system.adapter.${PC}`, (err, obj) => {
                    const cfg = obj && obj.native ? obj.native : {};
                
                    ids.pumpSwitch = String(cfg.pump_switch || '').trim();
                    ids.pumpPower = String(cfg.pump_current_power_id || '').trim();
                    ids.pvPower = String(cfg.power_generated_id || '').trim();
                    ids.housePower = String(cfg.power_house_id || '').trim();
                
                    const watchIds = Array.from(new Set([
                      ...pcStates,
                      ids.pumpSwitch,
                      ids.pumpPower,
                      ids.pvPower,
                      ids.housePower
                    ].filter(Boolean)));
                
                    add('script.start', {
                      val: {
                        pumpSwitch: ids.pumpSwitch || null,
                        pumpPower: ids.pumpPower || null,
                        pvPower: ids.pvPower || null,
                        housePower: ids.housePower || null
                      },
                      ack: true,
                      ts: Date.now(),
                      lc: Date.now(),
                      from: 'javascript',
                      q: 0
                    });
                
                    watchIds.forEach(id => {
                      on({ id, change: 'any' }, obj => add(id, obj.state));
                    });
                
                    log(
                      `PoolControl Auto-PV Trace gestartet. Beobachte ${watchIds.length} States. Ausgabe: ${TRACE_ID}`,
                      'info'
                    );
                  });
                });
                

                Wenn die Pumpe ausgegangen ist, brauchst du mir anschließend nur den kompletten Inhalt von

                0_userdata.0.PoolControlDebug.AutoPVTrace

                zu schicken.

                Danach kannst du das Diagnose-Skript wieder stoppen oder löschen.

                Ich möchte diesmal wirklich erst sehen, was beim Abschalten auf deinem System genau passiert, bevor ich noch einmal etwas an PoolControl ändere.

                Vielen Dank nochmals für deine Geduld und vor allem fürs Testen und Bereitstellen der Informationen. Das hilft mir wirklich sehr bei der Fehlersuche. 🙂

                • 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!

                D 1 Antwort Letzte Antwort
                0
                • DasBo1975D DasBo1975

                  @DennisMenger sagte:

                  Habe nochmal einen Test gemacht, dass ich die Datenpunkte der HmIP-Steckdose direkt ausgewählt habe und nicht über den Alias-Datenpunkt. Brachte aber keine Veränderung.

                  Hallo Dennis,

                  danke dir erst einmal, dass du weiterhin so geduldig mit testest.

                  Da das Problem trotz der bisherigen Änderungen weiterhin auftritt, möchte ich jetzt bewusst nicht noch einmal auf Verdacht etwas an PoolControl ändern. Die bisherigen Analysen haben zwar tatsächlich zwei Fehler im Auto-PV-Bereich aufgedeckt, die inzwischen behoben sind, aber offensichtlich waren diese nicht die eigentliche Ursache für das von dir beobachtete Abschalten.

                  Deshalb möchte ich jetzt einen anderen Weg gehen und den Ablauf auf deinem System wesentlich genauer protokollieren.

                  Ich habe dafür ein kleines Diagnose-Skript vorbereitet, das du bitte temporär im ioBroker-JavaScript-Adapter laufen lässt.

                  Wichtig: Das Skript steuert nichts. Es verändert weder PoolControl noch deine Pumpe oder irgendwelche anderen Datenpunkte. Es beobachtet ausschließlich die für den Auto-PV-Betrieb relevanten Zustände und schreibt das Ergebnis gesammelt in einen eigenen Diagnose-Datenpunkt unter 0_userdata.0.

                  Du musst im Skript auch keine Datenpunkte anpassen. Es liest die von dir in PoolControl eingestellten Datenpunkte für Pumpenschalter, Pumpenleistung, PV-Erzeugung und Hausverbrauch automatisch aus der Konfiguration von poolcontrol.0 aus.

                  Bitte geh folgendermaßen vor:

                  Im JavaScript-Adapter ein neues Skript anlegen.
                  Den folgenden Code vollständig hineinkopieren.
                  Skript starten.
                  Danach den Auto-PV-Modus so testen, wie du es bisher gemacht hast.
                  Warten, bis die Pumpe wieder unerwartet ausgeht.
                  Anschließend bitte den Inhalt dieses Datenpunktes kopieren:

                  0_userdata.0.PoolControlDebug.AutoPVTrace

                  Dort werden die letzten 400 relevanten Ereignisse mit Zeitstempeln im Millisekundenbereich gesammelt.

                  Mich interessiert dabei vor allem die genaue Reihenfolge: Kommt zuerst der Ausschaltzustand von der HmIP-Steckdose? Setzt PoolControl zuerst seinen internen Pumpenschalter auf AUS? Ändert sich vorher die PV-Berechnung? Oder passiert noch etwas ganz anderes?

                  Zusätzlich werden unter anderem ack, die Quelle der Stateänderung, Pumpenmodus, aktiver Helper, Pumpenleistung, PV-Erzeugung, Hausverbrauch, Überschuss und der aktuelle Auto-PV-Status festgehalten.

                  Damit sollten wir beim nächsten Auftreten wesentlich genauer erkennen können, was tatsächlich die Ursache und was nur die Folge des Abschaltens ist.

                  Hier das Skript:

                  // PoolControl Auto-PV Diagnose-Trace fuer ioBroker JavaScript-Adapter
                  // Read-only gegenueber PoolControl und Hardware.
                  // Schreibt nur nach 0_userdata.0.PoolControlDebug.AutoPVTrace.
                  
                  const PC = 'poolcontrol.0';
                  const TRACE_ID = '0_userdata.0.PoolControlDebug.AutoPVTrace';
                  const MAX_EVENTS = 400;
                  
                  let trace = [];
                  let ids = {
                    pumpSwitch: '',
                    pumpPower: '',
                    pvPower: '',
                    housePower: ''
                  };
                  
                  const pcStates = [
                    `${PC}.pump.mode`,
                    `${PC}.pump.active_helper`,
                    `${PC}.pump.pump_switch`,
                    `${PC}.pump.current_power`,
                    `${PC}.pump.pump_max_watt`,
                    `${PC}.pump.error`,
                    `${PC}.photovoltaic.power_generated_w`,
                    `${PC}.photovoltaic.power_house_w`,
                    `${PC}.photovoltaic.power_surplus_w`,
                    `${PC}.photovoltaic.surplus_active`,
                    `${PC}.photovoltaic.status_text`,
                    `${PC}.photovoltaic.afterrun_min`,
                    `${PC}.photovoltaic.last_update`,
                    `${PC}.circulation.daily_remaining`,
                    `${PC}.status.season_active`
                  ];
                  
                  function v(id) {
                    if (!id) return null;
                    const s = getState(id);
                    return s ? s.val : null;
                  }
                  
                  function nowMs() {
                    const d = new Date();
                    return d.toTimeString().slice(0, 8) + '.' + String(d.getMilliseconds()).padStart(3, '0');
                  }
                  
                  function short(id) {
                    return String(id || '').replace(`${PC}.`, '');
                  }
                  
                  function add(src, s) {
                    const ev = {
                      rt: nowMs(),
                      src: short(src),
                      v: s ? s.val : null,
                      ack: s ? s.ack : null,
                      ts: s ? s.ts : null,
                      lc: s ? s.lc : null,
                      from: s ? s.from : null,
                      q: s && s.q !== undefined ? s.q : null,
                  
                      mode: v(`${PC}.pump.mode`),
                      owner: v(`${PC}.pump.active_helper`),
                      pump: v(`${PC}.pump.pump_switch`),
                      hwPump: v(ids.pumpSwitch),
                      pumpW: v(`${PC}.pump.current_power`),
                      hwPumpW: v(ids.pumpPower),
                      maxW: v(`${PC}.pump.pump_max_watt`),
                  
                      pv: v(`${PC}.photovoltaic.power_generated_w`),
                      house: v(`${PC}.photovoltaic.power_house_w`),
                      surplus: v(`${PC}.photovoltaic.power_surplus_w`),
                      surplusActive: v(`${PC}.photovoltaic.surplus_active`),
                      pvText: v(`${PC}.photovoltaic.status_text`),
                      afterrun: v(`${PC}.photovoltaic.afterrun_min`),
                  
                      error: v(`${PC}.pump.error`),
                      dailyRemaining: v(`${PC}.circulation.daily_remaining`),
                      season: v(`${PC}.status.season_active`)
                    };
                  
                    if (ids.pvPower) ev.hwPv = v(ids.pvPower);
                    if (ids.housePower) ev.hwHouse = v(ids.housePower);
                  
                    trace.push(ev);
                    while (trace.length > MAX_EVENTS) trace.shift();
                  
                    setState(TRACE_ID, JSON.stringify(trace), true);
                  }
                  
                  createState(TRACE_ID, '[]', {
                    name: 'PoolControl Auto-PV Trace',
                    type: 'string',
                    role: 'json',
                    read: true,
                    write: true
                  }, () => {
                    setState(TRACE_ID, '[]', true);
                  
                    getObject(`system.adapter.${PC}`, (err, obj) => {
                      const cfg = obj && obj.native ? obj.native : {};
                  
                      ids.pumpSwitch = String(cfg.pump_switch || '').trim();
                      ids.pumpPower = String(cfg.pump_current_power_id || '').trim();
                      ids.pvPower = String(cfg.power_generated_id || '').trim();
                      ids.housePower = String(cfg.power_house_id || '').trim();
                  
                      const watchIds = Array.from(new Set([
                        ...pcStates,
                        ids.pumpSwitch,
                        ids.pumpPower,
                        ids.pvPower,
                        ids.housePower
                      ].filter(Boolean)));
                  
                      add('script.start', {
                        val: {
                          pumpSwitch: ids.pumpSwitch || null,
                          pumpPower: ids.pumpPower || null,
                          pvPower: ids.pvPower || null,
                          housePower: ids.housePower || null
                        },
                        ack: true,
                        ts: Date.now(),
                        lc: Date.now(),
                        from: 'javascript',
                        q: 0
                      });
                  
                      watchIds.forEach(id => {
                        on({ id, change: 'any' }, obj => add(id, obj.state));
                      });
                  
                      log(
                        `PoolControl Auto-PV Trace gestartet. Beobachte ${watchIds.length} States. Ausgabe: ${TRACE_ID}`,
                        'info'
                      );
                    });
                  });
                  

                  Wenn die Pumpe ausgegangen ist, brauchst du mir anschließend nur den kompletten Inhalt von

                  0_userdata.0.PoolControlDebug.AutoPVTrace

                  zu schicken.

                  Danach kannst du das Diagnose-Skript wieder stoppen oder löschen.

                  Ich möchte diesmal wirklich erst sehen, was beim Abschalten auf deinem System genau passiert, bevor ich noch einmal etwas an PoolControl ändere.

                  Vielen Dank nochmals für deine Geduld und vor allem fürs Testen und Bereitstellen der Informationen. Das hilft mir wirklich sehr bei der Fehlersuche. 🙂

                  D Online
                  D Online
                  DennisMenger
                  schrieb am zuletzt editiert von DennisMenger
                  #529

                  @DasBo1975 Moin und vielen Dank.

                  Wie soll ich dir den Inhalt schicken? Hier für das Forum sind es zu viele Zeichen.

                  EDIT: habe dir eine Nachricht mit der Datei geschickt

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

                    Hallo Dennis,

                    erst einmal vielen Dank, dass du das kleine Diagnose-Skript so schnell ausprobiert und mir die Aufzeichnung zur Verfügung gestellt hast.

                    Die Daten daraus waren für mich mehr als hilfreich. Ohne diesen detaillierten Mitschnitt hätte ich diesen Fehler vermutlich noch sehr lange gesucht – oder vielleicht überhaupt nicht gefunden. Im normalen Log waren Ursache und Folge einfach nicht eindeutig genug voneinander zu unterscheiden.

                    Mit dem Diagnose-Skript konnte ich zum ersten Mal ganz genau sehen, was beim Abschalten passiert: Auto-PV hatte die Pumpe korrekt gestartet, ausreichend PV-Überschuss war vorhanden und auch die Haltebedingung war erfüllt. Trotzdem kam der Ausschaltbefehl direkt aus PoolControl. Die HmIP-Steckdose war damit endgültig aus dem Verdacht raus – sie hat nur brav das gemacht, was PoolControl ihr gesagt hat.

                    Danach ließ sich der eigentliche Übeltäter finden. 😉

                    PoolControl besitzt für seine verschiedenen Helper bewusst eine Art Zuständigkeits- und Vorrangsteuerung. Vereinfacht gesagt soll jeder Helper wissen, wann er die Pumpe steuern darf und – mindestens genauso wichtig – wann er die Finger davon lassen muss.

                    Einer hat sich dabei allerdings ein wenig danebenbenommen: Solar Extended.

                    Solar Extended hat vollkommen richtig erkannt, dass im Modus Auto-PV gerade nicht seine Stunde geschlagen hat. Anstatt sich danach aber einfach zurückzulehnen und Auto-PV seine Arbeit machen zu lassen, hat er sinngemäß gesagt:

                    „Ich soll die Pumpe gerade nicht einschalten? Na gut, dann mache ich sie eben aus.“ 😄

                    Genau das war der Fehler.

                    Dadurch konnte Solar Extended bei seinem nächsten Durchlauf eine von Auto-PV korrekt laufende Pumpe wieder ausschalten – obwohl Auto-PV weiterhin ausreichend Überschuss erkannt hatte und die Pumpe ausdrücklich weiterlaufen lassen wollte.

                    Das erklärt auch, warum ich das Problem auf meinem eigenen System nicht reproduzieren konnte: Ich verwende die normale Solarsteuerung. Du verwendest Solar Extended – und genau in dieser Kombination mit Auto-PV lag der Fehler.

                    Ich habe das Verhalten inzwischen gezielt in einer Testumgebung mit deinen Werten nachgestellt und konnte die Abschaltung reproduzieren. Anschließend wurde die Zuständigkeit von Solar Extended korrigiert und derselbe Test erneut durchgeführt. Auto-PV bleibt jetzt unangetastet. Gleichzeitig wurde geprüft, dass Solar Extended im normalen Automatikmodus weiterhin wie vorgesehen die Pumpe ein- und ausschalten kann.

                    Die Version 1.4.5 mit dieser Korrektur sollte in den nächsten Stunden verfügbar sein.

                    Und an dieser Stelle auch noch einmal ein großes Dankeschön an dich und natürlich an alle anderen, die PoolControl testen, Rückmeldungen geben, Logs bereitstellen und auch bei solchen hartnäckigen Fehlern dranbleiben.

                    Gerade dieser Fall zeigt ziemlich schön, wie wertvoll solche Rückmeldungen sind. Ohne deinen Test mit dem Diagnose-Skript hätten wir zwar einige andere echte Schwachstellen gefunden und behoben – aber der eigentliche Fehler, wegen dem wir ursprünglich angefangen hatten zu suchen, hätte sich weiterhin sehr erfolgreich vor uns versteckt. 😉

                    Vielen Dank für deine Unterstützung!

                    • 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!

                    D 1 Antwort Letzte Antwort
                    0
                    • DasBo1975D DasBo1975

                      Hallo Dennis,

                      erst einmal vielen Dank, dass du das kleine Diagnose-Skript so schnell ausprobiert und mir die Aufzeichnung zur Verfügung gestellt hast.

                      Die Daten daraus waren für mich mehr als hilfreich. Ohne diesen detaillierten Mitschnitt hätte ich diesen Fehler vermutlich noch sehr lange gesucht – oder vielleicht überhaupt nicht gefunden. Im normalen Log waren Ursache und Folge einfach nicht eindeutig genug voneinander zu unterscheiden.

                      Mit dem Diagnose-Skript konnte ich zum ersten Mal ganz genau sehen, was beim Abschalten passiert: Auto-PV hatte die Pumpe korrekt gestartet, ausreichend PV-Überschuss war vorhanden und auch die Haltebedingung war erfüllt. Trotzdem kam der Ausschaltbefehl direkt aus PoolControl. Die HmIP-Steckdose war damit endgültig aus dem Verdacht raus – sie hat nur brav das gemacht, was PoolControl ihr gesagt hat.

                      Danach ließ sich der eigentliche Übeltäter finden. 😉

                      PoolControl besitzt für seine verschiedenen Helper bewusst eine Art Zuständigkeits- und Vorrangsteuerung. Vereinfacht gesagt soll jeder Helper wissen, wann er die Pumpe steuern darf und – mindestens genauso wichtig – wann er die Finger davon lassen muss.

                      Einer hat sich dabei allerdings ein wenig danebenbenommen: Solar Extended.

                      Solar Extended hat vollkommen richtig erkannt, dass im Modus Auto-PV gerade nicht seine Stunde geschlagen hat. Anstatt sich danach aber einfach zurückzulehnen und Auto-PV seine Arbeit machen zu lassen, hat er sinngemäß gesagt:

                      „Ich soll die Pumpe gerade nicht einschalten? Na gut, dann mache ich sie eben aus.“ 😄

                      Genau das war der Fehler.

                      Dadurch konnte Solar Extended bei seinem nächsten Durchlauf eine von Auto-PV korrekt laufende Pumpe wieder ausschalten – obwohl Auto-PV weiterhin ausreichend Überschuss erkannt hatte und die Pumpe ausdrücklich weiterlaufen lassen wollte.

                      Das erklärt auch, warum ich das Problem auf meinem eigenen System nicht reproduzieren konnte: Ich verwende die normale Solarsteuerung. Du verwendest Solar Extended – und genau in dieser Kombination mit Auto-PV lag der Fehler.

                      Ich habe das Verhalten inzwischen gezielt in einer Testumgebung mit deinen Werten nachgestellt und konnte die Abschaltung reproduzieren. Anschließend wurde die Zuständigkeit von Solar Extended korrigiert und derselbe Test erneut durchgeführt. Auto-PV bleibt jetzt unangetastet. Gleichzeitig wurde geprüft, dass Solar Extended im normalen Automatikmodus weiterhin wie vorgesehen die Pumpe ein- und ausschalten kann.

                      Die Version 1.4.5 mit dieser Korrektur sollte in den nächsten Stunden verfügbar sein.

                      Und an dieser Stelle auch noch einmal ein großes Dankeschön an dich und natürlich an alle anderen, die PoolControl testen, Rückmeldungen geben, Logs bereitstellen und auch bei solchen hartnäckigen Fehlern dranbleiben.

                      Gerade dieser Fall zeigt ziemlich schön, wie wertvoll solche Rückmeldungen sind. Ohne deinen Test mit dem Diagnose-Skript hätten wir zwar einige andere echte Schwachstellen gefunden und behoben – aber der eigentliche Fehler, wegen dem wir ursprünglich angefangen hatten zu suchen, hätte sich weiterhin sehr erfolgreich vor uns versteckt. 😉

                      Vielen Dank für deine Unterstützung!

                      D Online
                      D Online
                      DennisMenger
                      schrieb am zuletzt editiert von
                      #531

                      @DasBo1975 Super, vielen Dank. Es sieht tatsächlich so aus, dass es aktuell so funktioniert wie es soll. Ich werde das weiter beobachten und Info geben.

                      Vielen Dank für die immer weitere Entwicklung des Adapters.

                      DasBo1975D 1 Antwort Letzte Antwort
                      1
                      • D DennisMenger

                        @DasBo1975 Super, vielen Dank. Es sieht tatsächlich so aus, dass es aktuell so funktioniert wie es soll. Ich werde das weiter beobachten und Info geben.

                        Vielen Dank für die immer weitere Entwicklung des Adapters.

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

                        @DennisMenger sagte:

                        @DasBo1975 Super, vielen Dank. Es sieht tatsächlich so aus, dass es aktuell so funktioniert wie es soll. Ich werde das weiter beobachten und Info geben.

                        Vielen Dank für die immer weitere Entwicklung des Adapters.

                        Das freut mich doch schon mal zu hören

                        • 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
                        • C Offline
                          C Offline
                          claus1993
                          schrieb am zuletzt editiert von
                          #533

                          @dasbo1975,
                          wie hast du das mit dem Frostschutz geregelt?
                          Hält der Frostschutz die Temperatur des Beckens auf +2° oder berücksichtigst er auch Wasserleitungen die teilweise schneller gefrieren als das größere Becken?

                          DasBo1975D 1 Antwort Letzte Antwort
                          0
                          • C claus1993

                            @dasbo1975,
                            wie hast du das mit dem Frostschutz geregelt?
                            Hält der Frostschutz die Temperatur des Beckens auf +2° oder berücksichtigst er auch Wasserleitungen die teilweise schneller gefrieren als das größere Becken?

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

                            @claus1993 sagte:

                            @dasbo1975,
                            wie hast du das mit dem Frostschutz geregelt?
                            Hält der Frostschutz die Temperatur des Beckens auf +2° oder berücksichtigst er auch Wasserleitungen die teilweise schneller gefrieren als das größere Becken?

                            Hallo Claus,

                            ich habe den Frostschutz bewusst nicht an der Beckentemperatur festgemacht, sondern an der Außentemperatur.

                            Sobald die Außentemperatur den eingestellten Frostschutzwert erreicht bzw. unterschreitet, wird die Umwälzpumpe eingeschaltet. Es geht also nicht darum, das komplette Becken auf z. B. +2 °C zu halten, sondern darum, bei Frostgefahr das Wasser in Bewegung zu halten und damit auch die Leitungen und wasserführenden Anlagenteile mit einzubeziehen.

                            Die Rohrleitungen selbst werden dabei allerdings nicht separat temperaturmäßig überwacht. PoolControl reagiert auf die Außentemperatur als Auslöser für den Frostschutz.

                            Die zusätzlichen +2 °C sind nur der Abstand zum späteren Abschalten. Wenn der Frostschutz zum Beispiel bei +2 °C anspringt, wird er erst wieder beendet, wenn die Außentemperatur ungefähr +4 °C erreicht hat. Damit soll verhindert werden, dass die Pumpe ständig an und aus schaltet, wenn die Temperatur genau um den Grenzwert herum schwankt.

                            • 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

                            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

                            449

                            Online

                            33.0k

                            Benutzer

                            83.6k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2026
                            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