Skip to content
@simpleiot

Simple IoT

Building blocks for IoT systems
Simple IoT logo

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

Why this exists

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.

Core ideas

  1. Treat configuration and state data the same way for storage and synchronization.
  2. Represent that data with two simple types: Nodes and Points.
  3. Organize it in a graph.
  4. Move all of it through a message bus (NATS).
  5. Run the same application in the cloud and at the edge.
  6. Sync common data between instances automatically.

Six ideas is the whole model. Everything else in the system is built on them.

Start here

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_64

Then 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.

What you get

  • 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

Contributing

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.

Pinned Loading

  1. simpleiot simpleiot Public

    Simple IoT cloud/edge application/framework

    Go 216 39

  2. hardware hardware Public

    Hardware designs for IoT devices and sensor nodes.

    Python 9 1

  3. zephyr-siot zephyr-siot Public

    Simple IoT application for Zephyr

    C 7 1

Repositories

Showing 10 of 20 repositories

Top languages

Loading…

Most used topics

Loading…