Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Alexa Multi- Raumreinugung für Roborock/Xioami

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    368

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    325

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    945

Alexa Multi- Raumreinugung für Roborock/Xioami

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 500 Aufrufe 1 Beobachtet
  • Ä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.
  • MeistertrM Offline
    MeistertrM Offline
    Meistertr
    Developer
    schrieb am zuletzt editiert von Meistertr
    #1

    Hallo Leute, mich hat es immer genervt die Raumreinigung über Die App oder meiner Visu zu starten, also hab ich ein kleines Script geschrieben, welches die Räume aus der Alexa history sucht und die jeweiligen Räume saugen lässt. Funktioniert erschrocken zuverlässig.

    In meinem Fall für 2 Sauger und 2 Geschosse

    
    const rooms = [
        { name : 'Kueche', id : 17, regex : /küche|Küche/, text : 'Küche', floor: 0 },
        { name : 'Flur_unten', id : 19, regex : /flur unten|Flur unten|diele unten/, text : 'Flur unten', floor: 0},
        { name : 'Gaestebad', id : 20, regex : /gästebad|gästebadezimmer/, text : 'Gästebadezimmer', floor: 0},
        { name : 'Wohnbereich', id : 18, regex : /wohnzimmer|wohnbereich/, text : 'Wohnbereich', floor: 0 },
        { name : 'Essbereich', id : 16, regex : /essbereich|esszimmer|Essbereich|Esszimmer/, text : 'Essbereich', floor: 0 },
        { name : 'Vorratsraum', id : 21, regex : /vorratsraum|speisekammer/, text : 'Vorratsraum', floor: 0},
        //Obergeschoss
        { name : 'kind1', id : 7, regex : /kind1/, text : 'Luisa`s Zimmer', floor: 1},
        { name : 'kind2', id : 6, regex : /kind2/, text : 'Finja`s Zimmer', floor: 1},
        { name : 'Badezimmer', id : 7, regex : / bad| badezimmer/, text : 'Badezimmer', floor: 1},
        { name : 'Schlafzimmer', id : 5, regex : /Schlafzimmer|schlafzimmer/, text : 'Schlafzimmer', floor: 1},
        { name : 'Waschkammer', id : 18, regex : /waschkammer|wäschekammer| wäsche kammer/, text : 'Waschkammer', floor: 1},
        { name : 'Arbeitszimmer', id : 16, regex : /arbeitszimmmer|gästezimmer/, text : 'Badezimmer', floor: 1},
        { name : 'Flur_oben', id : 17, regex : /flur oben|Flur unten/, text : 'Flur oben', floor: 1},
    
    ]
    const debug = true;
    let id = ''
    
    
    subscribe({
      id: "alexa2.0.History.summary",
      change: "ne" 
    }, function(obj) {
        id = getState('alexa2.0.History.serialNumber'/*serialNumber*/).val
        debug && log('Starte id '+ id)
    
        findNewRooms(obj.state.val)
    });
    //{"id":8480,"method":"app_segment_clean","params":[{"segments":[17],"repeat":2,"clean_order_mode":0}]}
    function findNewRooms(array){
        const wrongkey = array.match(/sprich mir nach|asd/);
        const key = array.match(/sauge|sage|reinige|wische|staubsauger/);
        
        if(wrongkey || !key) return
        debug && log(array);
    
        const zweimal = array.match(/zwei mal/);
        const dreimal = array.match(/drei mal/);
        let wiederholung = 1;
        let speakText = 'Aber ich lasse den Staubsauger ';
        let room0IdArray = [];
        let room1IdArray = [];
    
        rooms.forEach((room, index) => {
    
            const findRoom = array.match(room.regex);
            findRoom && debug && log(room.text + ' erkannt')
            if(findRoom){
                if(room0IdArray.length != 0 || room1IdArray.length != 0) speakText += ','
                if(room.floor == 0 ) room0IdArray.push(room.id);
                if(room.floor == 1 ) room1IdArray.push(room.id);
                speakText += ' '+ room.text  
            }
        });
        const n = speakText.lastIndexOf(',');
        speakText = speakText.slice(0, n) + speakText.slice(n).replace(',', ' und');  
    
        debug && log(JSON.stringify(room0IdArray))
        debug && log(JSON.stringify(room1IdArray))
        if(zweimal){
            wiederholung = 2
            speakText += ' zwei mal'
        } 
        if(dreimal){
            wiederholung = 3
            speakText += ' drei mal'
        }
    
        setStateDelayed('alexa2.0.Echo-Devices.'+ id +'.Commands.speak', speakText +' saugen!',1500);
    
        //starte Roboter Unten
        if(room0IdArray.length != 0) setStateDelayed('mihome-vacuum.0.control.X_send_command','app_segment_clean;[{"segments":'+JSON.stringify(room0IdArray)+',"repeat":'+ wiederholung +',"clean_order_mode":0}]',3000)
        // starte Roboter oben
        if(room1IdArray.length != 0) setStateDelayed('mihome-vacuum.1.control.X_send_command','app_segment_clean;[{"segments":'+JSON.stringify(room1IdArray)+',"repeat":'+ wiederholung +',"clean_order_mode":0}]',3000)
    
    
    }
    
    D 1 Antwort Letzte Antwort
    0
    • MeistertrM Meistertr

      Hallo Leute, mich hat es immer genervt die Raumreinigung über Die App oder meiner Visu zu starten, also hab ich ein kleines Script geschrieben, welches die Räume aus der Alexa history sucht und die jeweiligen Räume saugen lässt. Funktioniert erschrocken zuverlässig.

      In meinem Fall für 2 Sauger und 2 Geschosse

      
      const rooms = [
          { name : 'Kueche', id : 17, regex : /küche|Küche/, text : 'Küche', floor: 0 },
          { name : 'Flur_unten', id : 19, regex : /flur unten|Flur unten|diele unten/, text : 'Flur unten', floor: 0},
          { name : 'Gaestebad', id : 20, regex : /gästebad|gästebadezimmer/, text : 'Gästebadezimmer', floor: 0},
          { name : 'Wohnbereich', id : 18, regex : /wohnzimmer|wohnbereich/, text : 'Wohnbereich', floor: 0 },
          { name : 'Essbereich', id : 16, regex : /essbereich|esszimmer|Essbereich|Esszimmer/, text : 'Essbereich', floor: 0 },
          { name : 'Vorratsraum', id : 21, regex : /vorratsraum|speisekammer/, text : 'Vorratsraum', floor: 0},
          //Obergeschoss
          { name : 'kind1', id : 7, regex : /kind1/, text : 'Luisa`s Zimmer', floor: 1},
          { name : 'kind2', id : 6, regex : /kind2/, text : 'Finja`s Zimmer', floor: 1},
          { name : 'Badezimmer', id : 7, regex : / bad| badezimmer/, text : 'Badezimmer', floor: 1},
          { name : 'Schlafzimmer', id : 5, regex : /Schlafzimmer|schlafzimmer/, text : 'Schlafzimmer', floor: 1},
          { name : 'Waschkammer', id : 18, regex : /waschkammer|wäschekammer| wäsche kammer/, text : 'Waschkammer', floor: 1},
          { name : 'Arbeitszimmer', id : 16, regex : /arbeitszimmmer|gästezimmer/, text : 'Badezimmer', floor: 1},
          { name : 'Flur_oben', id : 17, regex : /flur oben|Flur unten/, text : 'Flur oben', floor: 1},
      
      ]
      const debug = true;
      let id = ''
      
      
      subscribe({
        id: "alexa2.0.History.summary",
        change: "ne" 
      }, function(obj) {
          id = getState('alexa2.0.History.serialNumber'/*serialNumber*/).val
          debug && log('Starte id '+ id)
      
          findNewRooms(obj.state.val)
      });
      //{"id":8480,"method":"app_segment_clean","params":[{"segments":[17],"repeat":2,"clean_order_mode":0}]}
      function findNewRooms(array){
          const wrongkey = array.match(/sprich mir nach|asd/);
          const key = array.match(/sauge|sage|reinige|wische|staubsauger/);
          
          if(wrongkey || !key) return
          debug && log(array);
      
          const zweimal = array.match(/zwei mal/);
          const dreimal = array.match(/drei mal/);
          let wiederholung = 1;
          let speakText = 'Aber ich lasse den Staubsauger ';
          let room0IdArray = [];
          let room1IdArray = [];
      
          rooms.forEach((room, index) => {
      
              const findRoom = array.match(room.regex);
              findRoom && debug && log(room.text + ' erkannt')
              if(findRoom){
                  if(room0IdArray.length != 0 || room1IdArray.length != 0) speakText += ','
                  if(room.floor == 0 ) room0IdArray.push(room.id);
                  if(room.floor == 1 ) room1IdArray.push(room.id);
                  speakText += ' '+ room.text  
              }
          });
          const n = speakText.lastIndexOf(',');
          speakText = speakText.slice(0, n) + speakText.slice(n).replace(',', ' und');  
      
          debug && log(JSON.stringify(room0IdArray))
          debug && log(JSON.stringify(room1IdArray))
          if(zweimal){
              wiederholung = 2
              speakText += ' zwei mal'
          } 
          if(dreimal){
              wiederholung = 3
              speakText += ' drei mal'
          }
      
          setStateDelayed('alexa2.0.Echo-Devices.'+ id +'.Commands.speak', speakText +' saugen!',1500);
      
          //starte Roboter Unten
          if(room0IdArray.length != 0) setStateDelayed('mihome-vacuum.0.control.X_send_command','app_segment_clean;[{"segments":'+JSON.stringify(room0IdArray)+',"repeat":'+ wiederholung +',"clean_order_mode":0}]',3000)
          // starte Roboter oben
          if(room1IdArray.length != 0) setStateDelayed('mihome-vacuum.1.control.X_send_command','app_segment_clean;[{"segments":'+JSON.stringify(room1IdArray)+',"repeat":'+ wiederholung +',"clean_order_mode":0}]',3000)
      
      
      }
      
      D Nicht stören
      D Nicht stören
      dirkhe
      Developer
      schrieb am zuletzt editiert von dirkhe
      #2

      @meistertr hi,
      Du hast doch jeweils an den Räumen cleanRoom

      {
        "type": "state",
        "common": {
          "name": "clean Room",
          "type": "boolean",
          "role": "button",
          "read": false,
          "write": true,
          "desc": "Start Room Cleaning",
          "smartName": {
            "de": "sauge Wohnzimmer"
          }
        },
        "native": {},
        "from": "system.adapter.mihome-vacuum.0",
        "user": "system.user.admin",
        "ts": 1578400811474,
        "_id": "mihome-vacuum.0.rooms.20001007939.roomClean",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Ich kann einfacb sagen alexa, sauge Wohnzimmer. Wenn ich das dann 2x hintereinander sage, macht er dass auch

      MeistertrM 1 Antwort Letzte Antwort
      0
      • D dirkhe

        @meistertr hi,
        Du hast doch jeweils an den Räumen cleanRoom

        {
          "type": "state",
          "common": {
            "name": "clean Room",
            "type": "boolean",
            "role": "button",
            "read": false,
            "write": true,
            "desc": "Start Room Cleaning",
            "smartName": {
              "de": "sauge Wohnzimmer"
            }
          },
          "native": {},
          "from": "system.adapter.mihome-vacuum.0",
          "user": "system.user.admin",
          "ts": 1578400811474,
          "_id": "mihome-vacuum.0.rooms.20001007939.roomClean",
          "acl": {
            "object": 1636,
            "state": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator"
          }
        }
        

        Ich kann einfacb sagen alexa, sauge Wohnzimmer. Wenn ich das dann 2x hintereinander sage, macht er dass auch

        MeistertrM Offline
        MeistertrM Offline
        Meistertr
        Developer
        schrieb am zuletzt editiert von
        #3

        @dirkhe weil über cleanRoom muss ich jeden raum einzeln benennen Also "Alexa, sauge bad, Alexa Sauge Flur...." und in dem Fall ist zweimal saugen ja zwei Einzel Reinigungen. Das bedeutet, dass er nicht über kreuz saugt.
        Mit der Lösung kann ich sagen "Alexa, sauge Flur, Bad, Esszimmer und Wohnzimmer zwei mal" und die räume werden zweimal über kreuz gesaugt. Bei insgesamt 14 Räumen ist das eine wesentliche Erleichterung.

        D 1 Antwort Letzte Antwort
        0
        • MeistertrM Meistertr

          @dirkhe weil über cleanRoom muss ich jeden raum einzeln benennen Also "Alexa, sauge bad, Alexa Sauge Flur...." und in dem Fall ist zweimal saugen ja zwei Einzel Reinigungen. Das bedeutet, dass er nicht über kreuz saugt.
          Mit der Lösung kann ich sagen "Alexa, sauge Flur, Bad, Esszimmer und Wohnzimmer zwei mal" und die räume werden zweimal über kreuz gesaugt. Bei insgesamt 14 Räumen ist das eine wesentliche Erleichterung.

          D Nicht stören
          D Nicht stören
          dirkhe
          Developer
          schrieb am zuletzt editiert von
          #4

          @meistertr es führen ja bekanntlich viele Wege nach Rom..
          Bei uns fährtver halt immer per timer in wz und Küche und bad flur und Schlafzimmer sporadisch, aber das klappt dann mit den einzel ansagen ganz gut, aber das ist ja das schöne an iobroker, nen kleines script und das leben ist wieder leichter 😀

          1 Antwort Letzte Antwort
          0

          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

          Registrieren Anmelden
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          565

          Online

          32.8k

          Benutzer

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