Skip to content

Commit 1fa9506

Browse files
committed
[skip ci] Add a homie hierarchy JSON schema
1 parent e882e8d commit 1fa9506

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

doc/homie-json-schema.json

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"$id": "https://bcopy.github.io/homie-lit/homie-v4-hierarchy-schema.json",
4+
"title": "Homie v4 Hierarchy Schema",
5+
"type": "object",
6+
"description": "A schema for representing Homie v4 device hierarchies",
7+
"definitions": {
8+
"property": {
9+
"type": "object",
10+
"properties": {
11+
"datatype": {
12+
"type": "string",
13+
"enum": ["string", "integer", "float", "boolean", "enum", "color", "datetime", "duration", "json"]
14+
},
15+
"unit": {
16+
"type": "string"
17+
},
18+
"format": {
19+
"type": "string"
20+
},
21+
"settable": {
22+
"type": "boolean"
23+
},
24+
"retained": {
25+
"type": "boolean"
26+
},
27+
"name": {
28+
"type": "string"
29+
},
30+
"value": {
31+
"type": ["string", "number", "boolean", "object", "array"]
32+
}
33+
},
34+
"required": ["datatype", "name"]
35+
},
36+
"node": {
37+
"type": "object",
38+
"properties": {
39+
"type": {
40+
"type": "string"
41+
},
42+
"name": {
43+
"type": "string"
44+
},
45+
"properties": {
46+
"type": "object",
47+
"patternProperties": {
48+
"^[a-z0-9-]+$": {
49+
"$ref": "#/definitions/property"
50+
}
51+
},
52+
"additionalProperties": false
53+
},
54+
"nodes": {
55+
"type": "object",
56+
"patternProperties": {
57+
"^[a-z0-9-]+$": {
58+
"$ref": "#/definitions/node"
59+
}
60+
},
61+
"additionalProperties": false
62+
}
63+
},
64+
"required": ["name", "properties"]
65+
},
66+
"device": {
67+
"type": "object",
68+
"properties": {
69+
"state": {
70+
"type": "string",
71+
"enum": ["init", "ready", "disconnected", "sleeping", "lost", "alert"]
72+
},
73+
"name": {
74+
"type": "string"
75+
},
76+
"nodes": {
77+
"type": "object",
78+
"patternProperties": {
79+
"^[a-z0-9-]+$": {
80+
"$ref": "#/definitions/node"
81+
}
82+
},
83+
"additionalProperties": false
84+
}
85+
},
86+
"required": ["state", "name", "nodes"]
87+
}
88+
},
89+
"properties": {
90+
"devices": {
91+
"type": "object",
92+
"patternProperties": {
93+
"^[a-z0-9-]+$": {
94+
"$ref": "#/definitions/device"
95+
}
96+
},
97+
"additionalProperties": false
98+
}
99+
},
100+
"required": ["devices"]
101+
}

0 commit comments

Comments
 (0)