diff --git a/CHANGELOG.md b/CHANGELOG.md index 213e150..fca2a5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [2.1.0](https://github.com/homebridge-plugins/homebridge-roomba/releases/tag/v2.1.0) (2025-01-XX) + +### What's Changes +- Added option to use iRobot credentials to get devices info. +- Set default idleWatchInterval for plugin, but allow for override per device or overall plugin. +- Housekeeping and updated dependencies. + +**Full Changelog**: https://github.com/homebridge-plugins/homebridge-roomba/compare/v2.0.0...v2.1.0 + ## [2.0.0](https://github.com/homebridge-plugins/homebridge-roomba/releases/tag/v2.0.0) (2025-01-25) ### What's Changes diff --git a/config.schema.json b/config.schema.json index abd76ac..494d965 100644 --- a/config.schema.json +++ b/config.schema.json @@ -11,9 +11,34 @@ "name": { "type": "string", "title": "Name", - "default": "NoIP", + "default": "Roomba", "required": true }, + "email": { + "type": "string", + "title": "iRobot Account Email", + "description": "The email address you use to log into the iRobot Home app.", + "pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", + "required": true, + "x-schema-form": { + "type": "email" + } + }, + "password": { + "type": "string", + "title": "iRobot Account Password", + "description": "The password you use to log into the iRobot Home app.", + "required": true, + "x-schema-form": { + "type": "password" + } + }, + "disableDiscovery": { + "type": "boolean", + "title": "Disable Discovery", + "description": "Disable automatic discovery of Roomba devices. If you have multiple Roomba devices, you can disable discovery and manually configure each device.", + "required": false + }, "devices": { "type": "array", "items": { @@ -109,7 +134,6 @@ "type": "number", "title": "Clean rooms in order", "default": 1, - "required": true, "oneOf": [ { "title": "Yes", @@ -131,7 +155,6 @@ "pmap_id": { "type": "string", "title": "Pmap Id", - "required": true, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].cleanBehaviour === 'rooms');" } @@ -144,14 +167,12 @@ "properties": { "region_id": { "type": "string", - "title": "Region Id", - "required": true + "title": "Region Id" }, "type": { "type": "string", "title": "Type", - "default": "rid", - "required": true + "default": "rid" }, "params": { "type": "object", @@ -215,6 +236,12 @@ } } }, + "idleWatchInterval": { + "type": "integer", + "title": "Idle Poll Interval (minutes)", + "description": "How often to poll Roomba's status when it is idle. Defaults to 15 minutes.", + "required": false + }, "debug": { "type": "boolean", "title": "Debug logging", @@ -224,47 +251,69 @@ }, "layout": [ { - "key": "devices", - "notitle": false, - "type": "tabarray", - "title": "{{ value.name || value.ipaddress || value.serialnum || 'New Vacuum' }}", + "type": "fieldset", + "title": "iRobot Account", + "expandable": true, + "expanded": false, + "items": [ + "email", + "password" + ] + }, + { + "type": "fieldset", + "title": "Roomba Device Settings", "expandable": true, "expanded": false, - "orderable": false, "items": [ - "devices[].name", - "devices[].model", - "devices[].serialnum", - "devices[].blid", - "devices[].robotpwd", - "devices[].ipaddress", - "devices[].homeSwitch", - "devices[].dockContactSensor", - "devices[].dockingContactSensor", - "devices[].runningContactSensor", - "devices[].binContactSensor", - "devices[].tankContactSensor", - "devices[].idleWatchInterval", - "devices[].cleanBehaviour", { - "key": "devices[].mission", - "type": "fieldset", - "title": "Mission Settings", + "type": "help", + "helpvalue": "With Roomba Device Setting, you can set device specific settings based on blid." + }, + { + "key": "devices", + "notitle": false, + "type": "tabarray", + "title": "{{ value.name || value.ipaddress || value.serialnum || 'New Vacuum' }}", "expandable": true, "expanded": false, + "orderable": false, "items": [ - "devices[].mission.pmap_id", - "devices[].mission.user_pmapv_id", - "devices[].mission.regions", - "devices[].mission.regions[].region_id", - "devices[].mission.regions[].type", - "devices[].mission.regions[].params.noAutoPasses", - "devices[].mission.regions[].params.twoPass", - "devices[].mission.ordered" + "devices[].name", + "devices[].model", + "devices[].serialnum", + "devices[].blid", + "devices[].robotpwd", + "devices[].ipaddress", + "devices[].homeSwitch", + "devices[].dockContactSensor", + "devices[].dockingContactSensor", + "devices[].runningContactSensor", + "devices[].binContactSensor", + "devices[].tankContactSensor", + "devices[].idleWatchInterval", + "devices[].cleanBehaviour", + { + "key": "devices[].mission", + "type": "fieldset", + "title": "Mission Settings", + "expandable": true, + "expanded": false, + "items": [ + "devices[].mission.pmap_id", + "devices[].mission.user_pmapv_id", + "devices[].mission.regions", + "devices[].mission.regions[].region_id", + "devices[].mission.regions[].type", + "devices[].mission.regions[].params.noAutoPasses", + "devices[].mission.regions[].params.twoPass", + "devices[].mission.ordered" + ] + }, + "devices[].stopBehaviour", + "devices[].idleWatchInterval" ] - }, - "devices[].stopBehaviour", - "devices[].idleWatchInterval" + } ] }, { @@ -273,6 +322,8 @@ "expandable": true, "expanded": false, "items": [ + "idleWatchInterval", + "disableDiscovery", "debug" ] } diff --git a/docs/functions/default.html b/docs/functions/default.html index 78592c8..5730451 100644 --- a/docs/functions/default.html +++ b/docs/functions/default.html @@ -1,2 +1,2 @@