Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. iobroker Admin langsam

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    iobroker Admin langsam

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by

      Hi zusammen,

      ich betreibe meinen iobroker auf dem Beelink BT 3 Pro.
      Seit ich den neu aufsetzen musste, da Linux mit einem Update die Filepartition zerschossen hatte, ist dieser extrem langsam beim Laden der Admin-Oberfläche.

      An der Netzwerkverbindung liegt es nicht (im Schnitt pingbar mit ~15ms).
      Der Befehl top zeigt auch nur eine Auslastung von unter 10%
      22dc3a69-751a-4fd2-bd87-05fd96a8c9f7-image.png

      VIS dagegen läuft ziemlich flüssig. Es fällt vor allem auf, wenn man die Admin-Oberfläche öffnet oder aber in eine Instanz zum einstellen rein will. Dann dauert es im Schnitt so ca. 20 Sekunden.
      NPM ist auf Version: 6.13.4
      Node/Nodejs: 10.19.0

      Jemand eine Idee, was ich nachschauen könnte? Ich habe bereits den Installationsfixer ausprobiert aber der hat leider nicht geholfen...

      Danke vorab 🙂

      sigi234 Homoran 2 Replies Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @Guest last edited by

        @Elirion

        Welche Admin Version?

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @sigi234 last edited by

          @sigi234
          Ich habe 4.0.1 sowie 3.7.8 ausprobiert

          -Alex- 0 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Guest last edited by

            @Elirion sagte in iobroker Admin langsam:

            was ich nachschauen könnte?

            z.B. die Browserkonsole (F12)
            Kommt da ein Fehler, wenn du in die Konfig einer Instanz willst und alles so langsam ist?

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @Homoran last edited by

              @Homoran nein leider nicht.

              @sigi234 die 3.7.8 scheint stabiler zu laufen als die 4.0.1
              Hier habe ich nicht alle x Sekunden das Problem.

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Guest last edited by

                @Elirion sagte in iobroker Admin langsam:

                Hier habe ich nicht alle x Sekunden das Problem.

                und top zeigt dann nichts anderes an?

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @Homoran last edited by

                  @Homoran nö leider nicht. Selbe Auslastung und keine Zombie-Prozesse

                  1 Reply Last reply Reply Quote 0
                  • -Alex- 0
                    -Alex- 0 @Guest last edited by

                    @Elirion sagte in iobroker Admin langsam:

                    @sigi234
                    Ich habe 4.0.1 sowie 3.7.8 ausprobiert

                    hmm 4.0.1 ?
                    wenn, dann probier mal die 4.0.5 in Verbindung mit socket.io 3.0.1 und web 3.0.1

                    zeigt das Log noch irgendwelche Fehler o.ä an?

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @-Alex- 0 last edited by

                      @Alex-0

                      Entschuldigung für die späte Rückmeldung. Ich teste es heute mal mit 4.0.5 aus. Melde mich dann nochmal.
                      Mit 3.7.8 war es in jedem Fall sehr stabil zum Schluss.

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @Guest last edited by

                        @Alex-0 Also danach nur seltsamerweise für den javascript-Adapter für ein Skript, was vorher problemlos gelaufen ist:

                        javascript.0	2020-03-01 17:01:23.719	error	(31044) at process._tickCallback (internal/process/next_tick.js:63:19)
                        javascript.0	2020-03-01 17:01:23.718	error	(31044) at endReadableNT (_stream_readable.js:1145:12)
                        javascript.0	2020-03-01 17:01:23.718	error	(31044) at IncomingMessage.emit (events.js:203:15)
                        javascript.0	2020-03-01 17:01:23.718	error	(31044) at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:447:13)
                        javascript.0	2020-03-01 17:01:23.717	error	(31044) at setState (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:610:14)
                        javascript.0	2020-03-01 17:01:23.717	error	(31044) at exports.XMLHttpRequest.dispatchEvent (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:25)
                        javascript.0	2020-03-01 17:01:23.716	error	(31044) at exports.XMLHttpRequest.xmlHttp.onreadystatechange (script.js.RoborockMap:56:13)
                        javascript.0	2020-03-01 17:01:23.715	error	(31044) at updateMapPage (script.js.RoborockMap:141:23)
                        javascript.0	2020-03-01 17:01:23.713	error	(31044) script.js.RoborockMap: Error: IndexSizeError: The source width is 0.
                        

                        Skript ist eines für die Karte vom Roborock hier aus dem Forum. (Dieses anbei) Kennt jemand den Fehler? Laufen tut das Skript aber ich erkenne den Fehler nicht:

                        createState('vis.RockroboMap', '');
                        
                        const {
                            createCanvas,
                            Canvas
                        } = require('canvas')
                        const {
                            Image
                        } = require('canvas')
                        const request = require('request');
                        const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                        
                        //________________________________________________________________________________________________________________________________________________
                        // Farben änder
                        const COLOR_FLOOR = "#23465e";
                        const COLOR_WALLS = "#2b2e30";
                        const COLOR_PATH = "white";
                        
                        //________________________________________________________________________________________________________________________________________________
                        
                        
                        
                        //Robot Image
                        const rocky = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAfCAMAAAHGjw8oAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADbUExURQAAAICAgICAgICAgICAgICAgHx8fH19fX19fYCAgIGBgX5+foCAgH5+foCAgH9/f39/f35+foCAgH9/f39/f4CAgH5+foGBgYCAgICAgIGBgX9/f39/f35+foCAgH9/f39/f4CAgIODg4eHh4mJiZCQkJycnJ2dnZ6enqCgoKSkpKenp62trbGxsbKysry8vL29vcLCwsXFxcbGxsvLy87OztPT09XV1d/f3+Tk5Ojo6Ozs7O3t7e7u7vHx8fLy8vPz8/X19fb29vf39/j4+Pn5+f39/f7+/v///9yECocAAAAgdFJOUwAGChgcKCkzOT5PVWZnlJmfsLq7wcrS1Nre4OXz+vr7ZhJmqwAAAAlwSFlzAAAXEQAAFxEByibzPwAAAcpJREFUKFNlkolaWkEMhYPggliBFiwWhGOx3AqCsggI4lZt8/5P5ElmuEX5P5hMMjeZJBMRafCvUKnbIqpcioci96owTQWqP0QKC54nImUAyr9k7VD1me4YvibHlJKpVUzQhR+dmdTRSDUvdHh8NK8nhqUVch7cITmXA3rtYDmH+3OL4XI1T+BhJUcXczQxOBXJuve0/daeUr5A6g9muJzo5NI2kPKtyRSGBStKQZ5RC1hENWn6NSRTrDUqLD/lsNKoFTNRETlGMn9dDoGdoDcT1fHPi7EuUDD9dMBw4+6vMQVyInnPXDsdW+8tjWfbYTbzg/OstcagzSlb0+wL/6k+1KPhCrj6YFhzS5eXuHcYNF4bsGtDYhFLTOSMqTsx9e3iyKfynb1SK+RqtEq70RzZPwEGKwv7G0OK1QA42Y+HIgct9P3WWG9ItI/mQTgvoeuWAMdlTRclO/+Km2jwlhDvinGNbyJH6EWV84AJ1wl8JowejqTqTmv+0GqDmVLlg/wLX5Mp2rO3WRs2Zs5fznAVd1EzRh10OONr7hhhM4ctevhiVVxHdYsbq+JzHzaIfdjs5CZ9tGInSfoWEXuL7//fwtn9+Jp7wSryDjBFqnOGeuUxAAAAAElFTkSuQmCC";
                        const charger = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAdVBMVEUAAAA44Yo44Yo44Yo44Yo44Yo44Yo44Yo44Yp26q844Yr///9767Kv89DG9t2g8Md26q5C44/5/vvz/fjY+ei19NNV5ZtJ45T2/fmY78KP7r1v6atq6Kjs/PPi+u7e+uvM9+Gb8MSS7r+H7bhm6KVh56JZ5p3ZkKITAAAACnRSTlMABTr188xpJ4aepd0A4wAAANZJREFUKM9VklmCgzAMQwkQYCSmLKWl2+zL/Y9YcIUL7wvkJHIUJyKkVcyy+JIGCZILGF//QLEqlTmMdsBEXi56igfH/QVGqvXSu49+1KftCbn+dtxB5LOPfNGQNRaKaQNkTJ46OMGczZg8wJB/9TB+J3nFkyqJMp44vBrnWYhJJmOn/5uVzAotV/zACnbUtTbOpHcQzVx8kxw6mavdpYP90dsNcE5k6xd8RoIb2Xgk6xAbfm5C9NiHtxGiXD/U2P96UJunrS/LOeV2GG4wfBi241P5+NwBnAEUFx9FUdUAAAAASUVORK5CYII=";
                        
                        
                        
                        var canvasimg = new Canvas();
                        var ctximg = canvasimg.getContext('2d');
                        var res = {};
                        
                        var img = new Image(); // Create a new Image
                        img.src = rocky
                        
                        const img_charger = new Image();
                        img_charger.src = charger;
                        
                        const robotIp = "192.168.1.176"; // IP of the robot
                        const robotState = "mihome-vacuum.0.info.state" // e.g : "mihome-vacuum.0.info.state"
                        
                        httpGetAsync("http://" + robotIp + "/api/map/latest", updateMapPage);
                        
                        
                        // get actuel map data from Valetudo
                        function httpGetAsync(theUrl, callback) {
                            var xmlHttp = new XMLHttpRequest();
                            var jdata = {};
                            xmlHttp.onreadystatechange = function () {
                                //console.log(JSON.stringify(xmlHttp));
                                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                                    try {
                                        jdata = JSON.parse(xmlHttp.responseText)
                                        //console.log(JSON.stringify(jdata));
                                    } catch (err) {}
                                    callback(jdata);
                                }
                        
                            }
                            xmlHttp.open("GET", theUrl, true); // true for asynchronous 
                            xmlHttp.send(null);
                        }
                        
                        function updateMapPage(res) {
                            var canvas = createCanvas();
                            var ctx = canvas.getContext('2d');
                        
                            let mapImageData;
                            var map;
                            canvas.height = 1024 * 4 //res.image.dimensions.height;
                            canvas.width = 1024 * 4 //res.image.dimensions.width;
                        
                            // Male Boden
                            if (res.image.pixels.floor && res.image.pixels.floor.length !== 0) {
                                ctx.fillStyle = COLOR_FLOOR;
                                res.image.pixels.floor.forEach(function (coord) {
                                    ctx.fillRect(coord[0] * 4 + res.image.position.left * 4, coord[1] * 4 + res.image.position.top * 4, 4, 4);
                        
                                });
                            }
                            // Male Wände
                            if (res.image.pixels.obstacle_strong && res.image.pixels.obstacle_strong.length !== 0) {
                                ctx.fillStyle = COLOR_WALLS;
                                res.image.pixels.obstacle_strong.forEach(function (coord) {
                                    ctx.fillRect(coord[0] * 4 + res.image.position.left * 4, coord[1] * 4 + res.image.position.top * 4, 4, 4);
                        
                                });
                            }
                        
                            // Male den Pfad
                            if (res.path.points && res.path.points.length !== 0) {
                                ctx.fillStyle = COLOR_PATH;
                                let first = true;
                                let cold1, cold2;
                        
                        
                        
                                res.path.points.forEach(function (coord) {
                                    if (first) {
                                        ctx.fillRect(coord[0] / 12.5, coord[1] / 50, 2, 2);
                                        cold1 = coord[0] / 12.5;
                                        cold2 = coord[1] / 12.5;
                                    } else {
                                        ctx.beginPath();
                                        ctx.lineWidth = 1;
                                        ctx.strokeStyle = "#FFFFFF";
                                        ctx.moveTo(cold1, cold2);
                                        ctx.lineTo(coord[0] / 12.5, coord[1] / 12.5);
                                        ctx.stroke();
                        
                                        cold1 = coord[0] / 12.5
                                        cold2 = coord[1] / 12.5
                                    }
                                    first = false
                        
                                });
                            }
                            // Zeichne Roboter
                            ctx.beginPath();
                            if (res.robot){
                                if (res.path.current_angle && typeof res.robot[0] !== "undefined" && typeof res.robot[1] !== "undefined") {
                                    canvasimg = rotateRobo(img, res.path.current_angle);
                                    ctx.drawImage(canvasimg, res.robot[0] / 12.5 - 15, res.robot[1] / 12.5 - 15, img.width, img.height);
                                } else {
                                    ctx.drawImage(img, res.robot[0] / 12.5 - 15, res.robot[1] / 12.5 - 15, img.width, img.height);
                                }
                            }
                            // Zeichne Ladestation wenn vorhanden
                            if (res.charger){
                                if (typeof res.charger[0] !== "undefined" && typeof res.charger[1] !== "undefined") {
                                    ctx.beginPath();
                                    ctx.drawImage(img_charger, res.charger[0] / 12.5 - 15, res.charger[1] / 12.5 - 15);
                                }
                            }
                          
                        
                        
                            // crop image
                            let canvas_final = createCanvas();
                            let ctx_final = canvas_final.getContext('2d');
                            var trimmed = ctx.getImageData(res.image.position.left * 4, res.image.position.top * 4, res.image.dimensions.width * 4, res.image.dimensions.height * 4);
                        
                            canvas_final.height = res.image.dimensions.height * 4;
                            canvas_final.width = res.image.dimensions.width * 4;
                        
                            ctx_final.putImageData(trimmed, 0, 0);
                        
                        
                            map = canvas_final.toDataURL();
                            setState("javascript.0.vis.RockroboMap", '<img src="' + canvas_final.toDataURL() + '" /style="width: 120% ;height: 130%;">');
                            //log('<img src="' + canvas_final.toDataURL() + '" />');
                        }
                        
                        function rotateRobo(img, angle) {
                            var canvasimg = createCanvas(img.width, img.height);
                            var ctximg = canvasimg.getContext('2d');
                            const offset = 90;
                        
                            ctximg.clearRect(0, 0, img.width, img.height);
                            ctximg.translate(img.width / 2, img.width / 2);
                            ctximg.rotate((angle + offset) * Math.PI / 180);
                            ctximg.translate(-img.width / 2, -img.width / 2);
                            ctximg.drawImage(img, 0, 0);
                            return canvasimg;
                        }
                        
                        
                        schedule("*/2 * * * * *", function () {
                            var robyState = getState(robotState).val;
                        
                            if (robyState === 5 || robyState === 11 || robyState === 17) httpGetAsync("http://" + robotIp + "/api/map/latest", updateMapPage);
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        399
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        admin langsam
                        4
                        10
                        965
                        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