Treat dispenser
Treat-dispenser state and a bounded portions-based dispense action.
https://hometruth.ai/schemas/treat-dispenser · TreatDispenser
Instances
No devices currently use this schema.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://hometruth.ai/schemas/treat-dispenser",
"title": "Treat dispenser",
"description": "A treat dispenser's observable state and bounded dispensing actions.",
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"state": {
"type": "object",
"additionalProperties": false,
"properties": {
"availability": {
"enum": [
"online",
"offline",
"degraded",
"unknown"
]
},
"observedAt": {
"type": "string",
"format": "date-time"
},
"foodLevelPercent": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"lowFood": {
"type": "boolean"
},
"jammed": {
"type": "boolean"
},
"lastDispensedAt": {
"type": "string",
"format": "date-time"
},
"lastPortions": {
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"availability"
]
},
"actions": {
"type": "object",
"additionalProperties": false,
"properties": {
"dispense": {
"type": "object",
"additionalProperties": false,
"properties": {
"minimumPortions": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"maximumPortions": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"step": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"portionSizeGrams": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000
},
"confirmation": {
"enum": [
"none",
"confirm"
]
}
},
"required": [
"minimumPortions",
"maximumPortions",
"step"
]
},
"playCall": {
"type": "object",
"additionalProperties": false,
"properties": {}
},
"setSchedule": {
"type": "object",
"additionalProperties": false,
"properties": {
"maxEntries": {
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"maxEntries"
]
}
},
"required": [
"dispense"
]
}
},
"required": [
"id",
"actions"
]
}