Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Roborock 1x am Tag starten

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    487

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Roborock 1x am Tag starten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 6 Kommentatoren 2.3k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    Night2k5
    schrieb am zuletzt editiert von
    #3

    Mit diesem Script versucht mein Xiaomi Roboter V1 jeden Tag ( außer Sonntag ) um 13:30 Uhr zu starten.

    Falls mein Handy im WLAN ist bekomme ich eine Nachricht auf mein Handy, dass der Staubsauger in 30 minuten nocheinmal versucht zu starten.

    Nach 3 Versuchen gibt er dann auf und probiert es den nächsten Tag wieder.

    Ich habe oben alle Einstellungen gekennzeichnet und beschrieben. Falls Fragen dazu da sind dann einfach raus damit.

    In der ersten Zeile musst du vielleicht noch die Startzeit anpassen.

    30 = minuten

    13 = stunden

    1-6 = tage ( Mo - Sa )

    Montag bis Freitag um 16 Uhr wäre dann z.B.: "0 16 * * 1-5"

    schedule("30 13 * * 1-6", function () {
    
        /*
         *
         *   Einstellungen
         *   vvvvvvvvvvvvv
         */
    
        // Handy über das WLAN vom TR64 Adapter checken
        var aktiv = getState("tr-064.0.devices.OnePlus-6.active").val;
    
        // Zeit in Stunden zwischen den Versuchen
        var zeit = 0.5;
    
        // Anzahl der Versuche die durchgeführt werden sollen
        var versuche = 3;
    
        // Staubsauger State
        var vacuum = "mihome-vacuum.0.control.start";
    
        // Telegram Nachricht aktivieren? dann auf 'true' ändern
        var telegram = false;
    
        /*
         *   ^^^^^^^^^^^^^^^^^^
         *   Einstellungen Ende
         *
         */
    
        // ab hier muss eigentlich nichts geändert werden
        timeout(versuche, zeit);
    
        function timeout(versuche, sec) {
            retry(1, versuche, sec);
        }
    
        function retry(n,n2,n3){
            var sec = n3*1000*3600;
    
            if(aktiv){
                if(n == n2){
                    if(telegram){
                        sendTo("telegram.0", "send", {
                            text: 'Staubsauger konnte nach ' + (n2) + ' Versuchen nicht gestartet werden.'
                        });
                    }
                } else {
                    if(telegram){
                        sendTo("telegram.0", "send", {
                            text: 'Versuch Nr. ' + (n) + ' von ' + n2 + ' den Staubsauger zu starten. Versuche in ' + (n3*60) + ' Min. nochmal.'
                        });
                    }
                    n++;
                    setTimeout(function () {
                        retry(n, n2, n3);
                    }, sec);
                }
    
            } else {
                // Staubsauger starten
                setState(vacuum, true);
                if(telegram){
                    sendTo("telegram.0", "send", {
                        text: 'Sir Saug-A-Lot beginnt seinen Dienst.'
                    });
                }
            }
    
        }
    
    });
    
    
    FruityF 1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      maxpd
      schrieb am zuletzt editiert von
      #4

      Danke Night2k5 für deinen Vorschlag,

      bei mir ist lediglich das Problem offen, dass er nur 1x am Tag fahren und das anhand seiner Cleaning History festmachen soll.

      Aber irgendwie zieht das nicht so wie im obigen Screenshot angedacht war.

      Gruß
      maxpd

      Raspi 4 8gb | iobroker + pivccu3 | 46 Adapter | 68 Scripte, 120 Devices

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #5

        @maxpd:

        Aber hierin scheint ein Fehler zu stecken. Wie frage ich denn ab, dass das letzte Änderungsdatum nicht dem heutigen Tag entspricht? `
        Du vergleichst eine Zahl (letzte Änderung, die als ms seit 1.1.1970 codiert wird) mit einer Zeichenkette, in der nur der aktuelle Tag steht. Das kann so nicht klappen.

        Es dürfte gehen, wenn du die letzte Änderung ebenfalls als Zeichenkette formatierst, auf die gleiche Weise wie das aktuelle Datum. Und das dann vergleichen.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • J Offline
          J Offline
          Jan1
          schrieb am zuletzt editiert von Jan1
          #6

          Da habe ich auch was für meinen Vorwerk, was so ziemlich Deinem Wunsch entspricht. Bei mir läuft der allerdings nur 3 mal die Woche Mo, Mi und Fr. Rreicht völlig aus beim Vorwerk, da der ne sehr gute Navigation hat und eine Stelle nur einmal saugt und erst fertig ist, wenn wirklich alles gesaugt wurde.

          Das Blockly ist sehr einfach und eigentlich selbsterklärend. Der DP "Anwesenheit", wird über ein extra Script, den tr-064 Adapter und WLAN Erkennung der Handys gesetzt.

          Grundsteuerung wenn keiner da, dann mach sauber, sonst setzte Variable "Reinigung_ausstehend"
          5076_1.png

          Start der ausstehenden Reinigung, wenn niemand mehr da ist
          ae7e8ac0-39bc-443f-a095-35c5298db95c-grafik.png

          Falls er mal manuell gestartet wurde und er noch ne ausstehende Reinigung hätte, wird das zurückgesetzt, damit er nicht 2 mal läuft (optional) (Aktion = 6 ist ein DP des VR200 und steht für gerade gereinigt)
          384217d4-a3f5-4487-86a9-28c928cd66f5-grafik.png

          Das Telegramm entfällt bei mir, da ich das über die Vorwerk APP eh auf's Handy bekomme ;)

          M 1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            maxpd
            schrieb am zuletzt editiert von
            #7

            Hallo Jan, ja das kommt dem ganzen schon nahe.

            Dann werde ich es auch so über eine Variable lösen.

            Ich dachte ich könnte mir die zusätzliche Logik sparen.

            Wie man die Millisekunden in Zeit umwandelt, weiß ich nämlich nicht ;)

            Gruß
            maxpd

            Raspi 4 8gb | iobroker + pivccu3 | 46 Adapter | 68 Scripte, 120 Devices

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #8

              @maxpd:

              Wie man die Millisekunden in Zeit umwandelt, weiß ich nämlich nicht ;) `

              Wie wäre es mit diesem Block? https://github.com/ioBroker/ioBroker.ja … -to-string

              In den Ausschnitt fügst du einfach "Letzte Änderung von ... " ein. Dann das Ergebnis davon mit der formatierten aktuellen Zeit (wie du es bereits hast) vergleichen.

              P.S. Millisekunden sind Zeit sind Zahlen, du darfst nur nicht Zahlen mit Zeichenketten in einem ganz anderen Format vergleichen

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • J Offline
                J Offline
                Jan1
                schrieb am zuletzt editiert von
                #9

                @maxpd:

                Hallo Jan, ja das kommt dem ganzen schon nahe.

                Dann werde ich es auch so über eine Variable lösen.

                Ich dachte ich könnte mir die zusätzliche Logik sparen.

                Wie man die Millisekunden in Zeit umwandelt, weiß ich nämlich nicht ;) `

                Warum willst denn überhaupt was mit der Zeit in Deinem Script anstellen? Die Aufgaben Stellung war doch das Ding einmal am Tag los zuschicken, wenn keiner da ist und das kannst doch über den Zeitplan wie in meinem ersten Bild anpassen.

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #10

                  @Jan1:

                  Die Aufgaben Stellung war doch das Ding einmal am Tag los zuschicken, wenn keiner da ist […] `
                  und das Teil noch nicht manuell gestartet wurde!
                  @maxpd:

                  und dies nur, wenn er noch nicht gelaufen ist. `
                  Und dafür muss man wissen, ob er am jeweiligen Tag schon gelaufen ist. Deine Lösung ist vermutlich flexibler, über die Zeit ist es aber ein "Einzeiler".

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  0
                  • J Offline
                    J Offline
                    Jan1
                    schrieb am zuletzt editiert von
                    #11

                    Ja dass das nix großartiges ist, ist klar. Bei mir frage ich einfach die Action 6 ab, dann weiß ich ob der lief ;)

                    1 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      maxpd
                      schrieb am zuletzt editiert von
                      #12

                      Also mit der Variante funktionierts immer noch nicht.
                      6072_2018-09-07_22_12_43-javascript_-_iobroker.png

                      Gruß
                      maxpd

                      Raspi 4 8gb | iobroker + pivccu3 | 46 Adapter | 68 Scripte, 120 Devices

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        maxpd
                        schrieb am zuletzt editiert von
                        #13

                        Also die Variante mit Datum der History auslesen bekomme ich nicht hin.

                        Nun habe ich es versucht mit der Variable, aber auch das funktioniert nicht. Wie kann ich die Variable auslesen, bzw. initial befüllen?

                        Bis nach der Falls Regel mit der Uhrzeit klappt alles.

                        6072_2018-09-23_21_53_16-javascript_-_iobroker.png

                        Gruß
                        maxpd

                        Raspi 4 8gb | iobroker + pivccu3 | 46 Adapter | 68 Scripte, 120 Devices

                        1 Antwort Letzte Antwort
                        0
                        • J Jan1

                          Da habe ich auch was für meinen Vorwerk, was so ziemlich Deinem Wunsch entspricht. Bei mir läuft der allerdings nur 3 mal die Woche Mo, Mi und Fr. Rreicht völlig aus beim Vorwerk, da der ne sehr gute Navigation hat und eine Stelle nur einmal saugt und erst fertig ist, wenn wirklich alles gesaugt wurde.

                          Das Blockly ist sehr einfach und eigentlich selbsterklärend. Der DP "Anwesenheit", wird über ein extra Script, den tr-064 Adapter und WLAN Erkennung der Handys gesetzt.

                          Grundsteuerung wenn keiner da, dann mach sauber, sonst setzte Variable "Reinigung_ausstehend"
                          5076_1.png

                          Start der ausstehenden Reinigung, wenn niemand mehr da ist
                          ae7e8ac0-39bc-443f-a095-35c5298db95c-grafik.png

                          Falls er mal manuell gestartet wurde und er noch ne ausstehende Reinigung hätte, wird das zurückgesetzt, damit er nicht 2 mal läuft (optional) (Aktion = 6 ist ein DP des VR200 und steht für gerade gereinigt)
                          384217d4-a3f5-4487-86a9-28c928cd66f5-grafik.png

                          Das Telegramm entfällt bei mir, da ich das über die Vorwerk APP eh auf's Handy bekomme ;)

                          M Offline
                          M Offline
                          matschkopf
                          schrieb am zuletzt editiert von
                          #14

                          @Jan1
                          Gutes, einfaches Skript.
                          Leider fehlt der der letzte Block (falls manuell gestartet wurde), hier ist ein falsches Bild zugeordnet (BlitzWolf Steckdose). Kannst du das richtige nochmal posten?

                          Danke.
                          Micha

                          J 1 Antwort Letzte Antwort
                          0
                          • M matschkopf

                            @Jan1
                            Gutes, einfaches Skript.
                            Leider fehlt der der letzte Block (falls manuell gestartet wurde), hier ist ein falsches Bild zugeordnet (BlitzWolf Steckdose). Kannst du das richtige nochmal posten?

                            Danke.
                            Micha

                            J Offline
                            J Offline
                            Jan1
                            schrieb am zuletzt editiert von
                            #15

                            @matschkopf
                            Ist ja lustig, da war mal das richtige drin. Habs geändert und auch gleich noch ein Fehler entfernt.

                            M 1 Antwort Letzte Antwort
                            1
                            • J Jan1

                              @matschkopf
                              Ist ja lustig, da war mal das richtige drin. Habs geändert und auch gleich noch ein Fehler entfernt.

                              M Offline
                              M Offline
                              matschkopf
                              schrieb am zuletzt editiert von
                              #16

                              @Jan1
                              Super, vielen Dank.

                              Ich war mir vorher nicht ganz sicher, aber jetzt mit dem Screenshot sehe ich, dass du tatsächlich die Bedingung Action ="6" abfragst.
                              Habe eben mal eine manuelle Reinigung dgf. und den DP geloggt:
                              vr200_log.jpg

                              Bei mir geht er auf "4", wenn die Reinigung beendet ist.
                              Es scheint bei dir ja seit mehr, als einem Jahr zu funktionieren...trotz dessen merkwürdig :nerd_face:

                              J 1 Antwort Letzte Antwort
                              0
                              • N Night2k5

                                Mit diesem Script versucht mein Xiaomi Roboter V1 jeden Tag ( außer Sonntag ) um 13:30 Uhr zu starten.

                                Falls mein Handy im WLAN ist bekomme ich eine Nachricht auf mein Handy, dass der Staubsauger in 30 minuten nocheinmal versucht zu starten.

                                Nach 3 Versuchen gibt er dann auf und probiert es den nächsten Tag wieder.

                                Ich habe oben alle Einstellungen gekennzeichnet und beschrieben. Falls Fragen dazu da sind dann einfach raus damit.

                                In der ersten Zeile musst du vielleicht noch die Startzeit anpassen.

                                30 = minuten

                                13 = stunden

                                1-6 = tage ( Mo - Sa )

                                Montag bis Freitag um 16 Uhr wäre dann z.B.: "0 16 * * 1-5"

                                schedule("30 13 * * 1-6", function () {
                                
                                    /*
                                     *
                                     *   Einstellungen
                                     *   vvvvvvvvvvvvv
                                     */
                                
                                    // Handy über das WLAN vom TR64 Adapter checken
                                    var aktiv = getState("tr-064.0.devices.OnePlus-6.active").val;
                                
                                    // Zeit in Stunden zwischen den Versuchen
                                    var zeit = 0.5;
                                
                                    // Anzahl der Versuche die durchgeführt werden sollen
                                    var versuche = 3;
                                
                                    // Staubsauger State
                                    var vacuum = "mihome-vacuum.0.control.start";
                                
                                    // Telegram Nachricht aktivieren? dann auf 'true' ändern
                                    var telegram = false;
                                
                                    /*
                                     *   ^^^^^^^^^^^^^^^^^^
                                     *   Einstellungen Ende
                                     *
                                     */
                                
                                    // ab hier muss eigentlich nichts geändert werden
                                    timeout(versuche, zeit);
                                
                                    function timeout(versuche, sec) {
                                        retry(1, versuche, sec);
                                    }
                                
                                    function retry(n,n2,n3){
                                        var sec = n3*1000*3600;
                                
                                        if(aktiv){
                                            if(n == n2){
                                                if(telegram){
                                                    sendTo("telegram.0", "send", {
                                                        text: 'Staubsauger konnte nach ' + (n2) + ' Versuchen nicht gestartet werden.'
                                                    });
                                                }
                                            } else {
                                                if(telegram){
                                                    sendTo("telegram.0", "send", {
                                                        text: 'Versuch Nr. ' + (n) + ' von ' + n2 + ' den Staubsauger zu starten. Versuche in ' + (n3*60) + ' Min. nochmal.'
                                                    });
                                                }
                                                n++;
                                                setTimeout(function () {
                                                    retry(n, n2, n3);
                                                }, sec);
                                            }
                                
                                        } else {
                                            // Staubsauger starten
                                            setState(vacuum, true);
                                            if(telegram){
                                                sendTo("telegram.0", "send", {
                                                    text: 'Sir Saug-A-Lot beginnt seinen Dienst.'
                                                });
                                            }
                                        }
                                
                                    }
                                
                                });
                                
                                
                                FruityF Offline
                                FruityF Offline
                                Fruity
                                schrieb am zuletzt editiert von
                                #17

                                @Night2k5 sagte in Roborock 1x am Tag starten:

                                Mit diesem Script versucht mein Xiaomi Roboter V1 jeden Tag ( außer Sonntag ) um 13:30 Uhr zu starten.

                                Falls mein Handy im WLAN ist bekomme ich eine Nachricht auf mein Handy, dass der Staubsauger in 30 minuten nocheinmal versucht zu starten.

                                Nach 3 Versuchen gibt er dann auf und probiert es den nächsten Tag wieder.

                                Ich habe oben alle Einstellungen gekennzeichnet und beschrieben. Falls Fragen dazu da sind dann einfach raus damit.

                                In der ersten Zeile musst du vielleicht noch die Startzeit anpassen.

                                30 = minuten

                                13 = stunden

                                1-6 = tage ( Mo - Sa )

                                Montag bis Freitag um 16 Uhr wäre dann z.B.: "0 16 * * 1-5"

                                schedule("30 13 * * 1-6", function () {
                                
                                    /*
                                     *
                                     *   Einstellungen
                                     *   vvvvvvvvvvvvv
                                     */
                                
                                    // Handy über das WLAN vom TR64 Adapter checken
                                    var aktiv = getState("tr-064.0.devices.OnePlus-6.active").val;
                                
                                    // Zeit in Stunden zwischen den Versuchen
                                    var zeit = 0.5;
                                
                                    // Anzahl der Versuche die durchgeführt werden sollen
                                    var versuche = 3;
                                
                                    // Staubsauger State
                                    var vacuum = "mihome-vacuum.0.control.start";
                                
                                    // Telegram Nachricht aktivieren? dann auf 'true' ändern
                                    var telegram = false;
                                
                                    /*
                                     *   ^^^^^^^^^^^^^^^^^^
                                     *   Einstellungen Ende
                                     *
                                     */
                                
                                    // ab hier muss eigentlich nichts geändert werden
                                    timeout(versuche, zeit);
                                
                                    function timeout(versuche, sec) {
                                        retry(1, versuche, sec);
                                    }
                                
                                    function retry(n,n2,n3){
                                        var sec = n3*1000*3600;
                                
                                        if(aktiv){
                                            if(n == n2){
                                                if(telegram){
                                                    sendTo("telegram.0", "send", {
                                                        text: 'Staubsauger konnte nach ' + (n2) + ' Versuchen nicht gestartet werden.'
                                                    });
                                                }
                                            } else {
                                                if(telegram){
                                                    sendTo("telegram.0", "send", {
                                                        text: 'Versuch Nr. ' + (n) + ' von ' + n2 + ' den Staubsauger zu starten. Versuche in ' + (n3*60) + ' Min. nochmal.'
                                                    });
                                                }
                                                n++;
                                                setTimeout(function () {
                                                    retry(n, n2, n3);
                                                }, sec);
                                            }
                                
                                        } else {
                                            // Staubsauger starten
                                            setState(vacuum, true);
                                            if(telegram){
                                                sendTo("telegram.0", "send", {
                                                    text: 'Sir Saug-A-Lot beginnt seinen Dienst.'
                                                });
                                            }
                                        }
                                
                                    }
                                
                                });
                                
                                

                                Hey Danke für diesen Script. Ich habe das Problem wenn ich ein zweites Gerät hinzufüge das er nur eins von beiden beachtet. Wie füge ich denn eine Regel hinzu, sodass er nur startet wenn beide Personen nicht anwesend sind?

                                Lg Michel

                                1 Antwort Letzte Antwort
                                0
                                • M matschkopf

                                  @Jan1
                                  Super, vielen Dank.

                                  Ich war mir vorher nicht ganz sicher, aber jetzt mit dem Screenshot sehe ich, dass du tatsächlich die Bedingung Action ="6" abfragst.
                                  Habe eben mal eine manuelle Reinigung dgf. und den DP geloggt:
                                  vr200_log.jpg

                                  Bei mir geht er auf "4", wenn die Reinigung beendet ist.
                                  Es scheint bei dir ja seit mehr, als einem Jahr zu funktionieren...trotz dessen merkwürdig :nerd_face:

                                  J Offline
                                  J Offline
                                  Jan1
                                  schrieb am zuletzt editiert von
                                  #18

                                  @matschkopf sagte in Roborock 1x am Tag starten:

                                  @Jan1
                                  Super, vielen Dank.

                                  Ich war mir vorher nicht ganz sicher, aber jetzt mit dem Screenshot sehe ich, dass du tatsächlich die Bedingung Action ="6" abfragst.
                                  Habe eben mal eine manuelle Reinigung dgf. und den DP geloggt:
                                  vr200_log.jpg

                                  Bei mir geht er auf "4", wenn die Reinigung beendet ist.
                                  Es scheint bei dir ja seit mehr, als einem Jahr zu funktionieren...trotz dessen merkwürdig :nerd_face:

                                  Kann sogar sein, dass die 6 bei mir falsch ist, da ich sehr selten manuell starte und das wohl nicht merke. Muss ich mal checken. Irgendwie muss ich ja mal drauf gekommen sein und das ist schon länger her :blush:

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  790

                                  Online

                                  32.5k

                                  Benutzer

                                  81.8k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe