mirror of https://github.com/Hypfer/Valetudo.git
503 lines
15 KiB
JSON
503 lines
15 KiB
JSON
{
|
|
"components": {
|
|
"schemas": {
|
|
"Configuration": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"embedded": {
|
|
"type": "boolean",
|
|
"description": "Whether or not Valetudo is running on the robot itself.\nDetermines if we can do FS access and more."
|
|
},
|
|
"robot": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"implementation"
|
|
],
|
|
"properties": {
|
|
"implementation": {
|
|
"type": "string",
|
|
"description": "The name of the implementation that should be used.\nUse \"auto\" to autodetect when embedded."
|
|
},
|
|
"implementationSpecificConfig": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"webserver": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"port",
|
|
"basicAuth"
|
|
],
|
|
"properties": {
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"basicAuth": {
|
|
"$ref": "#/components/schemas/BasicAuthConfigDTO"
|
|
},
|
|
"blockExternalAccess": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"mqtt": {
|
|
"$ref": "#/components/schemas/MqttConfigDTO"
|
|
},
|
|
"ntpClient": {
|
|
"$ref": "#/components/schemas/NTPClientConfigDTO"
|
|
},
|
|
"networkAdvertisement": {
|
|
"$ref": "#/components/schemas/NetworkAdvertisementConfigDTO"
|
|
},
|
|
"updater": {
|
|
"$ref": "#/components/schemas/UpdaterConfigDTO"
|
|
},
|
|
"timers": {
|
|
"type": "object"
|
|
},
|
|
"logLevel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"trace",
|
|
"debug",
|
|
"info",
|
|
"warn",
|
|
"error"
|
|
]
|
|
},
|
|
"debug": {
|
|
"type": "object"
|
|
},
|
|
"oobe": {
|
|
"type": "object",
|
|
"description": "Everything related to the Out-of-box experience",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"welcomeDialogDismissed": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"valetudo": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"customizations": {
|
|
"$ref": "#/components/schemas/ValetudoCustomizationsDTO"
|
|
}
|
|
}
|
|
},
|
|
"_version": {
|
|
"type": "string",
|
|
"description": "Used for migration purposes"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoCustomizationsDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"friendlyName": {
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z0-9 -]{0,24}$",
|
|
"description": "An optional user-defined friendly name for the Valetudo instance"
|
|
}
|
|
}
|
|
},
|
|
"MqttConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"connection",
|
|
"identity",
|
|
"customizations",
|
|
"interfaces"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"host",
|
|
"port"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"ca": {
|
|
"type": "string",
|
|
"description": "This may optionally contain a CA certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"ignoreCertificateErrors": {
|
|
"type": "boolean",
|
|
"description": "This option might be required when using a self-signed cert. Note that you will be exposing yourself to MITM attacks."
|
|
}
|
|
}
|
|
},
|
|
"authentication": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"clientCertificate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"certificate": {
|
|
"type": "string",
|
|
"description": "The full certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The full key as a multi-line string. Filesystem paths are not supported."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "The desired machine-readable name of the robot. Used in MQTT topics. Defaults to the auto-generated machine ID"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string",
|
|
"description": "You can override the default \"valetudo\" mqtt topic prefix if you e.g. prefer to group all your mqtt stuff by rooms/floors/protocols"
|
|
},
|
|
"provideMapData": {
|
|
"type": "boolean",
|
|
"description": "If for some reason you're not interested in receiving map data via MQTT, you can disable that here."
|
|
}
|
|
}
|
|
},
|
|
"interfaces": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"homie",
|
|
"homeassistant"
|
|
],
|
|
"properties": {
|
|
"homie": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"addICBINVMapProperty",
|
|
"cleanAttributesOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"addICBINVMapProperty": {
|
|
"type": "boolean",
|
|
"description": "If true, adds Homie definitions for ICBINV's PNG map topic as that's not possible to add in ICBINV itself."
|
|
},
|
|
"cleanAttributesOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"homeassistant": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"cleanAutoconfOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"cleanAutoconfOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposedCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ConsumableMonitoringCapability",
|
|
"CurrentStatisticsCapability",
|
|
"TotalStatisticsCapability",
|
|
"SpeakerVolumeControlCapability",
|
|
"KeyLockCapability",
|
|
"ObstacleAvoidanceControlCapability",
|
|
"PetObstacleAvoidanceControlCapability",
|
|
"CarpetModeControlCapability",
|
|
"CarpetSensorModeControlCapability"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BasicAuthConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"username",
|
|
"password"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"NTPClientConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"server",
|
|
"port",
|
|
"interval",
|
|
"timeout"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"server": {
|
|
"type": "string",
|
|
"description": "Can be either an IP or a Domain Name"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "NTP Sync Interval in Milliseconds"
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"description": "NTP Sync Timeout in Milliseconds"
|
|
}
|
|
}
|
|
},
|
|
"NetworkAdvertisementConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdaterConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"updateProvider": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"github_nightly"
|
|
]
|
|
},
|
|
"implementationSpecificConfig": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoTimer": {
|
|
"type": "object",
|
|
"description": "Everything time-related is in UTC",
|
|
"required": [
|
|
"enabled",
|
|
"dow",
|
|
"hour",
|
|
"minute",
|
|
"action"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"pattern": "^.{0,24}$",
|
|
"description": "An optional user-defined label for the timer"
|
|
},
|
|
"dow": {
|
|
"type": "array",
|
|
"description": "Day of Week\nSunday = 0, Monday = 1, ... Saturday = 6",
|
|
"items": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 6
|
|
}
|
|
},
|
|
"hour": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 23
|
|
},
|
|
"minute": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 59
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "These vary depending on the Timer Type.",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"zone_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"goto_id": {
|
|
"type": "string"
|
|
},
|
|
"iterations": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"custom_order": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pre_actions": {
|
|
"type": "array",
|
|
"description": "Actions to run before the main action (e.g. set fan speed to x)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|