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.
  • DasBo1975D Offline
    DasBo1975D Offline
    DasBo1975
    Developer
    schrieb am zuletzt editiert von
    #521

    Schau ich mir an. Kann aber ein wenig dauern aktuell

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