Skip to content

Commit

Permalink
feat: convert to a platform plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
karlvr authored and donavanbecker committed Jan 21, 2025
1 parent 8e543f6 commit 0d0444b
Show file tree
Hide file tree
Showing 6 changed files with 337 additions and 204 deletions.
326 changes: 165 additions & 161 deletions config.schema.json
Original file line number Diff line number Diff line change
@@ -1,180 +1,184 @@
{
"pluginAlias": "Roomba2",
"pluginType": "accessory",
"pluginType": "platform",
"customUi": true,
"customUiPath": "./dist/homebridge-ui",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"required": true
},
"model": {
"type": "string",
"title": "Model",
"required": true
},
"serialnum": {
"type": "string",
"title": "Serial Number",
"required": false
},
"blid": {
"type": "string",
"title": "blid",
"required": true
},
"robotpwd": {
"type": "string",
"title": "Robot Password",
"required": true
},
"ipaddress": {
"type": "string",
"title": "IP Address",
"required": true
},
"debug": {
"type": "boolean",
"title": "Debug logging",
"required": false
},
"dockContactSensor": {
"type": "boolean",
"title": "Home",
"default": true,
"required": false
},
"runningContactSensor": {
"type": "boolean",
"title": "Running",
"required": false
},
"binContactSensor": {
"type": "boolean",
"title": "Bin Full",
"required": false
},
"dockingContactSensor": {
"type": "boolean",
"title": "Returning Home",
"required": false
},
"tankContactSensor": {
"type": "boolean",
"title": "Braava Water Tank",
"required": false
},
"homeSwitch": {
"type": "boolean",
"title": "Home",
"required": false
},
"cleanBehaviour": {
"type": "string",
"title": "When Roomba is turned on",
"required": true,
"default": "everywhere",
"oneOf": [
{ "title": "Clean everywhere", "enum": ["everywhere"] },
{ "title": "Clean specific rooms", "enum": ["rooms"] }
]
},
"mission": {
"type": "object",
"title": "Mission Info",
"properties": {
"ordered": {
"type": "number",
"title": "Clean rooms in order",
"default": 1,
"required": true,
"oneOf": [
{ "title": "Yes", "enum": [1] },
{ "title": "No", "enum": [0] }
],
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"pmap_id": {
"type": "string",
"title": "Pmap Id",
"required": true,
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"regions": {
"type": "array",
"title": "Rooms to be cleaned",
"items": {
"type": "object",
"properties": {
"region_id": {
"type": "string",
"title": "Region Id",
"required": true
},
"type": {
"type": "string",
"title": "Type",
"default": "rid",
"required": true
},
"params": {
"type": "object",
"properties": {
"noAutoPasses": {
"type": "boolean",
"required": false,
"default": false,
"title": "Specify Number of Cleaning Passes"
},
"twoPass": {
"type": "boolean",
"required": false,
"default": false,
"title": "Two Passes"
"type": "array",
"title": "Devices",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"required": true
},
"model": {
"type": "string",
"title": "Model",
"required": true
},
"serialnum": {
"type": "string",
"title": "Serial Number",
"required": false
},
"blid": {
"type": "string",
"title": "blid",
"required": true
},
"robotpwd": {
"type": "string",
"title": "Robot Password",
"required": true
},
"ipaddress": {
"type": "string",
"title": "IP Address",
"required": true
},
"debug": {
"type": "boolean",
"title": "Debug logging",
"required": false
},
"dockContactSensor": {
"type": "boolean",
"title": "Home",
"default": true,
"required": false
},
"runningContactSensor": {
"type": "boolean",
"title": "Running",
"required": false
},
"binContactSensor": {
"type": "boolean",
"title": "Bin Full",
"required": false
},
"dockingContactSensor": {
"type": "boolean",
"title": "Returning Home",
"required": false
},
"tankContactSensor": {
"type": "boolean",
"title": "Braava Water Tank",
"required": false
},
"homeSwitch": {
"type": "boolean",
"title": "Home",
"required": false
},
"cleanBehaviour": {
"type": "string",
"title": "When Roomba is turned on",
"required": true,
"default": "everywhere",
"oneOf": [
{ "title": "Clean everywhere", "enum": ["everywhere"] },
{ "title": "Clean specific rooms", "enum": ["rooms"] }
]
},
"mission": {
"type": "object",
"title": "Mission Info",
"properties": {
"ordered": {
"type": "number",
"title": "Clean rooms in order",
"default": 1,
"required": true,
"oneOf": [
{ "title": "Yes", "enum": [1] },
{ "title": "No", "enum": [0] }
],
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"pmap_id": {
"type": "string",
"title": "Pmap Id",
"required": true,
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"regions": {
"type": "array",
"title": "Rooms to be cleaned",
"items": {
"type": "object",
"properties": {
"region_id": {
"type": "string",
"title": "Region Id",
"required": true
},
"type": {
"type": "string",
"title": "Type",
"default": "rid",
"required": true
},
"params": {
"type": "object",
"properties": {
"noAutoPasses": {
"type": "boolean",
"required": false,
"default": false,
"title": "Specify Number of Cleaning Passes"
},
"twoPass": {
"type": "boolean",
"required": false,
"default": false,
"title": "Two Passes"
}
}
}
}
},
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
},
"user_pmapv_id": {
"type": "string",
"title": "User Pmapv Id",
"required": true,
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
"user_pmapv_id": {
"type": "string",
"title": "User Pmapv Id",
"required": true,
"condition": {
"functionBody": "return model.cleanBehaviour === 'rooms';"
}
}
}
},
"stopBehaviour": {
"type": "string",
"title": "When Roomba is turned off",
"required": true,
"default": "home",
"oneOf": [
{ "title": "Home", "enum": ["home"] },
{ "title": "Pause", "enum": ["pause"] }
]
}
},
"stopBehaviour": {
"type": "string",
"title": "When Roomba is turned off",
"required": true,
"default": "home",
"oneOf": [
{ "title": "Home", "enum": ["home"] },
{ "title": "Pause", "enum": ["pause"] }
]
},
"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
}
}
},
"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
},
"headerDisplay": "For more information and help please consult the [README](https://github.com/homebridge-plugins/homebridge-roomba2#setup).",
"layout": [
{
Expand Down
Loading

0 comments on commit 0d0444b

Please sign in to comment.