UDMI / Docs / Specs / Tech Stack
The complete UDMI specification (super set of the base schema), specifies a complete technology stack for compliant IoT devices.
| Type | Category | subFolder | MQTT Topic Suffix | Schema File |
|---|---|---|---|---|
| state | state | n/a | {topic_prefix}/state |
state.json |
| config | config | n/a | {topic_prefix}/config |
config.json |
| pointset | event | pointset | {topic_prefix}/events/pointset |
pointset.json |
| system | event | system | {topic_prefix}/events/system |
system.json |
For GCP implementations the full topic would be /devices/{device_id}/{suffix}
Any backend system (in a GCP project) should adhere to the following guidelines:
udmi_target and
udmi_state example cloud functions for details.device_config shows how PubSub can be used to update the Cloud IoT configuration.A config push can be tested with something like:
gcloud pubsub topics publish target \
--attribute subFolder=config,deviceId=AHU-1,projectId=bos-daq-testing,cloudRegion=us-central1,deviceRegistryId=registrar_test \
--message '{"version": 1, "timestamp": "2019-01-17T14:02:29.364Z"}'
The reason for the redirection of any data through a PubSub topic is so that the Cloud IoT registry, if necessary, can be housed in a different cloud project from the backend applications.
When using the GCP Cloud IoT Core MQTT Bridge there are multiple ways the specific schema used during validation is chosen.
.../attributes.json schema. These attributes are
automatically defined server-side by the MQTT Client ID and Topic, and are not explicitly included in any message payload.subFolder. E.g., the MQTT
topic /devices/{device-id}/events/pointset will be validated against .../pointset.json..../state.json schema on /devices/{device-id}/state MQTT topic./devices/{device-id}/config topic.)