evcc-io/schema.json
2023-02-10 17:51:39 +01:00

350 lines
No EOL
7.5 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "EVCC configuration schema",
"type": "object",
"properties": {
"network": {
"type": "object",
"description": "Network",
"properties": {
"schema": {
"type": "string"
},
"host": {
"type": "string"
},
"port": {
"type": "integer"
}
}
},
"interval": {
"$ref": "#/definitions/duration"
},
"log": {
"description": "Global log level",
"$ref": "#/definitions/loglevel"
},
"levels": {
"type": "object",
"description": "Log levels per area",
"additionalProperties": {
"type": "string"
}
},
"sponsortoken": {
"type": "string"
},
"plant": {
"type": "string"
},
"telemetry": {
"type": "boolean"
},
"database": {
"type": "object",
"description": "Database",
"properties": {
"type": {
"type": "string"
},
"dsn": {
"type": "string"
}
}
},
"tariffs": {
"type": "object",
"description": "Tariffs",
"properties": {
"currency": {
"type": "string"
},
"grid": {
"description": "Grid tariff",
"$ref": "#/definitions/typedObject"
},
"feedin": {
"description": "Feed-in tariff",
"$ref": "#/definitions/typedObject"
},
"planner": {
"description": "Planner tariff",
"$ref": "#/definitions/typedObject"
}
}
},
"chargers": {
"type": "array",
"description": "List of chargers",
"items": {
"$ref": "#/definitions/namedObject"
}
},
"meters": {
"type": "array",
"description": "List of meters",
"items": {
"$ref": "#/definitions/namedObject"
}
},
"vehicles": {
"type": "array",
"description": "List of vehicles",
"items": {
"$ref": "#/definitions/namedObject",
"properties": {
"title": {
"type": "string"
},
"icon": {
"type": "string"
},
"capacity": {
"type": "integer"
},
"user": {
"type": "string"
},
"password": {
"type": "string"
},
"VIN": {
"type": "string"
},
"cache": {
"$ref": "#/definitions/duration"
},
"onIdentify": {
"type": "object",
"properties": {
"mode": {
"$ref": "#/definitions/mode"
},
"minSoc": {
"type": "integer"
},
"targetSoc": {
"type": "integer"
},
"minCurrent": {
"type": "integer"
},
"maxCurrent": {
"type": "integer"
}
}
}
}
}
},
"site": {
"type": "object",
"required": [
"meters"
],
"properties": {
"title": {
"type": "string"
},
"meters": {
"type": "object",
"properties": {
"grid": {
"type": "string"
},
"pv": {
"description": "PV inverter/meter (1 or more)",
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
"pvs": {
"description": "PV inverters/meters",
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
"battery": {
"description": "Home battery (1 or more)",
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
"batteries": {
"description": "Home batteries",
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
"smart": {
"type": "string"
}
}
},
"prioritySoc": {},
"bufferSoc": {}
}
},
"loadpoints": {
"type": "array",
"description": "List of loadpoints",
"items": {
"type": "object",
"required": [
"charger"
],
"properties": {
"title": {
"type": "string"
},
"mode": {
"$ref": "#/definitions/mode"
},
"resetOnDisconnect": {
"type": "boolean"
},
"charger": {
"type": "string"
},
"meter": {
"type": "string"
},
"vehicle": {
"type": "string"
},
"soc": {
"type": "object",
"properties": {
"poll": {
"type": "object",
"properties": {
"mode": {
"$ref": "#/definitions/pollMode"
},
"interval": {
"$ref": "#/definitions/duration"
}
}
},
"estimate": {
"type": "boolean"
}
}
},
"phases": {
"type": "integer"
},
"minCurrent": {
"type": "integer"
},
"maxCurrent": {
"type": "integer"
},
"guardDuration": {
"$ref": "#/definitions/duration"
},
"enable": {
"type": "object",
"properties": {
"delay": {
"$ref": "#/definitions/duration"
},
"threshold": {
"type": "integer"
}
}
},
"disable": {
"type": "object",
"properties": {
"delay": {
"$ref": "#/definitions/duration"
},
"threshold": {
"type": "integer"
}
}
}
}
}
}
},
"definitions": {
"duration": {
"type": "string",
"pattern": "\\d[msh]$"
},
"namedObject": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"template": {
"type": "string"
}
}
},
"typedObject": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
}
}
},
"loglevel": {
"enum": [
"trace",
"debug",
"info",
"error",
"fatal"
]
},
"mode": {
"enum": [
"off",
"now",
"pv",
"minpv"
]
},
"pollMode": {
"enum": [
"always",
"charging",
"connected"
]
}
}
}