Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The process a device uses to obtain device passport information from Hobson is referred to as bootstrapping.

When a device with no device passport bootstrap information is powered on, it should immediately begin the bootstrapping process.

...

Below is an outline of the steps involved in the bootstrapping process:

  1. The user must create a device passport for the device to new MQTT device in Hobson through the web console or REST API. This lets Hobson know that the device is allowed to directly interact with itwill generate a secret for the device and it will show up in Hobson's list of devices.
  2. The user powers on the device.
  3. It is up to the device to determine how it identifies Hobson's MQTT server. One suggestion is to dynamically discover it using an SSDP search (see below).
  4. When the device identifies Hobson's MQTT server, it must anonymously connect to the MQTT server and begin listening to the appropriate bootstrap response topic (see below).
  5. If the previous step is successful, the device must post a bootstrap request message to the bootstrap topic (see below).
  6. If Hobson allows the registration, the device will receive a bootstrap response message on the bootstrap response topic containing the passport information. Otherwise, an error message is sent to the bootstrap response topic.
  7. The device should store the contents of the bootstrap response message for future use (e.g. if the device is power cycled).

...

Hobson will publish its bootstrap response message to the bootstrap response topic. The topic is of the form:

bootstrap/{deviceId}/{nonce}

where deviceId and nonce are values taken from the bootstrap request message (see the Messages section below).
 


Note: The only topics that the anonymous MQTT user can subscribe to are bootstrap topics.

...

Bootstrap Request Message

AttributeValueOptionalDescription
deviceIdStringNoThe device's unique ID
nonceStringNoA device-generated nonce that will be used as part of the bootstrap response topic (as with any nonce, it should not be re-used)
nameStringYesThe device's name
dataObjectYesThe initial values for all the device's variables

JSON example (a device that reports temperature and humidity data):

...

Bootstrap Response Message

AttributeValueDescription
errorStringA description of the error that occurred (if this is present, the rest of the fields will not be).
idStringThe username that should be used for subsequent connections to the MQTT server
secretStringThe password that should be used for subsequent connections to the MQTT server
topics
AttributeValueDescription
dataStringThe topic to post data messages to
commandStringThe topic to subscribe to for command messages

The topics the sensor should publish and subscribe to

JSON example:

{
  "id": "abc123",
  "secret": "3b2184be2f2c11e5a151feff999cdc9e",
  "topics": {
    "data": "devices/3b2184be-2f2c-11e5-a151-feff819cdc9f/data",
    "control": "devices/3b2184be-2f2c-11e5-a151-feff819cdc9f/control"
  }

}

Data Message

 


AttributeValue
Variable name

the variable value as a string

JSON example (temperature and humidity data):

...

Command Message

Description forthcoming.