Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Bayrol Webportal

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Bayrol Webportal

    This topic has been deleted. Only users with topic management privileges can see it.
    • NWH
      NWH last edited by

      @oliverio ja das habe ich genommen.

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @NWH last edited by OliverIO

        @nwh dein fehler ist genau der, der gepostet wurde mit der skriptversion und den defekten regex

        wenn du magst, kannst du mir deine zugangskennung per PN senden, dann lass ich das hier mal laufen und kann rein debuggen.
        habe gerade mal die letzte version laufen lassen mit einer anderen zugangskennung.
        das läuft einwandfrei

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @OliverIO last edited by

          @oliverio

          seltsam.
          habe jetzt die textdatei selbst mal getestet und da sind fehler drin.
          hier jetzt eine version die klappen müsste

          bayrol.txt

          NWH 1 Reply Last reply Reply Quote 0
          • NWH
            NWH @OliverIO last edited by

            @oliverio leider nein.
            4328cae2-2be8-41c6-80f4-53258c1f71e2-image.png

            So sehen die besagten Zeilen aus.

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @NWH last edited by

              @nwh

              neuer versuch
              bayrol.txt

              NWH 1 Reply Last reply Reply Quote 0
              • NWH
                NWH @OliverIO last edited by

                @oliverio hat wieder nicht funktioniert.

                Wenn ich die Zeilen so abändere

                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;
                

                dann kommt nurmehr der Fehler.

                javascript.0	23:21:12.867	error	script.js.common.Pool.Byrol compile failed: at script.js.common.Pool.Byrol:109
                
                OliverIO 1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @NWH last edited by OliverIO

                  @nwh
                  du sollst nix abändern. du sollst nur deine login daten im skript eintragen

                  ansonsten komm ich nicht mehr weiter.
                  mit den anderen login-daten funktioniert es

                  ich selbst hab bayrol nicht

                  1 Reply Last reply Reply Quote 0
                  • NWH
                    NWH last edited by NWH

                    @oliverio
                    So ich depp, habe den falschen login eingegeben.

                    jetzt ist er Richtig, allerdings kommt jetzt das.
                    Er meckert jetzt mit "reading1"

                    javascript.0	23:45:06.327	error	script.js.common.Pool.Byrol: TypeError: Cannot read properties of null (reading '1')
                    javascript.0	23:45:06.327	error	at extractValues (script.js.common.Pool.Byrol:119:26)
                    javascript.0	23:45:06.327	error	at getData (script.js.common.Pool.Byrol:99:13)
                    javascript.0	23:45:06.327	error	at main (script.js.common.Pool.Byrol:19:14)
                    

                    Das kommt zuvor noch

                    javascript.0	23:50:10.271	info	Stopping script script.js.common.Pool.Byrol
                    javascript.0	23:52:46.677	info	Start JavaScript script.js.common.Pool.Byrol (Javascript/js)
                    javascript.0	23:52:46.687	info	script.js.common.Pool.Byrol: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                    javascript.0	23:52:47.669	info	script.js.common.Pool.Byrol: <div><div class="gapp_"></div><div class="tab_data_link" onclick="document.location.href='device.php?c=26081'"><div class="gstat_warning"></div><div class="tab_box stat_warning"><span>pH&nbsp;[pH]</span><h1>7.20</h1></div><div class="tab_box stat_warning"><span>mV&nbsp;[mV]</span><h1>860</h1></div><div class="tab_box stat_warning"><span>T1&nbsp;[°C]</span><h1>27.1</h1></div><div class="tab_box "></div><div class="tab_info"><span>DGGB18461B23</span></br><span>PoolManager Chlor (Cl)</span></br><span>v221216-M1 (7.8.3)</span></br><span><a href="device.php?c=26081">Direct access</a></div></div></div>
                    

                    aber morgen weiter...

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @NWH last edited by

                      @nwh

                      das ist nicht die letzte version des scripts

                      NWH 1 Reply Last reply Reply Quote 0
                      • NWH
                        NWH @OliverIO last edited by NWH

                        @oliverio Guten Morgen

                        Das ist die letzte Version:

                        javascript.0	07:31:23.019	error	script.js.common.Pool.Byrol: TypeError: Cannot read properties of null (reading '1')
                        javascript.0	07:31:23.019	error	at extractValues (script.js.common.Pool.Byrol:115:26)
                        javascript.0	07:31:23.019	error	at getData (script.js.common.Pool.Byrol:96:13)
                        javascript.0	07:31:23.019	error	at main (script.js.common.Pool.Byrol:19:14)
                        

                        Das wären noch die Meldungen vom debug:

                        
                        javascript.0
                        2024-06-25 07:29:45.191	error	at main (script.js.common.Pool.Byrol:19:14)
                        javascript.0
                        2024-06-25 07:29:45.191	error	at processTicksAndRejections (node:internal/process/task_queues:95:5
                        javascript.0
                        2024-06-25 07:29:45.191	error	at getData (script.js.common.Pool.Byrol:96:13)
                        javascript.0
                        2024-06-25 07:29:45.191	error	at extractValues (script.js.common.Pool.Byrol:115:26)
                        javascript.0
                        2024-06-25 07:29:45.191	error	script.js.common.Pool.Byrol: TypeError: Cannot read properties of null (reading '1')
                        javascript.0
                        2024-06-25 07:29:43.819	info	script.js.common.Pool.Byrol: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                        javascript.0
                        2024-06-25 07:29:43.810	info	Start JavaScript script.js.common.Pool.Byrol (Javascript/js)
                        
                        1 Reply Last reply Reply Quote 0
                        • Q
                          qwertz last edited by

                          Hat einer von den Skriptbastlern github und kann das Script dort einstellen ?
                          Das ist ja unnötig Ärger hier.

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @qwertz last edited by

                            @qwertz

                            https://github.com/oweitman/diverse-iobroker-scripts/tree/main/bayrol

                            NWH Q 2 Replies Last reply Reply Quote 0
                            • NWH
                              NWH @OliverIO last edited by

                              @oliverio
                              Jetzt funktioniert es 🙂

                              OliverIO 1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @NWH last edited by

                                @nwh

                                wenn ihr wollt, könnt ihr eure Erfahrungen hier auch nochmal schreiben

                                https://forum.iobroker.net/topic/73975/problem-mit-backslash-im-codeblock

                                scheint sich bisher nix getan zu haben

                                P 1 Reply Last reply Reply Quote 0
                                • P
                                  psrelax @OliverIO last edited by

                                  @oliverio

                                  Ich habe diesen Thread hier völlig aus den Augen verloren und bin heute erst wieder darauf gestoßen.
                                  Vielen Dank für die Mühe, das Script zu programmieren.

                                  Ich habe es gleich ausprobiert. Es funktioniert bisher einwandfrei.
                                  Die Werte wollte ich schon lange haben 🙂
                                  Vielen Dank dafür!!!!

                                  1 Reply Last reply Reply Quote 0
                                  • Q
                                    qwertz @OliverIO last edited by

                                    @oliverio Perfekt ! Danke ! Habe meine TXT weiter oben gelöscht und auf github verwiesen.

                                    H 1 Reply Last reply Reply Quote 0
                                    • H
                                      hab83 @qwertz last edited by 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 1 Reply Last reply Reply Quote 0
                                      • M
                                        mameier1234 @hab83 last edited by

                                        @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.

                                        OliverIO 1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @mameier1234 last edited by

                                          @mameier1234

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

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            SegaPro last edited by

                                            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. 🙂

                                            OliverIO 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            185
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            98
                                            8551
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo