github.com/simpleiot/simpleiot@v0.18.3/README.md (about)

     1  <img src="docs/images/siot-logo.png?raw=true" width="150">
     2  
     3  [![Go Reference](https://pkg.go.dev/badge/github.com/simpleiot/simpleiot.svg)](https://pkg.go.dev/github.com/simpleiot/simpleiot)
     4  ![Go](https://github.com/simpleiot/simpleiot/workflows/Go/badge.svg?branch=master)
     5  [![Scc Count Badge](https://sloc.xyz/github/simpleiot/simpleiot/?category=code)](https://github.com/simpleiot/simpleiot/)
     6  [![Go Report Card](https://goreportcard.com/badge/github.com/simpleiot/simpleiot)](https://goreportcard.com/report/github.com/simpleiot/simpleiot)
     7  [![Slack Widget](https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=red)](http://gophers.slack.com/messages/simpleiot)
     8  
     9  **Simple Iot enables you to add remote sensor data, telemetry, configuration,
    10  and device management to your project or product.**
    11  
    12  Implementing IoT systems is hard. Most projects take way longer and cost more
    13  than they should. The fundamental problem is getting data from remote locations
    14  (edge) to a place where users can access it (cloud). We also need to update data
    15  and configuration at the edge in real time from any location. Simple IoT is an
    16  attempt to solve these problems by embracing the fact that IoT systems are
    17  inherently distributed and building on simple concepts that scale.
    18  
    19  **Simple IoT** provides:
    20  
    21  - a single application with no dependencies that can be run in both cloud and
    22    edge instances
    23  - efficient synchronization of data in both directions
    24  - a flexible UI to view configuration and current values
    25  - a rules engine that runs on all instances that can trigger notifications or
    26    set data
    27  - extensive support for Modbus -- both server and client
    28  - support for the Linux 1-wire subsystem.
    29  - flexible graph organization of instances, users, groups, rules, and
    30    configuration
    31  - integration with other services like InfluxDB and Twilio
    32  - a system that is easy to extend in any language using NATS
    33  - a number of useful Go packages to use in your custom application
    34  
    35  See [vision](docs/ref/vision.md), [architecture](docs/ref/architecture.md), and
    36  [integration](docs/ref/integration.md) for addition discussion on these points.
    37  
    38  See [detailed documentation](https://docs.simpleiot.org) for installation,
    39  usage, and development information.
    40  
    41  ## Motivation
    42  
    43  This project was developed while building real-world IoT applications and has
    44  been driven by the following requirements:
    45  
    46  - Data (state or configuration) can be changed anywhere — at edge devices or in
    47    the cloud and this data needs to be synchronized seamlessly between instances.
    48    Sensors, users, rules, etc. can all change data. Some edge systems have a
    49    local display where users can modify the configuration locally as well as in
    50    the cloud. Rules can also run in the cloud or on edge devices and modify data.
    51  - Data bandwidth is limited in some IoT systems — especially those connected
    52    with Cat-M modems (< 100kb/s). Additionally, connectivity is not always
    53    reliable, and systems need to continue operating if not connected.
    54  
    55  ## Core ideas
    56  
    57  The process of developing Simple IoT has been a path of reducing what started as
    58  a fairly complex IoT system to simpler ideas. This is what we discovered along
    59  the way:
    60  
    61  1. treat configuration and state data the same for purposes of storage and
    62     synchronization.
    63  2. represent this data using simple types (Nodes and Points).
    64  3. organize this data in a graph.
    65  4. all data flows through a message bus.
    66  5. run the same application in the cloud and at the edge.
    67  6. automatically sync common data between instances.
    68  
    69  > [Design is the beauty of turning constraints into advantages.](https://www.webstock.org.nz/talks/design-is-the-beauty-of-turning-constraints-into-advantages/)
    70  > -- Ava Raskin
    71  
    72  These constraints have resulted in Simple IoT becoming a flexible distributed
    73  graph database optimized for IoT datasets. We'll explore these ideas more in the
    74  [documentation](https://docs.simpleiot.org).
    75  
    76  ## Support, Community, Contributing, etc.
    77  
    78  Pull requests are welcome -- see [development](docs/ref/development.md) for more
    79  thoughts on architecture, tooling, etc. Issues are labelled with "help wanted"
    80  and "good first issue" if you would like to contribute to this project.
    81  
    82  For support or to discuss this project, use one of the following options:
    83  
    84  - [Documentation](https://docs.simpleiot.org)
    85  - [Simple IoT community forum](https://community.tmpdir.org/c/simple-iot/5)
    86  - #simpleiot Slack channel is available on
    87    [gophers.slack.com](https://gophers.slack.com/messages/simpleiot/)
    88  - open a Github issue
    89  - [Simple IoT YouTube channel](https://www.youtube.com/@simple-iot)
    90  - subscribe to our [email newsletter](https://tmpdir.ck.page/196d1fb480) for
    91    project updates.
    92  
    93  If you use this project, please let us know! It is really helpful to hear from
    94  users.
    95  
    96  ## License
    97  
    98  Apache Version 2.0
    99  
   100  ## Contributors
   101  
   102  Thanks to contributors:
   103  
   104  <a href="https://github.com/simpleiot/simpleiot/graphs/contributors">
   105    <img src="https://contrib.rocks/image?repo=simpleiot/simpleiot" />
   106  </a>
   107  
   108  Made with [contrib.rocks](https://contrib.rocks).