NEWS
Alexa Multi- Raumreinugung für Roborock/Xioami
-
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) } -
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) }@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
-
@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
@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. -
@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.@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 😀
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