From 70e162587498e18ac8cae3ff411103332b587099 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 20 Dec 2020 12:00:50 +0100 Subject: [PATCH] Add JSON schema (#536) --- schema.json | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 schema.json diff --git a/schema.json b/schema.json new file mode 100644 index 000000000..a576aa8af --- /dev/null +++ b/schema.json @@ -0,0 +1,175 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "EVCC configuration schema", + "type": "object", + "properties": { + "uri": { + "type": "string", + "format": "uri" + }, + "interval": { + "$ref": "#/definitions/duration" + }, + "log": { + "description": "Global log level", + "$ref": "#/definitions/loglevel" + }, + "levels": { + "type": "object", + "description": "Log levels per area", + "additionalProperties": { + "type": "string" + } + }, + "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" + } + }, + "site": { + "type": "object", + "required": [ + "meters" + ], + "properties": { + "title": { + "type": "string" + }, + "meters": { + "type": "object", + "properties": { + "grid": { + "type": "string" + }, + "pv": { + "type": "string" + }, + "battery": { + "type": "string" + } + } + } + } + }, + "loadpoints": { + "type": "array", + "description": "List of loadpoints", + "items": { + "type": "object", + "required": [ + "charger" + ], + "properties": { + "title": { + "type": "string" + }, + "mode": { + "$ref": "#/definitions/mode" + }, + "charger": { + "type": "string" + }, + "meters": { + "type": "object", + "properties": { + "charge": { + "type": "string" + } + } + }, + "vehicles": { + "type": "array", + "items": { + "type": "string" + } + }, + "soc": { + "type": "object", + "properties": { + "poll": { + "type": "object", + "properties": { + "mode": { + "type": "string" + }, + "interval": { + "$ref": "#/definitions/duration" + } + } + }, + "min": { + "type": "integer" + }, + "target": { + "type": "integer" + }, + "levels": { + "type": "array", + "items": { + "type": "integer" + } + }, + "estimate": { + "type": "boolean" + } + } + } + } + } + } + }, + "definitions": { + "duration": { + "type": "string", + "pattern": "\\d[msh]$" + }, + "namedObject": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "loglevel": { + "enum": [ + "trace", + "debug", + "info", + "error", + "fatal" + ] + }, + "mode": { + "enum": [ + "off", + "on", + "pv", + "minpv" + ] + } + } +}