Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Bayrol Webportal

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Bayrol Webportal

Scheduled Pinned Locked Moved Visualisierung
100 Posts 14 Posters 16.4k Views 13 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H hab83

    Hallo,

    ich habe das Problem, dass Nachts nach Zwangstrennung meines Providers das Script einen Fehler ausgibt und danach nicht mehr läuft. Muss dann händisch das Script einmal stoppen und starten.
    Kann man irgendwie diesen Fehler abfangen, damit das Script weiterläuft?
    Folgende Fehlermeldung wird ausgegeben:

    javascript.0	2024-07-13 15:41:06.119	error	at processTicksAndRejections (node:internal/process/task_queues:95:5)
    javascript.0	2024-07-13 15:41:06.118	error	at getData (script.js.Bayrol:102:13)
    javascript.0	2024-07-13 15:41:06.118	error	at extractValues (script.js.Bayrol:129:26)
    javascript.0	2024-07-13 15:41:06.118	error	script.js.Bayrol: TypeError: Cannot read properties of null (reading '1')
    

    Edit:
    Habe es jetzt mit einer try-catch Anweisung in der Funktion extractValues gelöst

    M Offline
    M Offline
    mameier1234
    wrote on last edited by
    #83

    @hab83
    Bei mir war aktuell auch diese Meldung und seit gestern hat das Script gar keine Daten mehr abgerufen.

    Dann habe ich in einem Browser mal die URL aus dem Script https://www.bayrol-poolaccess.de/webview/index.php direkt aufgerufen.. Da war ein Hinweis für Portugal und Frankreich, dass es ein Update gibt. Einmal die Checkbox "nicht mehr Anzeigen" bestätigt.. seitdem kommen wieder daten.

    Grüße,

    Martin

    OliverIOO 1 Reply Last reply
    0
    • M mameier1234

      @hab83
      Bei mir war aktuell auch diese Meldung und seit gestern hat das Script gar keine Daten mehr abgerufen.

      Dann habe ich in einem Browser mal die URL aus dem Script https://www.bayrol-poolaccess.de/webview/index.php direkt aufgerufen.. Da war ein Hinweis für Portugal und Frankreich, dass es ein Update gibt. Einmal die Checkbox "nicht mehr Anzeigen" bestätigt.. seitdem kommen wieder daten.

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      wrote on last edited by
      #84

      @mameier1234

      Ja, das ist das problematische beim scrapen.
      Sobald sich der bildschirmaufbau nur minimal änder ist das Risiko da das es nicht mehr funktioniert

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      1 Reply Last reply
      0
      • S Offline
        S Offline
        SegaPro
        wrote on last edited by
        #85

        Hallo zusammen,

        danke für die tolle Arbeit. Ich habe das Script nun ein paar Tage eingesetzt und war sehr zufrieden.

        Ich hatte nur das Problem, dass manchmal einfach keine Daten mehr kamen und ich das Script ca. 1 x am Tag neu starten musste. Am Internet kann es nicht liegen, denn ich habe keine Zwangstrennungen.

        Ich hatte dann noch die Idee, dass es ja irgendwie sinnvoll wäre, wenn man die Abfrage ein bisschen an die Pumpenlaufzeit anpasst. Wenn diese nämlich nicht läuft, dann sind die Werte ja ohnehin verfälscht.

        Daher jetzt eine Anpassung des Scripts, welches das Abfrageintervall nach dem Status der Filterpumpe richtet - zudem hoffe ich, dass damit auch die "Hänger" besser werden.

        Und da ich ein ehrlicher Mensch bin: Ich kann nur sehr wenig JavaScript - das Script habe nicht ich gemacht, sondern es ist ein Produkt einer KI. Ich habe das originale Script verwendet und der KI halt noch mitgeteilt, was meine Probleme sind und wie ich es gerne hätte.

        Ohne die tolle Vorarbeit hier wäre das nicht möglich gewesen, weil ich der KI sonst niemals hätte sagen können, was ich eigentlich will. Dafür ein großes Dankeschön!!!

        In Zeile "91" müsst ihr noch den Datenpunkt zur Abfrage des Zustandes der Pumpe eintragen. Bei mir ist es ein openknx-Pfad. Zur besseren Auffindbarkeit, habe ich "openknx.blabla" geschrieben. Und natürlich oben eure Logindaten nicht vergessen.

        const fetch = require('node-fetch');
        
        let user = "USERNAME (Mailadresse)";
        let password = "PASSWORT";
        let dpPH = "0_userdata.0.bayrol.ph";
        let dpMV = "0_userdata.0.bayrol.mv";
        let dpCC = "0_userdata.0.bayrol.cc";
        let requesttimeRunning = 30 * 1000; // 30 Sekunden
        let requesttimeIdle = 15 * 60 * 1000; // 15 Minuten
        
        const useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
        
        let intervalID;
        
        async function main() {
            console.log('Starte das Bayrol-Datenabfrage-Skript...');
            let sessionid = await getSession();
            let cid = await login(user, password, sessionid);
        
            if (cid) {
                console.log('Prüfe den Status der Filterpumpe...');
                checkFilterPumpStatus(sessionid, cid);
            }
        }
        
        async function getSession() {
            try {
                const response = await fetch("https://www.bayrol-poolaccess.de/webview/index.php", {
                    headers: {
                        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                        "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                        "cache-control": "no-cache",
                        "pragma": "no-cache",
                        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "document",
                        "sec-fetch-mode": "navigate",
                        "sec-fetch-site": "none",
                        "sec-fetch-user": "?1",
                        "upgrade-insecure-requests": "1",
                        "User-Agent": useragent
                    },
                    method: "GET"
                });
                let headers = await response.headers;
                console.log(`Session-ID erhalten: ${getSessionId(headers.get("set-cookie"))}`);
                return getSessionId(headers.get("set-cookie"));
            } catch (error) {
                console.error(`Fehler beim Abrufen der Session-ID: ${error.message}`);
            }
        }
        
        async function login(user, password, sessionid) {
            try {
                let body = `username=${encodeURIComponent(user)}&password=${encodeURIComponent(password)}&login=Anmelden`;
                const response = await fetch("https://www.bayrol-poolaccess.de/webview/p/login.php?r=reg", {
                    headers: {
                        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                        "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                        "cache-control": "no-cache",
                        "content-type": "application/x-www-form-urlencoded",
                        "pragma": "no-cache",
                        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "document",
                        "sec-fetch-mode": "navigate",
                        "sec-fetch-site": "same-origin",
                        "sec-fetch-user": "?1",
                        "upgrade-insecure-requests": "1",
                        "cookie": `PHPSESSID=${sessionid}`,
                        "Referer": "https://www.bayrol-poolaccess.de/webview/p/login.php",
                        "Referrer-Policy": "strict-origin-when-cross-origin",
                        "User-Agent": useragent
                    },
                    body: body,
                    method: "POST"
                });
                let text = await response.text();
                console.log(`CID erhalten: ${getCID(text)}`);
                return getCID(text);
            } catch (error) {
                console.error(`Fehler beim Login: ${error.message}`);
            }
        }
        
        async function checkFilterPumpStatus(sessionid, cid) {
            try {
                // Hier prüfen wir den Status der Filterpumpe
                const filterPumpStatus = getState('openknx.blabla').val;
                console.log(`Status der Filterpumpe: ${filterPumpStatus}`);
        
                if (filterPumpStatus) {
                    console.log('Filterpumpe läuft. Abfrageintervall auf 30 Sekunden gesetzt.');
                    if (intervalID) clearInterval(intervalID);
                    intervalID = setInterval(() => getData(sessionid, cid), requesttimeRunning);
                } else {
                    console.log('Filterpumpe nicht aktiv. Abfrageintervall auf 15 Minuten gesetzt.');
                    if (intervalID) clearInterval(intervalID);
                    intervalID = setInterval(() => {
                        checkFilterPumpStatus(sessionid, cid); // Erneut den Status prüfen
                    }, requesttimeIdle);
                }
            } catch (error) {
                console.error(`Fehler beim Prüfen des Filterpumpenstatus: ${error.message}`);
            }
        }
        
        async function getData(sessionid, cid) {
            try {
                const response = await fetch(`https://www.bayrol-poolaccess.de/webview/getdata.php?cid=${cid}`, {
                    headers: {
                        "accept": "*/*",
                        "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                        "cache-control": "no-cache",
                        "pragma": "no-cache",
                        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest",
                        "cookie": `PHPSESSID=${sessionid}`,
                        "Referer": "https://www.bayrol-poolaccess.de/webview/p/plants.php",
                        "Referrer-Policy": "strict-origin-when-cross-origin",
                        "User-Agent": useragent
                    },
                    method: "GET"
                });
                let text = await response.text();
                let data = extractValues(text);
                writeData(data);
                console.log(`Daten erfolgreich abgerufen: ${JSON.stringify(data)}`);
            } catch (error) {
                console.error(`Fehler beim Abrufen der Daten: ${error.message}`);
            }
        }
        
        function writeData(obj) {
            try {
                setState(dpCC, parseFloat(obj.CC));
                setState(dpMV, parseFloat(obj.MV));
                setState(dpPH, parseFloat(obj.PH));
            } catch (error) {
                console.error(`Fehler beim Schreiben der Daten: ${error.message}`);
            }
        }
        
        function extractValues(text) {
            const regexPH = /\[pH\]<\/span><h1>([\d\.]+)<\/h1>/gm;
            const regexMV = /\[mV\]<\/span><h1>([\d\.]+)<\/h1>/gm;
            const regexCC = /\[°C\]<\/span><h1>([\d\.]+)<\/h1>/gm;
            let data = {
                PH: (regexPH.exec(text) || [])[1] || 0,
                MV: (regexMV.exec(text) || [])[1] || 0,
                CC: (regexCC.exec(text) || [])[1] || 0,
            };
            return data;
        }
        
        function getSessionId(setcookie) {
            const match = setcookie.match(/PHPSESSID=([^;]+)/);
            return match ? match[1] : '';
        }
        
        function getCID(html) {
            const match = html.match(/var clients = \[(\d+)\];/);
            return match ? match[1] : null;
        }
        
        // Start des Scripts
        main();
        
        

        Ich hoffe, es hilft dem einen oder anderen. :)

        OliverIOO 1 Reply Last reply
        0
        • S SegaPro

          Hallo zusammen,

          danke für die tolle Arbeit. Ich habe das Script nun ein paar Tage eingesetzt und war sehr zufrieden.

          Ich hatte nur das Problem, dass manchmal einfach keine Daten mehr kamen und ich das Script ca. 1 x am Tag neu starten musste. Am Internet kann es nicht liegen, denn ich habe keine Zwangstrennungen.

          Ich hatte dann noch die Idee, dass es ja irgendwie sinnvoll wäre, wenn man die Abfrage ein bisschen an die Pumpenlaufzeit anpasst. Wenn diese nämlich nicht läuft, dann sind die Werte ja ohnehin verfälscht.

          Daher jetzt eine Anpassung des Scripts, welches das Abfrageintervall nach dem Status der Filterpumpe richtet - zudem hoffe ich, dass damit auch die "Hänger" besser werden.

          Und da ich ein ehrlicher Mensch bin: Ich kann nur sehr wenig JavaScript - das Script habe nicht ich gemacht, sondern es ist ein Produkt einer KI. Ich habe das originale Script verwendet und der KI halt noch mitgeteilt, was meine Probleme sind und wie ich es gerne hätte.

          Ohne die tolle Vorarbeit hier wäre das nicht möglich gewesen, weil ich der KI sonst niemals hätte sagen können, was ich eigentlich will. Dafür ein großes Dankeschön!!!

          In Zeile "91" müsst ihr noch den Datenpunkt zur Abfrage des Zustandes der Pumpe eintragen. Bei mir ist es ein openknx-Pfad. Zur besseren Auffindbarkeit, habe ich "openknx.blabla" geschrieben. Und natürlich oben eure Logindaten nicht vergessen.

          const fetch = require('node-fetch');
          
          let user = "USERNAME (Mailadresse)";
          let password = "PASSWORT";
          let dpPH = "0_userdata.0.bayrol.ph";
          let dpMV = "0_userdata.0.bayrol.mv";
          let dpCC = "0_userdata.0.bayrol.cc";
          let requesttimeRunning = 30 * 1000; // 30 Sekunden
          let requesttimeIdle = 15 * 60 * 1000; // 15 Minuten
          
          const useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
          
          let intervalID;
          
          async function main() {
              console.log('Starte das Bayrol-Datenabfrage-Skript...');
              let sessionid = await getSession();
              let cid = await login(user, password, sessionid);
          
              if (cid) {
                  console.log('Prüfe den Status der Filterpumpe...');
                  checkFilterPumpStatus(sessionid, cid);
              }
          }
          
          async function getSession() {
              try {
                  const response = await fetch("https://www.bayrol-poolaccess.de/webview/index.php", {
                      headers: {
                          "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                          "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                          "cache-control": "no-cache",
                          "pragma": "no-cache",
                          "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                          "sec-ch-ua-mobile": "?0",
                          "sec-ch-ua-platform": "\"Windows\"",
                          "sec-fetch-dest": "document",
                          "sec-fetch-mode": "navigate",
                          "sec-fetch-site": "none",
                          "sec-fetch-user": "?1",
                          "upgrade-insecure-requests": "1",
                          "User-Agent": useragent
                      },
                      method: "GET"
                  });
                  let headers = await response.headers;
                  console.log(`Session-ID erhalten: ${getSessionId(headers.get("set-cookie"))}`);
                  return getSessionId(headers.get("set-cookie"));
              } catch (error) {
                  console.error(`Fehler beim Abrufen der Session-ID: ${error.message}`);
              }
          }
          
          async function login(user, password, sessionid) {
              try {
                  let body = `username=${encodeURIComponent(user)}&password=${encodeURIComponent(password)}&login=Anmelden`;
                  const response = await fetch("https://www.bayrol-poolaccess.de/webview/p/login.php?r=reg", {
                      headers: {
                          "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                          "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                          "cache-control": "no-cache",
                          "content-type": "application/x-www-form-urlencoded",
                          "pragma": "no-cache",
                          "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                          "sec-ch-ua-mobile": "?0",
                          "sec-ch-ua-platform": "\"Windows\"",
                          "sec-fetch-dest": "document",
                          "sec-fetch-mode": "navigate",
                          "sec-fetch-site": "same-origin",
                          "sec-fetch-user": "?1",
                          "upgrade-insecure-requests": "1",
                          "cookie": `PHPSESSID=${sessionid}`,
                          "Referer": "https://www.bayrol-poolaccess.de/webview/p/login.php",
                          "Referrer-Policy": "strict-origin-when-cross-origin",
                          "User-Agent": useragent
                      },
                      body: body,
                      method: "POST"
                  });
                  let text = await response.text();
                  console.log(`CID erhalten: ${getCID(text)}`);
                  return getCID(text);
              } catch (error) {
                  console.error(`Fehler beim Login: ${error.message}`);
              }
          }
          
          async function checkFilterPumpStatus(sessionid, cid) {
              try {
                  // Hier prüfen wir den Status der Filterpumpe
                  const filterPumpStatus = getState('openknx.blabla').val;
                  console.log(`Status der Filterpumpe: ${filterPumpStatus}`);
          
                  if (filterPumpStatus) {
                      console.log('Filterpumpe läuft. Abfrageintervall auf 30 Sekunden gesetzt.');
                      if (intervalID) clearInterval(intervalID);
                      intervalID = setInterval(() => getData(sessionid, cid), requesttimeRunning);
                  } else {
                      console.log('Filterpumpe nicht aktiv. Abfrageintervall auf 15 Minuten gesetzt.');
                      if (intervalID) clearInterval(intervalID);
                      intervalID = setInterval(() => {
                          checkFilterPumpStatus(sessionid, cid); // Erneut den Status prüfen
                      }, requesttimeIdle);
                  }
              } catch (error) {
                  console.error(`Fehler beim Prüfen des Filterpumpenstatus: ${error.message}`);
              }
          }
          
          async function getData(sessionid, cid) {
              try {
                  const response = await fetch(`https://www.bayrol-poolaccess.de/webview/getdata.php?cid=${cid}`, {
                      headers: {
                          "accept": "*/*",
                          "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                          "cache-control": "no-cache",
                          "pragma": "no-cache",
                          "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                          "sec-ch-ua-mobile": "?0",
                          "sec-ch-ua-platform": "\"Windows\"",
                          "sec-fetch-dest": "empty",
                          "sec-fetch-mode": "cors",
                          "sec-fetch-site": "same-origin",
                          "x-requested-with": "XMLHttpRequest",
                          "cookie": `PHPSESSID=${sessionid}`,
                          "Referer": "https://www.bayrol-poolaccess.de/webview/p/plants.php",
                          "Referrer-Policy": "strict-origin-when-cross-origin",
                          "User-Agent": useragent
                      },
                      method: "GET"
                  });
                  let text = await response.text();
                  let data = extractValues(text);
                  writeData(data);
                  console.log(`Daten erfolgreich abgerufen: ${JSON.stringify(data)}`);
              } catch (error) {
                  console.error(`Fehler beim Abrufen der Daten: ${error.message}`);
              }
          }
          
          function writeData(obj) {
              try {
                  setState(dpCC, parseFloat(obj.CC));
                  setState(dpMV, parseFloat(obj.MV));
                  setState(dpPH, parseFloat(obj.PH));
              } catch (error) {
                  console.error(`Fehler beim Schreiben der Daten: ${error.message}`);
              }
          }
          
          function extractValues(text) {
              const regexPH = /\[pH\]<\/span><h1>([\d\.]+)<\/h1>/gm;
              const regexMV = /\[mV\]<\/span><h1>([\d\.]+)<\/h1>/gm;
              const regexCC = /\[°C\]<\/span><h1>([\d\.]+)<\/h1>/gm;
              let data = {
                  PH: (regexPH.exec(text) || [])[1] || 0,
                  MV: (regexMV.exec(text) || [])[1] || 0,
                  CC: (regexCC.exec(text) || [])[1] || 0,
              };
              return data;
          }
          
          function getSessionId(setcookie) {
              const match = setcookie.match(/PHPSESSID=([^;]+)/);
              return match ? match[1] : '';
          }
          
          function getCID(html) {
              const match = html.match(/var clients = \[(\d+)\];/);
              return match ? match[1] : null;
          }
          
          // Start des Scripts
          main();
          
          

          Ich hoffe, es hilft dem einen oder anderen. :)

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by
          #86

          @segapro

          in zeile 174 siehst du main()
          das ruft die eigentliche funktion auf.
          wenn du sonst nix machst, führt das skript alles genau einmal aus
          und ist dann beendet.

          um es nur zu bestimmten zeiten oder rythmus auszuführen
          musst du das main innerhalb einer schedule funktion aufrufen
          https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#schedule
          mit schedule kannst du dann als pattern die zeitpunkte definieren.
          wenn dann noch ein pumpenstatus dazukommt, dann da mit if auch noch den datenpunk abfragen und mit dem gewünschten status abgleichen.

          im link siehst du ein einfaches beispiel.
          wenn du nicht weiterkommst, dann kannst du hier nochmal fragen

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          S 1 Reply Last reply
          0
          • OliverIOO OliverIO

            @segapro

            in zeile 174 siehst du main()
            das ruft die eigentliche funktion auf.
            wenn du sonst nix machst, führt das skript alles genau einmal aus
            und ist dann beendet.

            um es nur zu bestimmten zeiten oder rythmus auszuführen
            musst du das main innerhalb einer schedule funktion aufrufen
            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#schedule
            mit schedule kannst du dann als pattern die zeitpunkte definieren.
            wenn dann noch ein pumpenstatus dazukommt, dann da mit if auch noch den datenpunk abfragen und mit dem gewünschten status abgleichen.

            im link siehst du ein einfaches beispiel.
            wenn du nicht weiterkommst, dann kannst du hier nochmal fragen

            S Offline
            S Offline
            SegaPro
            wrote on last edited by
            #87

            @oliverio
            Das wundert mich jetzt ein bisschen, denn ich habe es nun seit einigen Stunden erfolgreich laufen.

            Also ich zweifele keinesfalls deine Einwände an - du bist mir um Welten überlegen - und Dein Einwand ist sogar duch mich nachvollziehbar.

            Allerdings läuft das Script:

            javascript.0	18:11:14.976	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"732","CC":"50.0"}
            javascript.0	18:11:44.974	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"732","CC":"50.0"}
            javascript.0	18:12:14.975	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
            javascript.0	18:12:44.976	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
            javascript.0	18:13:15.091	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
            

            Pünktlich alle 30 Sekunden wird abgerufen.

            Einen Temperaturfühler habe ich nicht - daher stehen da 50°C

            Viele Grüße

            OliverIOO 1 Reply Last reply
            0
            • S SegaPro

              @oliverio
              Das wundert mich jetzt ein bisschen, denn ich habe es nun seit einigen Stunden erfolgreich laufen.

              Also ich zweifele keinesfalls deine Einwände an - du bist mir um Welten überlegen - und Dein Einwand ist sogar duch mich nachvollziehbar.

              Allerdings läuft das Script:

              javascript.0	18:11:14.976	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"732","CC":"50.0"}
              javascript.0	18:11:44.974	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"732","CC":"50.0"}
              javascript.0	18:12:14.975	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
              javascript.0	18:12:44.976	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
              javascript.0	18:13:15.091	info	script.js.Pool.Bayrol: Daten erfolgreich abgerufen: {"PH":"7.4","MV":"730","CC":"50.0"}
              

              Pünktlich alle 30 Sekunden wird abgerufen.

              Einen Temperaturfühler habe ich nicht - daher stehen da 50°C

              Viele Grüße

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              wrote on last edited by
              #88

              @segapro
              ja,
              da in der Mitte ist ja ein Intervall
              Die Zeiten sind eigentlich okay. Wenn das Gerät nicht immer antwortet, könntest du die Zeiten mal etwas vergrößern.
              ansonsten sieht doch alles gut aus?

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              H 1 Reply Last reply
              0
              • OliverIOO OliverIO

                @segapro
                ja,
                da in der Mitte ist ja ein Intervall
                Die Zeiten sind eigentlich okay. Wenn das Gerät nicht immer antwortet, könntest du die Zeiten mal etwas vergrößern.
                ansonsten sieht doch alles gut aus?

                H Offline
                H Offline
                Habedere
                wrote on last edited by
                #89

                Hallo,
                hat jemand schon mal die Abfrage lokal über die iP versucht?
                Versuche auch meine Bayrol Relax Power (ohne Umwege) in iObroker zu bekommen.

                Mfg

                Q 1 Reply Last reply
                0
                • H Habedere

                  Hallo,
                  hat jemand schon mal die Abfrage lokal über die iP versucht?
                  Versuche auch meine Bayrol Relax Power (ohne Umwege) in iObroker zu bekommen.

                  Mfg

                  Q Offline
                  Q Offline
                  qwertz
                  wrote on last edited by
                  #90

                  @habedere Ich habe die Bayrol automatic ph/cl. Ich wüsste nicht, dass die eine lokale API hat. Deine Bayrol Relax Power ist jedoch ein gänzlich anderes Gerät.

                  H 1 Reply Last reply
                  0
                  • Q qwertz

                    @habedere Ich habe die Bayrol automatic ph/cl. Ich wüsste nicht, dass die eine lokale API hat. Deine Bayrol Relax Power ist jedoch ein gänzlich anderes Gerät.

                    H Offline
                    H Offline
                    Habedere
                    wrote on last edited by
                    #91

                    @qwertz
                    Wusste ich auch nicht - klappt aber…

                    844d6355-bd36-4f96-8bc2-0f97194a5608-image.png

                    Q 1 Reply Last reply
                    0
                    • H Habedere

                      @qwertz
                      Wusste ich auch nicht - klappt aber…

                      844d6355-bd36-4f96-8bc2-0f97194a5608-image.png

                      Q Offline
                      Q Offline
                      qwertz
                      wrote on last edited by
                      #92

                      @habedere wie ist denn die url dieser seite ?

                      OliverIOO Q H 3 Replies Last reply
                      0
                      • Q qwertz

                        @habedere wie ist denn die url dieser seite ?

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        wrote on last edited by
                        #93

                        @qwertz

                        https://www.bayrol-poolaccess.de

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Reply Last reply
                        0
                        • Q qwertz

                          @habedere wie ist denn die url dieser seite ?

                          Q Offline
                          Q Offline
                          qwertz
                          wrote on last edited by
                          #94

                          @qwertz Ich bezog mich auf die lokale API, die Habedere als Screenshot gezeigt hat.

                          1 Reply Last reply
                          0
                          • Q qwertz

                            @habedere wie ist denn die url dieser seite ?

                            H Offline
                            H Offline
                            Habedere
                            wrote on last edited by
                            #95

                            @qwertz
                            Einfach nur die IP im Heimnetz eingeben

                            H 1 Reply Last reply
                            0
                            • H Habedere

                              @qwertz
                              Einfach nur die IP im Heimnetz eingeben

                              H Offline
                              H Offline
                              Habedere
                              wrote on last edited by
                              #96

                              @habedere
                              Zur Info - hab die Werte jetzt mit dem Parser ausgelesen.

                              d12bb99f-3dc8-4ba4-ae37-4abc7d16fe50-image.png

                              J 1 Reply Last reply
                              0
                              • H Habedere

                                @habedere
                                Zur Info - hab die Werte jetzt mit dem Parser ausgelesen.

                                d12bb99f-3dc8-4ba4-ae37-4abc7d16fe50-image.png

                                J Offline
                                J Offline
                                james4711
                                wrote on last edited by
                                #97

                                @habedere
                                Hast du das als Alternative für das WebPortal-Skript verwendet?
                                Für meine Automatic Salt 7 bekomme ich immer Zugriffsfehler:
                                2025-04-23 17:18:17.820 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:17.821 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:20.855 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:20.856 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:23.930 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:23.931 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:26.797 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                2025-04-23 17:18:26.798 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80

                                OliverIOO 1 Reply Last reply
                                0
                                • J james4711

                                  @habedere
                                  Hast du das als Alternative für das WebPortal-Skript verwendet?
                                  Für meine Automatic Salt 7 bekomme ich immer Zugriffsfehler:
                                  2025-04-23 17:18:17.820 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:17.821 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:20.855 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:20.856 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:23.930 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:23.931 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:26.797 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80
                                  2025-04-23 17:18:26.798 - info: parser.0 (11135) Cannot read link "http://xxx.xxx.xxx.xxx/": Error: connect ECONNREFUSED xxx.xxx.xxx.xxx:80

                                  OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  wrote on last edited by OliverIO
                                  #98

                                  @james4711

                                  lässt sich die seite im browser aufrufen?
                                  muss man sich dort zuvor einloggen(am besten mal im inkognito modus prüfen)?

                                  der parser adapter hat nur beschränkte möglichkeiten sich wo einzuloggen

                                  die fehlermeldung bedeutet das er die verbindung abgelehnt hat. die adresse ist zwar generell erreichbar, aber entweder stimmt was mit dem port oder der anfrage art nicht

                                  Meine Adapter und Widgets
                                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                  Links im Profil

                                  M 1 Reply Last reply
                                  0
                                  • OliverIOO OliverIO

                                    @james4711

                                    lässt sich die seite im browser aufrufen?
                                    muss man sich dort zuvor einloggen(am besten mal im inkognito modus prüfen)?

                                    der parser adapter hat nur beschränkte möglichkeiten sich wo einzuloggen

                                    die fehlermeldung bedeutet das er die verbindung abgelehnt hat. die adresse ist zwar generell erreichbar, aber entweder stimmt was mit dem port oder der anfrage art nicht

                                    M Offline
                                    M Offline
                                    mameier1234
                                    wrote on last edited by
                                    #99

                                    Falls sich jemand wundert... aktuell kommen keine Daten. Ist bei Bayrol bekannt und sie arbeiten an einer Lösung.

                                    Grüße,

                                    Martin

                                    M 1 Reply Last reply
                                    1
                                    • M mameier1234

                                      Falls sich jemand wundert... aktuell kommen keine Daten. Ist bei Bayrol bekannt und sie arbeiten an einer Lösung.

                                      M Offline
                                      M Offline
                                      mameier1234
                                      wrote on last edited by
                                      #100

                                      Wenn man sich auf der Bayrol-poolaccess Seite anmeldet, dann kommt ein Hinweise, dass es aktuell zu Kommunikationsproblemen kommt.

                                      Wenn man dies mit "nicht mehr anzeigen" quitiert, dann geht auch das Script wieder :-)

                                      Grüße,

                                      Martin

                                      1 Reply Last reply
                                      1
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      816

                                      Online

                                      32.4k

                                      Users

                                      81.5k

                                      Topics

                                      1.3m

                                      Posts
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Login

                                      • Don't have an account? Register

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Home
                                      • Recent
                                      • Tags
                                      • Unread 0
                                      • Categories
                                      • Unreplied
                                      • Popular
                                      • GitHub
                                      • Docu
                                      • Hilfe