Connected Devices

The Zerynth Advanced Device Manager (ADM) allows connections between the devices programmed with Zerynth and the ADM sandbox instance hosted on the Zerynth backend server. The ADM adds to each connected device the following functionalities:

  • executing functions triggered by a remote request (remote procedure call)
  • performing over the air firmware update (FOTA)
  • displaying and interacting with a graphical user interface both on a mobile app or desktop browser

Such functionalities can be configured and controlled through the following ZTC commands:

Details about the ADM can be found here.

Create a connected device

In order to connect a physical device to the ADM, a bit of device provisioning must be made. In particular, a new connected device instance must be created on the ADM and the assigned credentials used in the script running on the physical device.

The command:

ztc thing add name

creates a new connected device instance with name name in the ADM server. Such instance can have many different properties, but only a subset of them is mandatory and generated by the ADM:

  • uid: the unique identifier of the connected device
  • token: the security token used to authenticate the physical device to the ADM

Additional properties can be specified at the moment of creation by specifying the corresponding options:

  • --location loc adds the description of the location the physical device is placed
  • --lat lat --lon lon attaches coordinates to the device
  • --description desc specifies the device description
  • --tag tag attaches a set of tags to the device (the option can be given multiple times)

Each Zerynth user can create an unlimited number of connected devices instances, however only a subset of them is allowed to be connected to the ADM at the same moment.

Retrieves device info

The command:

ztc thing info uid

retrieves information about the connected device with unique identifier uid.

The information retrieved consists of:

  • token, the security token for the device
  • name, the device name
  • description, the device description
  • location, the description of the device location
  • geo, the latitude and longitude of the device position
  • groups, the list of groups the device belongs to
  • last_seen, the time of the last detected presence of the connected device
  • online, the status of the device connection
  • platform, the type of the physical device using this connected device credentials
  • notifications, a boolean determing if mobile notifications are enabled for this device

Configure a device

The command:

ztc thing config uid

sets the properties of the connected device with unique identifier uid.

The properties are specified with the following options:

  • --name name, changes the device name
  • :option:`–description desc `, changes the device description
  • --location loc, changes the device location
  • --lat x / --lon y, change the device coordinates
  • --token, asks for a new security token
  • --template template_uid, sets the device template

Connected devices list

The command:

ztc thing config list

retrieves the list of connected devices. Options can be specified to filter the results:

  • --from n, skips the first n connected devices. Default n is zero.
  • --status online/offline, filters connected devices based on online status. If not given, all devices are retrieved

Create a group of devices

The command:

ztc thing group add name

creates a group named name, initially empty. Devices can be added to the group with the config command.

Group configuration

The command:

ztc thing group config uid --add dev0_uid --remove dev1_uid

can be used to add or remove devices (identified by their uids dev0_uid and dev1_uid) to the group identifiedby uid.

The options --add and --remove can be repeated multiple times in the same command.

Group configuration

The command:

ztc thing group list

retrieves the list of all groups. The option --from n can be used to skip the first n groups.

Create a device template

The Zerynth ADM allows to remotely store a graphical interface for each connected device called device template. A template is just a collection of HTML5, javascript, css and image files hosted on the ADM backend. The template is able to receive and send messages to the connected device in response to user interactions with its graphical components.

The command:

ztc thing template add name

creates a new empty template named name. A template is identified by a generated uid.

Upload a template

A newly created template is empty. Files and subfolders can be added to the template with the following command:

ztc thing template upload uid path

where path is the folder containing the template files and uid is the uid indentifying the template to update.

The files at path are compressed and transferred to the ADM backend. There are limitations on the size of a template and on the type of files that can be uploaded. If the upload is successfull, the files previously associated with the template are erased permanently (no history is kept).

Retrieve template list

The command:

ztc thing template list

retrieves all the created templates. The option --from n skips the first n templates.

Prepare a FOTA update

The command:

ztc ota prepare device firmware

uploads to the ADM instance the correctly compiled and linked firmware update contained in the firmware file for devoce with uid device. To correctly prepare a FOTA update refer to the link <ztc-cmd-link> command.

Start a FOTA update

The command:

ztc ota start device

signals the ADM to start the previously prepared FOTA update for device device.

Stop a FOTA update

The command:

ztc ota stop device

signals the ADM to stop the previously prepared or started FOTA update for device device.

Check a FOTA update

The command:

ztc ota check device

display the status of the FOTA process for device. The displayed information is:

  • ota_support, True if the connected device runs a FOTA enabled VM
  • bcslot, the index of the slot the current bytecode is running on
  • vmslot, the index of the slot the current VM is running on
  • vmuid, the unique identifier of the running VM
  • ota_request, a unique identifier specifying the ongoing FOTA update, empty if FOTA is not ongoing
  • ota_next_request, a unique identifier specifying the FOTA update that will be started by the start command, empty if no FOTA has been prepared
  • ota_fail, a message specifying the last failed FOTA update error message, empty if ok
  • last_ota, the timestamp of last successful FOTA update