Skip to content

Latest commit

 

History

History
87 lines (79 loc) · 6.08 KB

compliance.md

File metadata and controls

87 lines (79 loc) · 6.08 KB

UDMI / Docs / Specs / Compliance

UDMI Compliance

This is an overview of what it means for a device to be "UDMI Compliant." There are several different facets to UDMI, each providing a different bit of functionality, so the actual requirements will depend on the intended function of the device.

The Tech Primer gives a primer for smart-ready building assembly requirements

Feature Buckets

The feature buckets list classifies the defined functionality within the UDMI specification into individual features and buckets. This aids in assessing levels or completeness of compliance of a device and can be used for defining requirements.

  • Enumeration
    • multi_enumeration - ..
    • empty_enumeration - ..
    • Pointset
      • pointset_enumeration - ..
    • Features
      • features_enumeration - ..
    • Families
      • family_enumeration - ..
  • Discovery
    • Scan
      • discovery_scan - Rejects bad hash
  • Endpoint
    • MQTT 3.1.1 support - Device supports MQTT 3.1.1
    • MQTT/TLS Support - Device supports connection to an MQTT broker with TLS encryption and at least TLS v1.2
    • Server certificate validation - Device validates MQTT broker server certificates
    • Maintains Connection - The device can connect and sustain a connection to the MQTT broker
    • Network resumption reconnection - Device reconnects to MQTT broker when connection is lost, or reattempts connection if connection attempts are unsuccessful
    • Exponential backoff - Device reconnects to MQTT broker when connection is lost, or reattempts connection if connection attempts are unsuccessful
    • JWT - Device is able to authenticate to an MQTT bridge using JWT credentials in the password and renew
    • User configurable connection - Connection parameters (including client ID, hostname, port, etc) are user configurable
    • Configuration
      • endpoint_connection_bad_hash - Rejects bad hash
      • endpoint_connetion_success_alternate - Can successfully connect to alternate endpoint
      • endpoint_connection_success_reconnect - Reconnects to the new endpoint, after restart
      • endpoint_connection_retry - ..
  • System
    • device_config_acked - Device subscribes to the config topic with a QoS 1 and always publishes PUBACKs to the broker
    • State after configuration - Device publishes state messages after receiving a config message
    • system_last_update - system.last_update field in state messages matches timestamp of last config message
    • broken_config - The device remains functional when receiving a config messages which is invalid at a core level (e.g. invalid JSON, missing fields required fields such as top level timestamp), retaining the previous config
    • extra_config - The device remains functional when config messages contains fields which are not recognized by the device
    • system_min_loglevel - Configurable min log level for filtering published status/logging information
    • system_hardware - Hardware block is included and the contents match the physical hardware
    • system_software - Software block in state messages is included, with keys and values automatically generated by the device matching the software versions installed
    • valid_serial_no - Serial number in state message matches physical hardware
    • Mode
      • system_mode_restart - device restarts
    • Logging
      • system.config.receive - Device publishes a logentry when it receives a config update
      • system.config.parse - Device publishes a logentry when it parses a config update
      • system.config.apply - Device publishes a logentry when it applies (accepts) a config update
      • system.base.startup - System startup events are logged
      • system.base.ready - System fully-ready events are logged
      • system.base.shutdown - System shutdown events are logged
      • system.network.connect - Network connection events are logged
      • system.network.disconnect - Network disconnection events are logged
      • system.auth.login - Successful logins to device application are logged
      • system.auth.fail - Failed authentication attempts to device application are logged
    • Metrics
      • publish - Device publishes system metrics
      • schema - metrics valid with UDMI schema
      • metrics_rate_sec - Implements metrics_rate_sec to configure sample rate for metrics
  • Pointset
    • Publish - Publishes pointset event messages with a valid schema
    • Datapoint mapping - Mapping of UDMI data points to device-internal data points is through config messages, allowing points to be renamed
    • Pointset Config - Pointset is configured through UDMI, only publishing points which are in the config, and the points are in state
    • Offline buffering - Telemetry events while device is offline are stored and published when connection is resumed
    • pointset_sample_rate - Sampling rate for the system, at which it should proactively send a complete pointset within the pointset.sample_rate_min, defined in the config message
    • pointset_publish_interval - Minimum time between pointset events is defined by pointset.sample_limit_sec in the config message
    • CoV
      • Partial updates - Supports partial updates (with partial_update flag set to true)
      • Configurable CoV Increment - Configurable CoV increment per point through UDMI Config
      • sample_limit_sec - Limit sample sec