Skip to content

Commit 9d51344

Browse files
fix(docs): allow Integrations to write to BMS GenericPoint, available and status (#69)
* fix(bms): allow integration generic point writes Add integration value channels for GenericPoint across non-Rack BMS object types. Allow System Status and Available integration writes and refresh generated docs. Signed-off-by: Daniyal Rana <daniyalr@nvidia.com> * Apply suggestion from @polarweasel Co-authored-by: Alex Ball <awball@polarweasel.org> Signed-off-by: Daniyal Rana <daniyalr@nvidia.com> * remove duplicate lines and update heartbeat /echo wording Signed-off-by: Daniyal Rana <daniyalr@nvidia.com> * docs(bms): refresh generated heartbeat docs Signed-off-by: Daniyal Rana <daniyalr@nvidia.com> --------- Signed-off-by: Daniyal Rana <daniyalr@nvidia.com> Co-authored-by: Alex Ball <awball@polarweasel.org>
1 parent 29d0926 commit 9d51344

28 files changed

Lines changed: 2509 additions & 38 deletions
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# AHU Integration — Value
2+
3+
Publish integration values for AHU control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/AHU/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for AHU control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/AHU/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration AHU values: `BMS/v1/+/Value/AHU/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published AHU point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# ATS Integration — Value
2+
3+
Publish integration values for ATS control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/ATS/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for ATS control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/ATS/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration ATS values: `BMS/v1/+/Value/ATS/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published ATS point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# BESS Integration — Value
2+
3+
Publish integration values for BESS control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/BESS/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for BESS control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/BESS/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration BESS values: `BMS/v1/+/Value/BESS/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published BESS point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Breaker Integration — Value
2+
3+
Publish integration values for Breaker control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/Breaker/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for Breaker control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/Breaker/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration Breaker values: `BMS/v1/+/Value/Breaker/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published Breaker point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>

docs/schema-bms-cdu-integration-value.mdx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ BMS/v1/{integration}/Value/CDU/{pointType}/{tagPath}
1111
```
1212

1313
Values published by integrations for CDU control points.
14-
Subscribe to `cduMetadata` first and read `integration` for the exact topic.
14+
Subscribe to `BMS/v1/PUB/Metadata/CDU/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
1516

1617
**MQTT wildcard examples**
1718

@@ -22,7 +23,7 @@ Subscribe to `cduMetadata` first and read `integration` for the exact topic.
2223
| Parameter | Description |
2324
|-----------|-------------|
2425
| `integration` | Integration identifier. |
25-
| `pointType` | Integration-published CDU point type. Values: `LiquidTemperatureSpRequest` |
26+
| `pointType` | Integration-published CDU point type. Values: `LiquidTemperatureSpRequest`, `GenericPoint` |
2627
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
2728

2829
## Message: Point Value
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Chiller Integration — Value
2+
3+
Publish integration values for Chiller control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/Chiller/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for Chiller control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/Chiller/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration Chiller values: `BMS/v1/+/Value/Chiller/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published Chiller point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Cooling Tower Integration — Value
2+
3+
Publish integration values for CoolingTower control points.
4+
5+
**Direction:** Publish (send)
6+
7+
## Channel
8+
9+
```text
10+
BMS/v1/{integration}/Value/CoolingTower/{pointType}/{tagPath}
11+
```
12+
13+
Values published by integrations for CoolingTower control points.
14+
Subscribe to `BMS/v1/PUB/Metadata/CoolingTower/#` and publish only when that metadata payload includes an `integration` field whose value matches the publishing integration identifier.
15+
That matching metadata payload indicates the integration can publish values to this topic.
16+
17+
**MQTT wildcard examples**
18+
19+
- All integration CoolingTower values: `BMS/v1/+/Value/CoolingTower/#`
20+
21+
### Parameters
22+
23+
| Parameter | Description |
24+
|-----------|-------------|
25+
| `integration` | Integration identifier. |
26+
| `pointType` | Integration-published CoolingTower point type. Values: `GenericPoint` |
27+
| `tagPath` | Must match the tagPath from the corresponding BMS metadata exactly. |
28+
29+
## Message: Point Value
30+
31+
**Content Type:** `application/json`
32+
33+
Live value message. Payload envelope is identical for all point types.
34+
The semantic meaning of `value` is determined by the corresponding
35+
metadata message.
36+
37+
### Payload
38+
39+
| Name | Type | Required | Description |
40+
|------|------|----------|-------------|
41+
| `value` | number or null | Yes | Live reading for the point (float). May be null when the BMS has no valid reading available. |
42+
| `timestamp` | integer | Yes | Unix timestamp in epoch milliseconds (source event time). |
43+
| `quality` | integer | Yes | `1` = good quality. Any other integer indicates value is not trustworthy |
44+
45+
<Accordion title="Example payload">
46+
47+
````json
48+
{
49+
"value": 22.96215,
50+
"timestamp": 1743620423000,
51+
"quality": 1
52+
}
53+
````
54+
55+
</Accordion>

0 commit comments

Comments
 (0)