Skip to content

Latest commit

 

History

History
156 lines (88 loc) · 6.39 KB

general.md

File metadata and controls

156 lines (88 loc) · 6.39 KB

Meshify Carbon

Table of Contents

In Meshify, each connected thing (sensor, equipment, gateway, etc.) is a node. A node is a collection of data, which are organized on channels.

Each node has a node type. The node type defines the channels, html templates, lambda functions, and drivers.

Each node is placed within a folder, which orgainizes people and nodes within the hierarchy.

Nodes have Metadata.

The node type defines the templatized configuration for a node. It can also be thought of as a class, where the node is an instance, or object of the class. Each of the following are configured on a node type, which are then used by every node of that node type.

A node type is the primary way that nodes receive customization. However node types can be built to allow node-specific customization. For example, a notification rule threshold based on a channel value that is defined different for each node.

Node types are important because they lock together a data structure (channels) with features that use the data structure (such as html templates, notifications, and lambda functions).

Channels store all timestamped values for nodes. They are like data fields or columns in a database. They provide context through naming and are used to reference node data.

Each channel has a defined data type: String, Number, or Boolean.

Alias channels provide a way of forwarding data from one channel to another channel. Data remains at the original channel and is also copied to another designated channel.

HTML Templates define how live data is visualized in Meshify. They are fully customizable HTML and can leverage some of our built-in components, such as line graphs.

Each person accessing Meshify is a user. A user authenticates using their e-mail address and password.

A user is placed in one or more folders and has access to any folders at or below their assignment.

Users have Metadata and Preferences.

Meshify roles are a set of permissions that dictate the level of access for users.

Guests are people that do not log into Meshify, but have subscriptions to notification schema.

Folders are the basic, recursive unit of hierarchy. A user's location(s) within a hierarchy dictates which nodes are visibile to that user.

A user can see nodes at or below their assigned folder(s), but cannot see any folders above them. They can also see nodes within any folders that are contained by their folder(s).

A single folder sits at the top of the hierarchy. A user placed within this folder has access to the entire system.

Folders have Metadata.

The life cycle of a notification relies on several objects:

  1. Rule: A rule condition is triggered.
  2. Icon: Each rule is given a severity level, indicated by the icon
  3. Reaction: The rule's reaction uses a template to generate an alert message
  4. Subscription + Schema: The subscription ties a user to notification schema which indicates the notification schedule

See rules documentation documentation.

See reactions documentation.

See icons documentation documentation.

See schedules documentation documentation.

Subscription links a user with a notification schema, and subscribes the user to related reactions.

Web App

Content Management

Lambda functions are javascript functions that run when a value is received on a designated channel. They are used to transform incoming data or run sophisticated rules algorithms. A built-in library provides commonly used functionlaity such as retrieving current values from other channels, getting historical data, or sending values to other channels. Lambdas are short-lived (typically <10ms) and do not retain state (but clever lambda developers may use channels to perpetuate state).

Common uses of Lambdas include:

  1. Forwarding data from one channel to another
  2. Streaming calculations, such as calculating a channel's deriverative
  3. Rules processing that are based on history or channels on another node

Instance objects in Carbon (such as users and folders) have json-based metadata container that can be used to extend the data structure for nodes. Metadata can be read and written from within templates on the standard dashboard core or used with new applications or cores.

Preferences are a feature of users intended to store information such as preferred temperature units. It is an open format, so it is quite flexible in the information that can be stored.

Drivers are files that physical devices can download and run. If a node's node type changes, it will download the driver associated with that node type and change functionality.

Drivers also include code which instruct devices to send data to meshify on channels that are defined by the node type.