The EVRYTHNG Platform allows developers to make products smart by connecting them to the web and giving them their own unique online Active Digital Identity (or ADI).
We call all these things connected to the web, Thngs. A Thng is a permanent and unique cloud resource that holds information about a product or device in the form of attributes. These can be dynamic (e.g. physical location) or static (e.g. date of manufacture, physical properties, etc.).
We spent a lot of time thinking about the resource model presented here and in fact we (alongside with partners) opened it to the community by making it an official W3C submission called the 'Web Thing Model'. This means that you'll be able to reuse what you'll learn here for other IoT tools and services.
The rest of this page will give you a brief overview of each of the elements that make up an EVRYTHNG integration, but in a nutshell:
- Thngs can have properties for storing their state, and custom fields for more static data.
- A Thng can be an instance of a product (a class of Thng) that describes common attributes.
- Thngs and products are created, updated, and managed by users through applications and projects that are created using an EVRYTHNG Dashboard account.
- Thngs and applications can interact through actions created by the users that interact with them.
Some of these relationships are shown diagrammatically below:
The first element in the platform you will encounter is an account, which is created when you sign up as a developer. This is needed for you to login to the dashboard and send requests to our API. All the resources (Thngs, products, apps) you create are stored and linked in your account. Each account has a unique Operator API key which is used to perform requests that require the highest privileges.
The Operator API key can be used to modify/delete the account, and so must be kept secret.
A Thng is the central data structure held in the EVRYTHNG platform that is a unique and persistent digital representation of an individual object in the real world - be it an embedded sensor, a truck, or a can of soda. Thngs store the unique information about their real-world counterparts.
A product is a class of objects - SKU-level (Stock-Keeping Unit) information, such as the name, the description, URL, images for that product, and all other characteristics that all Thng instances of that product share (size, weight, price, etc.). Products are associated with the projects and applications that manage them.
A project is a scope - a limited access - to some of resources (such as Thngs and products) in your account. A project can contain one or more applications that represent remote client applications (a mobile app, a Web site, etc.). Each application in the platform has its own Application API key that should be used in the client application being built to make requests with lower privileges than the Operator API key. All applications in a project have access to the same resources.
Applications allow users to create a user account in that project and interact with the Thngs/products accessible to the app. For example, to create actions, or read data, etc. Applications will be different for each use case. The most basic applications might simply display information about a Thng and/or product. Other applications might allow users to signup using their Facebook account and check into Thngs to earn points. If the Thng is connected to a device, an application could simply be a user interface to display sensor data read from the device and to send commands to it (unlock door, turn on lights, etc.).
Applications can create Application Users within the EVRYTHNG platform, which are individual in each application. An Application User can create and update Thngs, using a temporary Application User API key valid for the duration that they are logged in. This enables scoped access to resources they are concerned with and removes the need for every client application and user to know the Operator API key, which should always been kept secret.
Other than reading/writing data about Thngs and products, applications mainly interact with the platform using actions, which are notifications sent to the platform and contain various parameters and contextual data. Examples of these include the location/context of where an action took place, the user who performed the action, the product and/or Thng on which the action was done, etc.
The diagram below shows the main elements of the EVRYTHNG platform and the relationships between them. The main points to note are:
- An Operator can manage multiple accounts.
- An account can contain multiple projects, each with their own applications. The applications are used to create/update Thngs.
- Products can be shared between projects and applications, allowing reuse of Thng class definitions.