Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Roborock Gen1 - Einzelraumreinigung mit Valetudo

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Roborock Gen1 - Einzelraumreinigung mit Valetudo

    This topic has been deleted. Only users with topic management privileges can see it.
    • AlCalzone
      AlCalzone Developer @TemPeck last edited by

      @TemPeck sagte in [Vorlage] Roborock Gen1 - Einzelraumreinigung mit Valetudo:

      eigentlich (so dachte ich) axios installiert.

      So nicht, so:

      Im Javascript-Adapter habe ich unter "Zusätzliche NPM-Module" auch axios eingetragen

      Eigentlich müsste es so funktionieren. Hast du bei der richtigen Instanz installiert? Gewartet, bis die Installation im Log als abgeschlossen steht?

      1 Reply Last reply Reply Quote 0
      • T
        TemPeck last edited by

        Ich habe nur eine Javascript-Instanz. Und laut log müsste es auch installiert sein:

        2020-03-28 22:20:37.561 - info: host.iobroker instance system.adapter.javascript.0 started with pid 30625
        2020-03-28 22:20:40.422 - info: javascript.0 (30625) starting. Version 4.4.3 in /opt/iobroker/node_modules/iobroker.javascript, node: v10.17.0
        2020-03-28 22:20:40.454 - info: javascript.0 (30625) npm install axios --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call)
        2020-03-28 22:20:42.755 - info: javascript.0 (30625) + axios@0.19.2
        added 4 packages from 7 contributors and audited 29 packages in 1.399s
        2020-03-28 22:20:42.756 - info: javascript.0 (30625) found 0 vulnerabilities
        2020-03-28 22:20:42.811 - info: javascript.0 (30625) requesting all states
        2020-03-28 22:20:42.813 - info: javascript.0 (30625) requesting all objects
        

        Meinst du, dass die Installation über "npm install axios -S" irgendwelche Probleme verursacht haben könnte?

        AlCalzone 1 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer @TemPeck last edited by

          @TemPeck Ich vermute eher, dass TypeScript sich an etwas verschluckt hat - obwohl die Fixes schon länger im Adapter enthalten sein müssten. Setz mal //@ts-ignore über die Import-Zeile.

          1 Reply Last reply Reply Quote 0
          • T
            TemPeck last edited by

            Erledigt - nun taucht kein Fehler auf.

            16:06:26.443	info	javascript.0 (1227) script.js.Test.Rockrobo2: compiling TypeScript source...
            16:06:26.599	info	javascript.0 (1227) script.js.Test.Rockrobo2: TypeScript compilation successful
            16:06:26.611	info	javascript.0 (1227) script.js.Test.Rockrobo2: registered 7 subscriptions and 0 schedules
            

            Ob alles klappt, kann ich erst später testen.

            Vielen Dank für den Support!

            1 Reply Last reply Reply Quote 0
            • T
              TemPeck last edited by

              Okay ich habe jetzt mal nur den Raum "Küche" angelegt und mit den umgerechneten Koordinaten im Script eingefügt.

              Sobald ich den Datenpunkt Küche unter javascript.0.Staubsauger mit "wahr" belege, sollte er anfangen, oder hab ich da was falsch verstanden?

              Im log passiert daraufhin lediglich folgendes:

              javascript.0	2020-03-29 17:12:13.285	info	(1227) script.js.Test.Rockrobo2: Teste Kartenorientierung...
              

              danach passiert nichts mehr.

              Wenn ich das im Script richtig sehe, sollte danach etwas mit axios "passieren".
              Scheint mir, als wäre der Fehler daher nicht behoben, oder?

              Grüße!

              AlCalzone 1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @TemPeck last edited by

                @TemPeck sagte in [Vorlage] Roborock Gen1 - Einzelraumreinigung mit Valetudo:

                Wenn ich das im Script richtig sehe, sollte danach etwas mit axios "passieren".

                Ja, sollte es. Bekommst du eine Antwort, wenn du manuell im Browser http://<dein-robo-hostname>/api/map/latest öffnest?

                1 Reply Last reply Reply Quote 0
                • T
                  TemPeck last edited by

                  Ja, er lädt eine 1KB große Datei mit dem Namen "latest"

                  AlCalzone 1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer @TemPeck last edited by

                    Ich hab da noch ne Idee: Du hast keine Authentifizierung aktiviert, aber im Skript die Zeilen 5-8 drin gelassen?

                    const valetudoAuth = {
                    	username: "valetudo-username",
                    	password: "valetudo-password"
                    };
                    

                    Lösch die mal raus oder kommentiere sie aus ( // davor)

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      TemPeck @AlCalzone last edited by

                      @AlCalzone Das Auskommentieren (später - bei mir Zeile 107 - muss dann in der Folge auch noch einmal ausgeklammert werden) sowie der Versuch, die HTTP-Authentifizierung zu aktivieren und die Zugangsdaten einzutragen, haben jeweils wieder das selbe Ergebnis erbracht... 😕

                      1 Reply Last reply Reply Quote 0
                      • W
                        womi last edited by womi

                        @AlCalzone
                        Vielen Dank für das Script bzw. die Idee, wie die Sache mit der gelegentlichen Kartenrotation gelöst werden könnte.
                        Sieht spannend aus.
                        Allerdings habe ich mit dem Script (Version 1) diverse Probleme, die ich noch gelöst bekommen muss:

                        (0) Ich habe auch ein //@ts-ignore vor dem import axios from "axios"; gebraucht, damit das Script überhaupt läuft. OK.

                        (1) Wenn ich den Sauger in einem Raum ohne die Dockingstation laufen lasse und danach auf die Station zurückstelle, enthält die letzte Karte keine Position "charger" und das Script hängt. Das Hängen kann ich programmatisch lösen, indem ich für charger und robot irgendwelche Werte vordefiniere, die dann überschrieben werden, wenn etwas zurückkommt. Ich weiß nur noch nicht, wie ich darauf sinnvoll reagieren könnte. Vielleicht kurz zum Saugen schicken und wieder heim, damit er die Karte neu aufbaut. Vielleicht reicht auch ein "Home"-Befehl. Muss ich noch ausprobieren.

                        (2) Problematischer ist, dass die Funktion setStateAsync nicht zuverlässig funktioniert.

                        function setStateAsync(id: string, state: any): Promise<void> {
                            return new Promise(res => {
                                setState(id, state, () => res());
                            });
                        }
                        

                        Nicht zuverlässig funktioniert heißt in dem Fall, es wartet nicht und dann erhalte ich als Kartenrotation für die Raumreinigung manchmal (meistens) -1 anstatt dem berechneten Wert. Das lässt sich auch lösen, indem ich den Wert nicht mit der Kombination aus

                        function rememberMapRotation(rotation: number): Promise<void> {
                            return setStateAsync(idMapRotated, rotation);   //Funktioniert nicht zuverlässig
                        }
                        

                        und

                        function getMapRotation(): number {
                            return getState(idMapRotated).val;
                        }
                        

                        schreibe und wieder hole, sondern die Raumreinigung so starte:

                        cleanRoom(room,await testMapRotation());
                        

                        aber das kommt mir doch recht seltsam vor. Da kann man sich den zusätzlichen state ja gleich sparen.
                        Und Du hättest es ja wohl nicht so gemacht, wenn es nicht eigentlich funktionieren würde.
                        Was habe ich übersehen?

                        Beste Grüße

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        768
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        javascript template
                        5
                        26
                        3660
                        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