Simple IoT Releases


  • display device last update time
  • display time since last update

Has been a busy week, so not a lot new in SIOT land. Did add display of when the device last communicated and the time since the last communication.



  • added env variable to specify Influx database SIOT_INFLUX_DB
  • added device ID tag to sample data stored in influx
  • add rules engine
  • add SMS notifications using Twilio


  • clean up documentation organization
  • moved influxDb operations to db package so they are common for all samples


Finally merged the NATS integration development that has been ongoing for the past few weeks. Seems to be working out very well as it solves a lot of hard problems like:

  • efficient device communication
  • fast response when pushing data to device
  • authorization, encryption, and authentication
  • opens a lot of possibilities on the server for cleaner application architecture

I’m excited where this will take the project!

Also added a list of guiding principles to the

  1. Simple concepts are flexible and scale well.
  2. There are more problems to solve than people to solve them, thus it makes sense to collaborate on the common technology pieces.
  3. There are a lot of IoT applications that are not Google scale (10-1000 device range).
  4. There is significant opportunity in the long tail of IoT, which is our focus. This is not an “enterprise” platform.
  5. There is value in custom solutions (programming vs drag-n-drop).
  6. There is value in running our own platform.
  7. A single engineer should be able to build and deploy a custom IoT system.
  8. We don’t need to spend gobs of time on operations. For smaller deployments, we deploy one binary to a cloud server and we are done with operations. We don’t need 20 microservices when one monolith will work just fine.
  9. For many applications, a couple hours of down time is not the end of the world. Thus a single server that can be quickly rebuilt as needed is adequate.

Let me know what you think.

v0.0.9 release notes:


  • NATS integration for device communication


  • documentation improvements
    • moved API documentation to simple Markdown
    • better organization
    • add list of guiding principles to the README

New in this release – we are now providing binaries with each release. Currently there is a build problem with Windows – after we get that fixed, will be providing Windows binaries as well.

[0.0.11] - 2020-09-09


  • switched data storage to
    vs sensor data and config
  • add token auth for device HTTP communication
  • documentation improvements
  • added binary release files

[0.0.13] - 2020-11-03

  • backend:
    • switched data structure name from device → node – see
      this issue for dicussion
    • add page to message (currently SMS only) all users
    • UI simplification and cleanup
    • sort users on users page
    • port frontend to v5 (this really cleans up the frontend code and
      makes it more idomatic Elm)
    • changing backing store from bolthold to genji (this gives us the flexibility
      to use memory, bbolt, or badger backing stores as well as robust indexing)
    • fix bug with not support Point::Text field in Nats/Protobuf
    • fix up examples for sending device version info to portal
  • frontend:
    • only show version information if available
    • don’t display special points (description, version, etc) in general node
    • add -importDb command line option

Note, the database format has changed. To migrate, dump the database with the
old version of SIOT and them import with the new version.

This release fixes issues with building and running SIOT on 32-bit platforms.

Most recent develop is happening in the GitHub - simpleiot/simpleiot at feature-node-graph branch. Learning about rosetree data structures and how to manage a tree in the front-end. Simple/common data-structures continues to work out pretty well. For each node type, it is working nicely to create a stateless Elm component.

[0.0.15] - 2020-12-09

Implementation of tree based UI – see demo:

Modbus work is progressing nicely – soon SIOT will function as either a Modbus RTU server or client.

[0.0.16] - 2021-02-08

  • UI
    • expand child nodes and add default description when adding a new node
  • modbus improvements
    • send all writes to DB over NATS – this allows system to be more responsive,
      as well as simplifies code
    • lots of cleanup and error handling
1 Like

[0.0.17] - 2021-02-12

  • modbus
    • fix bug in setting modbus baud rate
    • include ID in modbus logging messages
    • support for read-only coils and holding regs
  • UI
    • add nodeCheckboxInput widget
    • round numbers in places
    • color digital values blue when ON
    • sort nodes by description
  • fix windows build

[0.0.18] - 2021-02-26

  • update to support RiscV
  • update Genji dependencies

[0.0.19] - 2021-02-27

  • revert Genji update as there are problems saving nodes


  • UI: add Form.onEnter utility function for adding enter handling
  • UI: enter can now be used to enter sign-in form
  • support for Modbus TCP, both client and server
  • update Gengi DB to recent main


  • modbus: fix TCP server issue with disconnects not freeing resources


  • UI: change node min/max button to edit/close
  • Modbus: suppress TCP conn/disc messages at debug level 0
  • siot: add cmdline option (-logNats) to trace all node points. This can be run
    in parallel to the siot application to trace points flowing through the system
  • genji db: update to v0.11.0 release
  • rules: can now write rules that set nodes based on other nodes


Lots of UI cleanup in this release.

  • Modbus: TCP listen on all interfaces instead of just localhost
  • UI
    • add dot for nodes that don’t have children
    • don’t sort nodes while editting, only on fetch
    • sort nodes by group, then desc, then firstname, then lastname
    • move/copy node can use node ID or description
    • add node icons to add node descriptions
    • replace edit/collapse with dot and color exp nodes
  • support copying nodes
  • remove remnants of Sample types (we now use Point)
  • create notification and message data types and NATS/Db support
  • implement node messaging (notifies all node and upstream users)
  • BUILD: simplify protobuf generation
  • implement Twilio SMS messaging


  • UI
    • display copy/move node messages for 2-3s when clicking copy/move node button
    • support multiple top level nodes – for instance a user that is a member of
      multiple groups but not the root node
    • automatically expand node children when moving/copying a node
  • Implement rule notifications


  • track user parent when messaging. This eliminates duplicate messages if a user is part of different groups with different messaging services – we only want to message the group the user is a part of.


  • make description in nats logger and notification messages smarter
  • allow modbus busses to be added to groups as well as devices
  • UI:
    • don’t show node + operation for nodes that can’t have child-nodes
    • force email entry to always be lowercase


  • modbus: don’t require poll period to be set for modbus server
  • modbus: fix issue with reg values being sent every poll period, even if not
  • modbus: add timestamp to points being sent out
  • support storing Point data in Influxdb 2.0

You can now configure an InfluxDB 2.0 node at any level. Any data that passes through this node will be logged to Influx.

1 Like


  • fix sending notifications to a single user through UI