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 README.md:
Simple concepts are flexible and scale well.
There are more problems to solve than people to solve them, thus it makes sense to collaborate on the common technology pieces.
There are a lot of IoT applications that are not Google scale (10-1000 device range).
There is significant opportunity in the long tail of IoT, which is our focus. This is not an “enterprise” platform.
There is value in custom solutions (programming vs drag-n-drop).
There is value in running our own platform.
A single engineer should be able to build and deploy a custom IoT system.
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.
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.
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.
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 elm-spa.dev 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
points.
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.
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
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.