Skip to main content

Basic Concepts


There are some easy-to-understand concepts behind SimpleIOT. This short section will help lay the foundation.

But if you're into skipping to the last page of a detective story (no spoilers!) and the following diagram makes sense, feel free to jump ahead.

Otherwise, read on...


SimpleIOT allows you to connect a variety of devices to the cloud. The data can go in both directions if needed.

All services and data are owned by you and maintained in your private AWS account. You can have one or more accounts to keep the Data separate.

Each account is associated with a single Team which you can name to distinguish them from each other. Each Team maintains its own stack of services, users, devices, and data.

It depends on how you like to organize your projects. In the beginning, one Team is good enough. But as you go along, you may want to have, for example, separate dev, test, and production Teams.

Note that a single Team can handle many different types of devices. But the main association to keep in mind is:

One AWS Account <=> One Team.

If you want to access different Teams from a single desktop or laptop, you can toggle back and forth between them easily from the command line.

Each Team maintains its list of users, databases, logs, APIs, device certificates, etc.


SimpleIOT has a basic notion of how it organizes the data.

  • Each Team can have one or more Projects.
  • A Project allows you to define one or more Models.
  • Each Model describes a single type of device.
  • A model can have one or more Datatypes. A Datatype is a named value for each piece of information you want to exchange with the device.

For example, you can create a Project to build a variety of hand-held thermometers. For the first one, you define a Model and give it a name. That model will be exchanging three attributes or Datatypes with the cloud:

In the above example, your project is named HeatMeasure, and a model in that project is called Therm-01. The device wants to exchange three values with the cloud: status, temperature, and battery. In the future, you can have a Therm-02, Therm-03, etc.

Once you've defined your Model and Datatype, you can now virtually stamp out one or more instances. An instance of a Model is called a Device. Each Device needs to have its own unique serial number so you can tell multiple Devices apart.


In object-oriented parlance, a Model is a class. Each time you instantiate a Model, you're creating a device, which is an instance of that class.

Remember how each Model had one or more Datatypes? Each Device will also have its own instance of those, called Data.

You can reference each data element of each unique device by its:

Project (name) - Model (name) - Device (serial number) - Data (name)

Putting it all together:

Congratulations: You now have a foundation of how SimpleIOT works. Let's move on to installing it.