Added zone cleaning

This commit is contained in:
Antoine de Maleprade 2019-04-27 22:06:07 -07:00
parent 442b91c347
commit afe7d690ef

View File

@ -102,6 +102,33 @@ function NeatoVacuumRobotAccessory(robot, platform) {
this.vacuumRobotScheduleService = new Service.Switch(this.name + " Schedule", "schedule");
this.vacuumRobotBatteryService = new Service.BatteryService("Battery", "battery");
this.updatePersistentMaps(() => {
this.vacuumRobotCleanZoneServices = {};
this.maps.forEach((map) => {
map.boundaries.forEach((boundary) => {
if (boundary.type === "polygone") {
this.vacuumRobotCleanZoneServices[boundary.id] = new Service.Switch(this.name + " Clean the " + boundary.name, "clean");
this.vacuumRobotCleanZoneServices[boundary.id].getCharacteristic(Characteristic.On).on('set', (on, callback) => {
if(on){
if(that.robot.canStart) {
this.robot.startCleaningBoundary(this.eco, this.extraCare, boundary.id, (error, result) => {
if (error){
debug(error+": "+JSON.stringify(result));
return;
}
callback();
})
} else {
debug("Error, robot is already cleaning");
callback();
}
}
})
}
})
})
});
this.updateRobotTimer();
}
@ -371,6 +398,30 @@ NeatoVacuumRobotAccessory.prototype = {
}
},
updatePersistentMaps: function(callback) {
this.robot.getPersistentMaps((error, maps) => {
if (error) {
this.log.error(error + ": " + result);
return;
}
this.maps = maps;
let processedMapsCounter = 0
maps.forEach((map) => {
this.getMapBoundaries(map.id, (error, result) => {
if(error) {
this.log.error(error + ": " + result);
} else {
map.boundaries = result;
}
processedMapsCounter++;
if(processedMapsCounter == this.maps.length) {
callback();
}
})
})
})
},
updateRobotTimer: function () {
let that = this;
this.updateRobot(function (error, result) {