Building blocks for IoT systems. Add remote sensor data, telemetry, configuration, and device management to your product without renting a cloud platform or building synchronization from scratch.
Website · Documentation · Community forum · YouTube · Newsletter
IoT projects take longer and cost more than they should. Reading a sensor is the easy part. The work is moving that data from remote locations to a place where people can use it, and getting configuration back out to those locations while connectivity comes and goes.
Simple IoT starts from the fact that these systems are inherently distributed. Every instance, cloud or edge, runs the same application, holds its own store, and synchronizes with its peers. A device keeps recording and keeps serving its local UI through an outage, then delivers the backlog when the link returns. Configuration can be changed at either end and merges without a round trip.
- Treat configuration and state data the same way for storage and synchronization.
- Represent that data with two simple types: Nodes and Points.
- Organize it in a graph.
- Move all of it through a message bus (NATS).
- Run the same application in the cloud and at the edge.
- Sync common data between instances automatically.
Six ideas is the whole model. Everything else in the system is built on them.
| Repository | What it is |
|---|---|
| simpleiot | The Simple IoT application and Go package. One binary, no dependencies, runs in the cloud and on Linux edge devices. Start here. |
| zephyr-siot | Simple IoT applications for Zephyr, for microcontroller-class nodes. |
| simpleiot.org | Source for the project website. |
| ansible-role-simpleiot-bin | Ansible role that deploys Simple IoT from binary releases. |
| zephyr-snmp | SNMP support for Zephyr. |
| custom-application-examples | Examples of using the Simple IoT Go package in your own application. |
Simple IoT is one self-contained binary. Download the latest release for your platform and run it:
chmod +x simpleiot-vX.Y.Z-linux-x86_64
./simpleiot-vX.Y.Z-linux-x86_64Then open http://localhost:8118 and log in with admin / admin. The
installation guide
covers running it as a service and connecting an edge instance to a cloud
instance.
- A single application with no external dependencies, in cloud and edge roles
- Efficient two-way synchronization, with local queuing while offline
- A web UI for configuration and current values
- A rules engine that runs on every instance and can notify or set data
- Modbus client and server support, and the Linux 1-wire subsystem
- Integrations such as InfluxDB and Twilio
- Extension in any language over NATS, plus Go packages for custom applications
Contributions are welcome. Issues labeled good first issue and help wanted
are a good place to start, and the
development guide
covers architecture and tooling. Questions and design discussion are welcome on
the community forum.
If you are using Simple IoT, we would like to hear about it. Knowing where the project is useful is what tells us where to take it next.
Licensed under Apache 2.0.