DMS Data Objects
The DMS manages its tasks using data objects that include:
In the DMS, a product groups devices that share identical software. The object that represents the product is a virtual container, holding firmware bundles and files common to all the devices activated to the product. The device is an instance of the product.
Think of a product as a model number, the TOASTER-3000 for example, and a device as the actual physical toaster that sits on your kitchen bench.
After creating a product on the DMS, firmware bundles and files can be uploaded to the product. Any number of devices can be activated to the product and can download software available for the product. Device activation is authorized on a per user basis.
There are two ways to create products depending on which kind of app you are building:
- Command API apps, running on an external MCU. In this case you create your product with the DMS Web interface.
- ZAPs, apps running on the ZentriOS device MCU and developed with the ZentriOS SDK. In this case you create your product within the SDK.
- Code: this is of the form <OWNER>-<PLATFORM>_<NAME>. In the case of a developer, the owner is the developer user name. In the case of a product owner, the owner name is the customer name.
- State: Preview/Published/Archive
- Tag: Alpha/Beta/Release/none
- ZentriOS Edition:
- ZentriOS Version:
- Product Version: The version of the most recent published bundle associated with the product
A product has associated bundles - the files a device receives when it OTAs.
A ZentriOS edition for a particular platform is a product. For example: ZENTRI-AMW106_ZAP is ZentriOS-WZ for the AMW106 platform. ZENTRI-OM13086SCCK_ZAP is ZentriOS-WZ for the NXP-SCCK platform.
A device can be activated to only one product at a time. Activating a device to a product means associating the device with that product. When device performs an OTA update, it downloads and installs the product.
A product is (locked/unlocked) unclaimable/claimable. If a product is claimable, a device activated to that product is claimable.
Only one version of a product can be tagged with a particular tag, such as Release or Beta.
A device activated to a product receives the Release version of the product, by default, when it runs the OTA command.
A device tagged Beta receives the Beta version of the product, by default, when it runs the OTA command. If no Beta version is available, it receives the Release version.
When a bundle is tagged, you cannot change the state of the bundle. To change the state you have to move the tag, by tagging a different bundle with that tag.
Product Code: The code that appears as a prefix in the product code is either the developer name or the product owner name.
To publish a product, you associate a customer/product owner with the product.
Description: this is the marketing information for the product. This appears in the ZAP store. It's what people read when they are considering activating their devices to the product.
A bundle is a collection of files, and has some additional properties.
The bundle lifecycle moves through the states:
There is also a
trash state for discarded bundles.
While a product is under development it is in the
Only the developer sees the preview. When you publish, the bundle is visible to others.
When a bundle is superseded, it can be moved to the
A bundle has a particular version of firmware.
In a bundle tagged as
release some properties, such as version number, cannot be changed. To change a tag or change a property, first set the bundle's current tag to a different bundle.
When you OTA a version of the product to a device, the bundle associated with that version, and the associated ZentriOS version is downloaded and installed on the device.
- Bundle version: This corresponds to the Product version.
- ZentriOS version: The version of the ZentriOS firmware for which this bundle was developed
- Added: date and time
- preview: only the developer can see a preview bundle
- published: visible to others (with the same platform? or the same product?)
- Tag: Release/Beta/None
List of bundle files
Bundle File Properties
Each file has the following properties:
- Type: ZAP/?
- Version: version of the file
- Size: e.g 4.2 kB
- MAC Addr:
- BT Addr
- Firmware: The version of ZentriOS on the product
- Tag: Release/Beta. When an OTA command is issued without specifying a bundle, the device receives the most recent Release or Beta version of the product, depending on this tag.
- Locked/Unlocked: If the device is Locked, it is not claimable. If it is Unlocked, it is claimable.
- Origin Product
Origin product is the firmware bundle with which the device is originally shipped. When a device is claimed, it reverts to its origin product.
A device can be locked or unlocked.
If it's unlocked, a user can claim it by issuing the command. It reverts to its origin product, and previous logs and history become unavailable to the user who has claimed the product.
If it's locked, it is not claimable.
Drag a file and drop to add it to the Cloud FS (FileSystem) associated with the device. Using ZentriOS Native API Cloud FS APIs, the device can upload and download files to its Cloud FS. See group-api-dms-file
Assets are Cloud FS files, like Device Files, but they are available to all the devices activated to a product. They provide a way to incrementally change a product, without creating a new release bundle.
Customer - Product Owner
A customer is a company with a product or products on a large group of devices.
When a customer has a release that's ready to go, they do a work order for manufacturing.
Typically when a fleet of devices is released with a product, they are locked.
This means they are owned by the product owner, that is, the customer, not by the device owner, the user who has physical ownership of the device.
The device owner does not have to claim the device to OTA. It's already in the DMA, activated to the product. The OTA process is typically transparent, i.e. invisible, to the device owner.
Devices, products, have associated logs. Logs have a standard format, with the properties:
- Result: In cases where the action has a result
- When/Ago: Time elapsed since logged event, calculated from timestamp. Codes:
- User ID/Name:
- Device ID/Name:
- ZentriOS Edition:
- Origin Product:
Connectors listen to log events and send selected events to an end point for data analysis. Data can include telemetry, sensor data, geolocation data, and so on. Telemetry in this sense includes data such as device signal strength, number of hard faults, how much memory is available.
The connector subcribes to a pattern in the logs, determined by the Object setting and the Actions setting. It takes any log lines matching the pattern and sends them to the endpoint specified in the connector.
- Hook is the end point. Choices include:
- AWS Kinesis
- AWS SNS
- Azure Service Bus
- Bluemix Message Hub
- Loggly Rest Post
- Slack Webhook
- Zapier Webhook