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

  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Bool button als checkbox

NEWS

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

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

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

Bool button als checkbox

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vis
20 Beiträge 5 Kommentatoren 2.0k 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.
  • B Offline
    B Offline
    Brati
    schrieb am zuletzt editiert von
    #4

    Das hängt stark von deinen JS Erfahrungen ab. Du musst es im JS Adapter als neues Script einfügen und auf deine Bedürfnisse anpassen. Da sind jetzt noch ein paar Dinge drin, die du nicht bräuchtest. Sollte nur eine Inspiration sein. Beim direkt anpassen werde ich erst nach den Ferien helfen können.

    Grüße

    Brati

    CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      mufflon12
      schrieb am zuletzt editiert von
      #5

      JS erfahrung ist leider = 0 :D

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        Brati
        schrieb am zuletzt editiert von
        #6

        Hallo Mufflon12,

        so jetzt habe ich mehr Zeit,

        hier ist die View (ich muss sie in eine txt packen, weil es mehr als 50.000 Zeichen sind).

        RoborockView.txt

        und die funktioniert erst, wenn dieses Script im JS Adapter läuft:

        var IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
            IDFan       =   "mihome-vacuum.0.control.fan_power"/*Suction power*/,
            IDGoTo      =   "mihome-vacuum.0.control.goTo"/*Go to point*/,
            IDZoneClean =   "mihome-vacuum.0.control.zoneClean"/*Clean a zone*/,
            IDCarpet    =   "mihome-vacuum.0.control.carpet_mode"/*Carpet mode*/,
            IDStartClean=   'mihome-vacuum.0.control.start'/*Start vacuum*/,
            Zone1       =   "[26100,24500,29500,29000,1]", // Wohnzimmer incl. Teppich bis Terrasse
            Zone2       =   "[22500,25200,26000,29000,1]", // Wohnzimmer Teppichkante bis Tür
            Zone3       =   "[22500,25200,25900,26350,1]",// Wohnzimmer nur Laufbereich bis Teppichkante
            Zone3a      =  "[22500,25500,23100,28500,1]",// Wohnzimmer nur Laufbereich vor der Küche
            Zone4       =   "[18600,27050,22500,28600,1]", // Küche komplett
            Zone4a      =   "[18600,27250,22250,28600,1]", // Küche Laufbereich
            Zone5       =   "[18500,24800,22500,26650,1]", // Flur komplett
            Zone6       =   "[21400,25000,22500,26700,1]", // Flur nur bis Treppe
            ZoneP       =   "app_goto_target; [20400,27600]", // vor dem Mülleimer parken
            Zone        =   "",
            Timertaeglich,
            Logging     =   true,
            tag         =   new Date().getDay(), 
                      
            timer      =   false;
            
        // setState(IDRobo, "app_zoned_clean;[" + Zone4a + "]"); // Zone testen
        // setState(IDRobo, ZoneP);                             // Zielpunkt testen
        
        /*app_zoned_clean;[[27200,28800,28300,32700,1]] unten links, oben rechts, Anzahl */
        
        /* Zusammensetzen der Zonen für die Reinigung */
        function RZone(){
                Zone        =   "";        
                if (getState("javascript.0.Roborock.Zone1").val) Zone = Zone1;
                if (getState("javascript.0.Roborock.Zone2").val && Zone !=="") Zone = Zone + "," + Zone2;
                if (getState("javascript.0.Roborock.Zone2").val && Zone ==="") Zone = Zone2;
                if (getState("javascript.0.Roborock.Zone3").val && Zone !=="") Zone = Zone + "," + Zone3;
                if (getState("javascript.0.Roborock.Zone3").val && Zone ==="") Zone = Zone3;
                if (getState("javascript.0.Roborock.Zone4").val && Zone !=="") Zone = Zone + "," + Zone4;
                if (getState("javascript.0.Roborock.Zone4").val && Zone ==="") Zone = Zone4;
                if (getState("javascript.0.Roborock.Zone5").val && Zone !=="") Zone = Zone + "," + Zone5;
                if (getState("javascript.0.Roborock.Zone5").val && Zone ==="") Zone = Zone5;
            
           Zone= "app_zoned_clean;[" + Zone + "]";
        }
        
            
        /* aktuelle Randbedingungen abfragen... kann ergänz werden */
        function VarStatus(){
        
            tag     = new Date().getDay();
        }
        
        
        /* Zone auf Abruf in Vis */
        on({id: new RegExp('javascript\\.0\\.Roborock\\.Zone1' + "|" + 'javascript\\.0\\.Roborock\\.Zone2' + "|" + 'javascript\\.0\\.Roborock\\.Zone3' + "|" + 'javascript\\.0\\.Roborock\\.Zone4' + "|" + 'javascript\\.0\\.Roborock\\.Zone5'), val: true}, function (obj) {
            
            if (timer) clearTimeout(timer);
            timer = setTimeout(function () {
                RZone();
                setState(IDFan, 77);
                setState(IDCarpet, true);
                setState(IDRobo, Zone);
                setState("javascript.0.Roborock.Zone1", false);
                setState("javascript.0.Roborock.Zone2", false);
                setState("javascript.0.Roborock.Zone3", false);
                setState("javascript.0.Roborock.Zone4", false);
                setState("javascript.0.Roborock.Zone5", false);
                }, 10000);
        });
        
        
        
        /* tägliche Reinigung alles*/
        
        function TimerSetzen(value) {
            value   = value.split(":");
        var time    = value[1] + " " + value[0] + " * * *"; 
            log("täglicher Zeit: " + time);
            Timertaeglich   =   schedule(time, function (){
                Reinigungtaegl ();
            });
        };
        
        on({id: 'javascript.0.Roborock.Timer.Time', change: "ne"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            TimerSetzen(value);
            clearSchedule(Timertaeglich);
        });
        
        TimerSetzen(getState('javascript.0.Roborock.Timer.Time').val);
        
        function Reinigungtaegl() {
            VarStatus();
            
            if (getState("javascript.0.Roborock.Timer." + tag).val) {
                setState(IDFan, 77);
                setState(IDCarpet, true);
                setState(IDStartClean, true);
            
            }
        };
        
        
        
        
        createState('Roborock.Timer.1', false,{type: "boolean",name:"Montag",  role: "Montag"});
        createState('Roborock.Timer.2', false,{type: "boolean",name:"Dienstag",  role: "Dienstag"});
        createState('Roborock.Timer.3', false,{type: "boolean",name:"Mittwoch",  role: "Mittwoch"});
        createState('Roborock.Timer.4', false,{type: "boolean",name:"Donnerstag",  role: "Donnerstag"});
        createState('Roborock.Timer.5', false,{type: "boolean",name:"Freitag",  role: "Freitag"});
        createState('Roborock.Timer.Time', "14:00:00",{type: "string",name:"Startzeit",  role: "Startzeit"});
        createState('Roborock.Zone1', false,{type: "boolean",name:"Zone 1",  role: "Wz incl Teppich bis Terrasse"});
        createState('Roborock.Zone2', false,{type: "boolean",name:"Zone 2",  role: "Wz ab Teppich bis Tür"});
        createState('Roborock.Zone3', false,{type: "boolean",name:"Zone 3",  role: "Wz Laufbereich"});
        createState('Roborock.Zone4', false,{type: "boolean",name:"Zone 4",  role: "Küche komplett"});
        createState('Roborock.Zone5', false,{type: "boolean",name:"Zone 5",  role: "Flur komplett"});
        createState('Roborock.Zone6', false,{type: "boolean",name:"Zone 6",  role: "Flur vor der Treppe"});
        
        

        Dazu JS Adapter installieren und eine neues Script anlegen, reinkopieren und starten. Danach gibt es die State´s in den Objekten.

        Was du selber noch erledigen musst, ist das herausfinden der Zonenkoordinaten. Das ist immer die Ecke oben links und unten rechts. Mit der FloleVac App geht es auch per Copy&Paste.

        Du kannst damit die tägliche Reinigung planen und auf Anwahl die Zonen zusammenstellen. Dabei wartet das Script nach Anwahl einer Zone immer 10s bis alles gestartet wird. Der Powerknopf startet die komplette Reinigung.

        Viel Erfolg.

        Grüße

        Brati

        CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

        D S 2 Antworten Letzte Antwort
        0
        • M Offline
          M Offline
          mufflon12
          schrieb am zuletzt editiert von
          #7

          Hi vielen dank :)
          leider kann ich die view nicht importieren
          "Cannot render view test. Invalid settings"

          sigi234S 1 Antwort Letzte Antwort
          0
          • M mufflon12

            Hi vielen dank :)
            leider kann ich die view nicht importieren
            "Cannot render view test. Invalid settings"

            sigi234S Online
            sigi234S Online
            sigi234
            Forum Testing Most Active
            schrieb am zuletzt editiert von sigi234
            #8

            @mufflon12 sagte in Bool button als checkbox:

            Hi vielen dank :)
            leider kann ich die view nicht importieren
            "Cannot render view test. Invalid settings"

            Ist ein Widget!
            Als Widget in deine gewünschte View importieren............

            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Immer Daten sichern!

            M 1 Antwort Letzte Antwort
            0
            • sigi234S sigi234

              @mufflon12 sagte in Bool button als checkbox:

              Hi vielen dank :)
              leider kann ich die view nicht importieren
              "Cannot render view test. Invalid settings"

              Ist ein Widget!
              Als Widget in deine gewünschte View importieren............

              M Offline
              M Offline
              mufflon12
              schrieb am zuletzt editiert von
              #9

              @sigi234

              Vielen dank für die schnelle Antwort , jetzt läuft alles =)

              1 Antwort Letzte Antwort
              0
              • B Brati

                Hallo Mufflon12,

                so jetzt habe ich mehr Zeit,

                hier ist die View (ich muss sie in eine txt packen, weil es mehr als 50.000 Zeichen sind).

                RoborockView.txt

                und die funktioniert erst, wenn dieses Script im JS Adapter läuft:

                var IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
                    IDFan       =   "mihome-vacuum.0.control.fan_power"/*Suction power*/,
                    IDGoTo      =   "mihome-vacuum.0.control.goTo"/*Go to point*/,
                    IDZoneClean =   "mihome-vacuum.0.control.zoneClean"/*Clean a zone*/,
                    IDCarpet    =   "mihome-vacuum.0.control.carpet_mode"/*Carpet mode*/,
                    IDStartClean=   'mihome-vacuum.0.control.start'/*Start vacuum*/,
                    Zone1       =   "[26100,24500,29500,29000,1]", // Wohnzimmer incl. Teppich bis Terrasse
                    Zone2       =   "[22500,25200,26000,29000,1]", // Wohnzimmer Teppichkante bis Tür
                    Zone3       =   "[22500,25200,25900,26350,1]",// Wohnzimmer nur Laufbereich bis Teppichkante
                    Zone3a      =  "[22500,25500,23100,28500,1]",// Wohnzimmer nur Laufbereich vor der Küche
                    Zone4       =   "[18600,27050,22500,28600,1]", // Küche komplett
                    Zone4a      =   "[18600,27250,22250,28600,1]", // Küche Laufbereich
                    Zone5       =   "[18500,24800,22500,26650,1]", // Flur komplett
                    Zone6       =   "[21400,25000,22500,26700,1]", // Flur nur bis Treppe
                    ZoneP       =   "app_goto_target; [20400,27600]", // vor dem Mülleimer parken
                    Zone        =   "",
                    Timertaeglich,
                    Logging     =   true,
                    tag         =   new Date().getDay(), 
                              
                    timer      =   false;
                    
                // setState(IDRobo, "app_zoned_clean;[" + Zone4a + "]"); // Zone testen
                // setState(IDRobo, ZoneP);                             // Zielpunkt testen
                
                /*app_zoned_clean;[[27200,28800,28300,32700,1]] unten links, oben rechts, Anzahl */
                
                /* Zusammensetzen der Zonen für die Reinigung */
                function RZone(){
                        Zone        =   "";        
                        if (getState("javascript.0.Roborock.Zone1").val) Zone = Zone1;
                        if (getState("javascript.0.Roborock.Zone2").val && Zone !=="") Zone = Zone + "," + Zone2;
                        if (getState("javascript.0.Roborock.Zone2").val && Zone ==="") Zone = Zone2;
                        if (getState("javascript.0.Roborock.Zone3").val && Zone !=="") Zone = Zone + "," + Zone3;
                        if (getState("javascript.0.Roborock.Zone3").val && Zone ==="") Zone = Zone3;
                        if (getState("javascript.0.Roborock.Zone4").val && Zone !=="") Zone = Zone + "," + Zone4;
                        if (getState("javascript.0.Roborock.Zone4").val && Zone ==="") Zone = Zone4;
                        if (getState("javascript.0.Roborock.Zone5").val && Zone !=="") Zone = Zone + "," + Zone5;
                        if (getState("javascript.0.Roborock.Zone5").val && Zone ==="") Zone = Zone5;
                    
                   Zone= "app_zoned_clean;[" + Zone + "]";
                }
                
                    
                /* aktuelle Randbedingungen abfragen... kann ergänz werden */
                function VarStatus(){
                
                    tag     = new Date().getDay();
                }
                
                
                /* Zone auf Abruf in Vis */
                on({id: new RegExp('javascript\\.0\\.Roborock\\.Zone1' + "|" + 'javascript\\.0\\.Roborock\\.Zone2' + "|" + 'javascript\\.0\\.Roborock\\.Zone3' + "|" + 'javascript\\.0\\.Roborock\\.Zone4' + "|" + 'javascript\\.0\\.Roborock\\.Zone5'), val: true}, function (obj) {
                    
                    if (timer) clearTimeout(timer);
                    timer = setTimeout(function () {
                        RZone();
                        setState(IDFan, 77);
                        setState(IDCarpet, true);
                        setState(IDRobo, Zone);
                        setState("javascript.0.Roborock.Zone1", false);
                        setState("javascript.0.Roborock.Zone2", false);
                        setState("javascript.0.Roborock.Zone3", false);
                        setState("javascript.0.Roborock.Zone4", false);
                        setState("javascript.0.Roborock.Zone5", false);
                        }, 10000);
                });
                
                
                
                /* tägliche Reinigung alles*/
                
                function TimerSetzen(value) {
                    value   = value.split(":");
                var time    = value[1] + " " + value[0] + " * * *"; 
                    log("täglicher Zeit: " + time);
                    Timertaeglich   =   schedule(time, function (){
                        Reinigungtaegl ();
                    });
                };
                
                on({id: 'javascript.0.Roborock.Timer.Time', change: "ne"}, function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    TimerSetzen(value);
                    clearSchedule(Timertaeglich);
                });
                
                TimerSetzen(getState('javascript.0.Roborock.Timer.Time').val);
                
                function Reinigungtaegl() {
                    VarStatus();
                    
                    if (getState("javascript.0.Roborock.Timer." + tag).val) {
                        setState(IDFan, 77);
                        setState(IDCarpet, true);
                        setState(IDStartClean, true);
                    
                    }
                };
                
                
                
                
                createState('Roborock.Timer.1', false,{type: "boolean",name:"Montag",  role: "Montag"});
                createState('Roborock.Timer.2', false,{type: "boolean",name:"Dienstag",  role: "Dienstag"});
                createState('Roborock.Timer.3', false,{type: "boolean",name:"Mittwoch",  role: "Mittwoch"});
                createState('Roborock.Timer.4', false,{type: "boolean",name:"Donnerstag",  role: "Donnerstag"});
                createState('Roborock.Timer.5', false,{type: "boolean",name:"Freitag",  role: "Freitag"});
                createState('Roborock.Timer.Time', "14:00:00",{type: "string",name:"Startzeit",  role: "Startzeit"});
                createState('Roborock.Zone1', false,{type: "boolean",name:"Zone 1",  role: "Wz incl Teppich bis Terrasse"});
                createState('Roborock.Zone2', false,{type: "boolean",name:"Zone 2",  role: "Wz ab Teppich bis Tür"});
                createState('Roborock.Zone3', false,{type: "boolean",name:"Zone 3",  role: "Wz Laufbereich"});
                createState('Roborock.Zone4', false,{type: "boolean",name:"Zone 4",  role: "Küche komplett"});
                createState('Roborock.Zone5', false,{type: "boolean",name:"Zone 5",  role: "Flur komplett"});
                createState('Roborock.Zone6', false,{type: "boolean",name:"Zone 6",  role: "Flur vor der Treppe"});
                
                

                Dazu JS Adapter installieren und eine neues Script anlegen, reinkopieren und starten. Danach gibt es die State´s in den Objekten.

                Was du selber noch erledigen musst, ist das herausfinden der Zonenkoordinaten. Das ist immer die Ecke oben links und unten rechts. Mit der FloleVac App geht es auch per Copy&Paste.

                Du kannst damit die tägliche Reinigung planen und auf Anwahl die Zonen zusammenstellen. Dabei wartet das Script nach Anwahl einer Zone immer 10s bis alles gestartet wird. Der Powerknopf startet die komplette Reinigung.

                Viel Erfolg.

                Grüße

                Brati

                D Offline
                D Offline
                der-eine
                schrieb am zuletzt editiert von der-eine
                #10

                @Brati
                Hallo Brati, danke für das bereitstellen Deines Skripts. Würde es gerne für meinen V1 übernehmen.
                In unserer Wohnung gibt es 7 Zonen die bekanntlich ja nicht am Stück abgearbeitet werden können.
                In Deinem Skript sind ja auch 6 Zonen wie löst Du da das Problem der 5 Zonen +?
                Hoffe Du kannst mir helfen. Sitze hier schon länger dran und komme auf kein Ergebnis...
                Habe es auch schon mit Blockly probiert aber wie hier geschrieben, komme ich auch nicht weiter

                https://forum.iobroker.net/topic/4537/frage-xiaomi-vacuum-cleaner/2074

                Fange jetzt mal an die Datenpunkte umzuschreiben und hoffe es funktioniert.
                Falls nicht hättest Du Zeit und vor allem Lust mir dabei zu helfen?

                Danke schon mal für Deine Zeit!
                Gruß der-eine

                [edit 24.7.19] hab gerade gesehen, dass Du für die komplette Reinigung einfach StartClean machst. Das funktioniert bei mir nicht, weil der V1 immer wieder mal die Karte um 90° Grad dreht und dann die Koordinaten nicht mehr passen... Also bräuchte ich ein Skript das nach den ersten 5 Zonen und Status Rückfahrt zum Dock die letzten beiden Zonen triggert. Leider kann ich das nicht selber schreiben...

                B 1 Antwort Letzte Antwort
                0
                • D der-eine

                  @Brati
                  Hallo Brati, danke für das bereitstellen Deines Skripts. Würde es gerne für meinen V1 übernehmen.
                  In unserer Wohnung gibt es 7 Zonen die bekanntlich ja nicht am Stück abgearbeitet werden können.
                  In Deinem Skript sind ja auch 6 Zonen wie löst Du da das Problem der 5 Zonen +?
                  Hoffe Du kannst mir helfen. Sitze hier schon länger dran und komme auf kein Ergebnis...
                  Habe es auch schon mit Blockly probiert aber wie hier geschrieben, komme ich auch nicht weiter

                  https://forum.iobroker.net/topic/4537/frage-xiaomi-vacuum-cleaner/2074

                  Fange jetzt mal an die Datenpunkte umzuschreiben und hoffe es funktioniert.
                  Falls nicht hättest Du Zeit und vor allem Lust mir dabei zu helfen?

                  Danke schon mal für Deine Zeit!
                  Gruß der-eine

                  [edit 24.7.19] hab gerade gesehen, dass Du für die komplette Reinigung einfach StartClean machst. Das funktioniert bei mir nicht, weil der V1 immer wieder mal die Karte um 90° Grad dreht und dann die Koordinaten nicht mehr passen... Also bräuchte ich ein Skript das nach den ersten 5 Zonen und Status Rückfahrt zum Dock die letzten beiden Zonen triggert. Leider kann ich das nicht selber schreiben...

                  B Offline
                  B Offline
                  Brati
                  schrieb am zuletzt editiert von
                  #11

                  @der-eine Komme erst jetzt zum Antworten. Also Work Around würde mir nur einfallen, dass du auf den Status des Saugers triggerst und wenn sich dieser auf zum Weg zum Dock ändert, die letzten Zonen nachgeschoben werden.

                  Teste doch erst mal aus, ob man ihm die Zonen schicken kann, wenn er zum Dock fährt, oder ob man warten muss bis er wieder lädt. Der Rest sollte dann machbar ein.

                  Grüße

                  Brati

                  CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                  D 1 Antwort Letzte Antwort
                  0
                  • B Brati

                    @der-eine Komme erst jetzt zum Antworten. Also Work Around würde mir nur einfallen, dass du auf den Status des Saugers triggerst und wenn sich dieser auf zum Weg zum Dock ändert, die letzten Zonen nachgeschoben werden.

                    Teste doch erst mal aus, ob man ihm die Zonen schicken kann, wenn er zum Dock fährt, oder ob man warten muss bis er wieder lädt. Der Rest sollte dann machbar ein.

                    Grüße

                    Brati

                    D Offline
                    D Offline
                    der-eine
                    schrieb am zuletzt editiert von
                    #12

                    @Brati sorry hatte eher keine Zeit.

                    Es funktioniert, wenn er auf dem Rückweg zum Dock ist, das man ihn den Pause Befehl schickt und danach
                    erneut eine Zone.

                    Könnten wir da Dein Skript passend dazu umbauen? :grin:

                    Gruß
                    der-eine

                    B 1 Antwort Letzte Antwort
                    0
                    • D der-eine

                      @Brati sorry hatte eher keine Zeit.

                      Es funktioniert, wenn er auf dem Rückweg zum Dock ist, das man ihn den Pause Befehl schickt und danach
                      erneut eine Zone.

                      Könnten wir da Dein Skript passend dazu umbauen? :grin:

                      Gruß
                      der-eine

                      B Offline
                      B Offline
                      Brati
                      schrieb am zuletzt editiert von
                      #13

                      @der-eine Hmm, das wäre schon möglich. Wenn man es richtig angeht, sendet man 5 Zonen und nach der Reinigung dieser die restlichen hinterher. Das würde aber etwas mehr Arbeit bedeuten und ich kann es nicht testen.

                      Einfacher wäre, wenn man es sich in 5er Blöcke aufteilt und damit leben kann, dass er auch mal weniger als 5 Zonen abfährt und dann die restlichen x Zonen aus dem 2. Block.

                      Poste mal dein Script im Spoiler und ich schaue mal wann ich dazu kommen. Am Besten mit allen Zonen drin.

                      Grüße

                      Brati

                      CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                      1 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        der-eine
                        schrieb am zuletzt editiert von
                        #14

                        Hallo @Brati,

                        genau erst die ersten 5 Zonen wenn er dann zurück fährt eine pause und dann nochmal x Zonen nachschieben. Wie meinst Du das, dass man damit leben kann? Das er nur 5 Zonen reinigt und wenn er damit fertig ist und im Dock erneut losschickt?

                        Danke schon mal für Deine Zeit!
                        Es geht weder Spoiler noch Code weil es zu viele Zeichen sind.
                        Also hier als .txt-Datei
                        Hier mein Skript mit allen Zonen.
                        Zonenreinigung.txt

                        Gruß
                        der-eine

                        D 1 Antwort Letzte Antwort
                        0
                        • D der-eine

                          Hallo @Brati,

                          genau erst die ersten 5 Zonen wenn er dann zurück fährt eine pause und dann nochmal x Zonen nachschieben. Wie meinst Du das, dass man damit leben kann? Das er nur 5 Zonen reinigt und wenn er damit fertig ist und im Dock erneut losschickt?

                          Danke schon mal für Deine Zeit!
                          Es geht weder Spoiler noch Code weil es zu viele Zeichen sind.
                          Also hier als .txt-Datei
                          Hier mein Skript mit allen Zonen.
                          Zonenreinigung.txt

                          Gruß
                          der-eine

                          D Offline
                          D Offline
                          der-eine
                          schrieb am zuletzt editiert von
                          #15

                          @Brati ?

                          B 1 Antwort Letzte Antwort
                          0
                          • D der-eine

                            @Brati ?

                            B Offline
                            B Offline
                            Brati
                            schrieb am zuletzt editiert von
                            #16

                            @der-eine sagte in Bool button als checkbox:

                            @Brati ?

                            Habs leider vergessen, komme aber auch in den nächsten Wochen nicht zu :innocent:

                            CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                            D 1 Antwort Letzte Antwort
                            0
                            • B Brati

                              @der-eine sagte in Bool button als checkbox:

                              @Brati ?

                              Habs leider vergessen, komme aber auch in den nächsten Wochen nicht zu :innocent:

                              D Offline
                              D Offline
                              der-eine
                              schrieb am zuletzt editiert von
                              #17

                              @Brati Ok, schade

                              1 Antwort Letzte Antwort
                              0
                              • B Brati

                                Hallo Mufflon12,

                                so jetzt habe ich mehr Zeit,

                                hier ist die View (ich muss sie in eine txt packen, weil es mehr als 50.000 Zeichen sind).

                                RoborockView.txt

                                und die funktioniert erst, wenn dieses Script im JS Adapter läuft:

                                var IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
                                    IDFan       =   "mihome-vacuum.0.control.fan_power"/*Suction power*/,
                                    IDGoTo      =   "mihome-vacuum.0.control.goTo"/*Go to point*/,
                                    IDZoneClean =   "mihome-vacuum.0.control.zoneClean"/*Clean a zone*/,
                                    IDCarpet    =   "mihome-vacuum.0.control.carpet_mode"/*Carpet mode*/,
                                    IDStartClean=   'mihome-vacuum.0.control.start'/*Start vacuum*/,
                                    Zone1       =   "[26100,24500,29500,29000,1]", // Wohnzimmer incl. Teppich bis Terrasse
                                    Zone2       =   "[22500,25200,26000,29000,1]", // Wohnzimmer Teppichkante bis Tür
                                    Zone3       =   "[22500,25200,25900,26350,1]",// Wohnzimmer nur Laufbereich bis Teppichkante
                                    Zone3a      =  "[22500,25500,23100,28500,1]",// Wohnzimmer nur Laufbereich vor der Küche
                                    Zone4       =   "[18600,27050,22500,28600,1]", // Küche komplett
                                    Zone4a      =   "[18600,27250,22250,28600,1]", // Küche Laufbereich
                                    Zone5       =   "[18500,24800,22500,26650,1]", // Flur komplett
                                    Zone6       =   "[21400,25000,22500,26700,1]", // Flur nur bis Treppe
                                    ZoneP       =   "app_goto_target; [20400,27600]", // vor dem Mülleimer parken
                                    Zone        =   "",
                                    Timertaeglich,
                                    Logging     =   true,
                                    tag         =   new Date().getDay(), 
                                              
                                    timer      =   false;
                                    
                                // setState(IDRobo, "app_zoned_clean;[" + Zone4a + "]"); // Zone testen
                                // setState(IDRobo, ZoneP);                             // Zielpunkt testen
                                
                                /*app_zoned_clean;[[27200,28800,28300,32700,1]] unten links, oben rechts, Anzahl */
                                
                                /* Zusammensetzen der Zonen für die Reinigung */
                                function RZone(){
                                        Zone        =   "";        
                                        if (getState("javascript.0.Roborock.Zone1").val) Zone = Zone1;
                                        if (getState("javascript.0.Roborock.Zone2").val && Zone !=="") Zone = Zone + "," + Zone2;
                                        if (getState("javascript.0.Roborock.Zone2").val && Zone ==="") Zone = Zone2;
                                        if (getState("javascript.0.Roborock.Zone3").val && Zone !=="") Zone = Zone + "," + Zone3;
                                        if (getState("javascript.0.Roborock.Zone3").val && Zone ==="") Zone = Zone3;
                                        if (getState("javascript.0.Roborock.Zone4").val && Zone !=="") Zone = Zone + "," + Zone4;
                                        if (getState("javascript.0.Roborock.Zone4").val && Zone ==="") Zone = Zone4;
                                        if (getState("javascript.0.Roborock.Zone5").val && Zone !=="") Zone = Zone + "," + Zone5;
                                        if (getState("javascript.0.Roborock.Zone5").val && Zone ==="") Zone = Zone5;
                                    
                                   Zone= "app_zoned_clean;[" + Zone + "]";
                                }
                                
                                    
                                /* aktuelle Randbedingungen abfragen... kann ergänz werden */
                                function VarStatus(){
                                
                                    tag     = new Date().getDay();
                                }
                                
                                
                                /* Zone auf Abruf in Vis */
                                on({id: new RegExp('javascript\\.0\\.Roborock\\.Zone1' + "|" + 'javascript\\.0\\.Roborock\\.Zone2' + "|" + 'javascript\\.0\\.Roborock\\.Zone3' + "|" + 'javascript\\.0\\.Roborock\\.Zone4' + "|" + 'javascript\\.0\\.Roborock\\.Zone5'), val: true}, function (obj) {
                                    
                                    if (timer) clearTimeout(timer);
                                    timer = setTimeout(function () {
                                        RZone();
                                        setState(IDFan, 77);
                                        setState(IDCarpet, true);
                                        setState(IDRobo, Zone);
                                        setState("javascript.0.Roborock.Zone1", false);
                                        setState("javascript.0.Roborock.Zone2", false);
                                        setState("javascript.0.Roborock.Zone3", false);
                                        setState("javascript.0.Roborock.Zone4", false);
                                        setState("javascript.0.Roborock.Zone5", false);
                                        }, 10000);
                                });
                                
                                
                                
                                /* tägliche Reinigung alles*/
                                
                                function TimerSetzen(value) {
                                    value   = value.split(":");
                                var time    = value[1] + " " + value[0] + " * * *"; 
                                    log("täglicher Zeit: " + time);
                                    Timertaeglich   =   schedule(time, function (){
                                        Reinigungtaegl ();
                                    });
                                };
                                
                                on({id: 'javascript.0.Roborock.Timer.Time', change: "ne"}, function (obj) {
                                    var value = obj.state.val;
                                    var oldValue = obj.oldState.val;
                                    TimerSetzen(value);
                                    clearSchedule(Timertaeglich);
                                });
                                
                                TimerSetzen(getState('javascript.0.Roborock.Timer.Time').val);
                                
                                function Reinigungtaegl() {
                                    VarStatus();
                                    
                                    if (getState("javascript.0.Roborock.Timer." + tag).val) {
                                        setState(IDFan, 77);
                                        setState(IDCarpet, true);
                                        setState(IDStartClean, true);
                                    
                                    }
                                };
                                
                                
                                
                                
                                createState('Roborock.Timer.1', false,{type: "boolean",name:"Montag",  role: "Montag"});
                                createState('Roborock.Timer.2', false,{type: "boolean",name:"Dienstag",  role: "Dienstag"});
                                createState('Roborock.Timer.3', false,{type: "boolean",name:"Mittwoch",  role: "Mittwoch"});
                                createState('Roborock.Timer.4', false,{type: "boolean",name:"Donnerstag",  role: "Donnerstag"});
                                createState('Roborock.Timer.5', false,{type: "boolean",name:"Freitag",  role: "Freitag"});
                                createState('Roborock.Timer.Time', "14:00:00",{type: "string",name:"Startzeit",  role: "Startzeit"});
                                createState('Roborock.Zone1', false,{type: "boolean",name:"Zone 1",  role: "Wz incl Teppich bis Terrasse"});
                                createState('Roborock.Zone2', false,{type: "boolean",name:"Zone 2",  role: "Wz ab Teppich bis Tür"});
                                createState('Roborock.Zone3', false,{type: "boolean",name:"Zone 3",  role: "Wz Laufbereich"});
                                createState('Roborock.Zone4', false,{type: "boolean",name:"Zone 4",  role: "Küche komplett"});
                                createState('Roborock.Zone5', false,{type: "boolean",name:"Zone 5",  role: "Flur komplett"});
                                createState('Roborock.Zone6', false,{type: "boolean",name:"Zone 6",  role: "Flur vor der Treppe"});
                                
                                

                                Dazu JS Adapter installieren und eine neues Script anlegen, reinkopieren und starten. Danach gibt es die State´s in den Objekten.

                                Was du selber noch erledigen musst, ist das herausfinden der Zonenkoordinaten. Das ist immer die Ecke oben links und unten rechts. Mit der FloleVac App geht es auch per Copy&Paste.

                                Du kannst damit die tägliche Reinigung planen und auf Anwahl die Zonen zusammenstellen. Dabei wartet das Script nach Anwahl einer Zone immer 10s bis alles gestartet wird. Der Powerknopf startet die komplette Reinigung.

                                Viel Erfolg.

                                Grüße

                                Brati

                                S Offline
                                S Offline
                                Stadtschloss
                                schrieb am zuletzt editiert von Stadtschloss
                                #18

                                @Brati Hallo Brati, Entschuldigung, dass ich das alte Thema hochhole. Ich bin sehr interessier an deinem Code. Ich habe ein neues Script erstellt mit Javascript und deinen Code eingefügt. Leider bekomme ich folgenden Error wenn ich zum Beispiel Zone 1 auswähle im Vis:

                                22:56:17.087 warn javascript.0 (25960) at Object.<anonymous> (script.js.Robo2:60:10)

                                Könntest du mir sagen, wo mein Fehler liegt?
                                Vielen Dank!

                                B 1 Antwort Letzte Antwort
                                0
                                • S Stadtschloss

                                  @Brati Hallo Brati, Entschuldigung, dass ich das alte Thema hochhole. Ich bin sehr interessier an deinem Code. Ich habe ein neues Script erstellt mit Javascript und deinen Code eingefügt. Leider bekomme ich folgenden Error wenn ich zum Beispiel Zone 1 auswähle im Vis:

                                  22:56:17.087 warn javascript.0 (25960) at Object.<anonymous> (script.js.Robo2:60:10)

                                  Könntest du mir sagen, wo mein Fehler liegt?
                                  Vielen Dank!

                                  B Offline
                                  B Offline
                                  Brati
                                  schrieb am zuletzt editiert von
                                  #19

                                  @Stadtschloss

                                  Hallo,

                                  ist die ID deines Roboters, also die Variable IDRobo richtig dem State zugeordnet?

                                  IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
                                  

                                  Das könnte in Zeile 60 sonst zu einem Fehler führen.

                                  Grüße

                                  Brati

                                  CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                                  S 1 Antwort Letzte Antwort
                                  0
                                  • B Brati

                                    @Stadtschloss

                                    Hallo,

                                    ist die ID deines Roboters, also die Variable IDRobo richtig dem State zugeordnet?

                                    IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
                                    

                                    Das könnte in Zeile 60 sonst zu einem Fehler führen.

                                    Grüße

                                    Brati

                                    S Offline
                                    S Offline
                                    Stadtschloss
                                    schrieb am zuletzt editiert von Stadtschloss
                                    #20

                                    @Brati Danke das war es :) Den Befehl X_send_command gab es nicht. Hab den Datenpunkt manuell hinzugefügt. Perfektes Script!! Danke

                                    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

                                    351

                                    Online

                                    32.4k

                                    Benutzer

                                    81.4k

                                    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