simpleiot

package module
Version: v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2022 License: Apache-2.0 Imports: 12 Imported by: 0

README

Go Reference Go code stats Go Report Card Slack Widget

Simple Iot is a platform that enables you to add remote sensor data, telemetry, configuration, and device management to your project or product.

Implementing IoT systems is hard. Most projects take way longer and cost more than they should. The fundamental problem is getting data from remote locations (edge) to a place where users can access it (cloud). We also need to update data and configuration at the edge in real time from any location. Simple IoT is an attempt to solve these problems by embracing the fact that IoT systems are inherently distributed and building on simple concepts that scale.

Simple IoT provides:

  • a single application with no dependencies that can be run in both cloud and edge instances
  • efficient synchronization data in both directions
  • a powerful UI to view configuration and current values
  • a rules engine that runs on all instances that can trigger notifications or set data
  • extensive support for Modbus -- both server and client
  • flexible graph organization of instances, users, groups, rules, and configuration
  • integration with other services like InfluxDB and Twilio
  • a system that is easy to extend in any language using NATS
  • a number of useful Go packages to use in your custom application

See vision and architecture for addition discussion on these points.

This project was developed while building real-world applications and has primarily been driven by these project requirements.

See detailed documentation for installation, usage, and development information.

Support, Community, Contributing, etc.

Pull requests are welcome -- see development for more thoughts on architecture, tooling, etc. Issues are labelled with "help wanted" and "good first issue" if you would like to contribute to this project.

For support or to discuss this project, use one of the following options:

License

Apache Version 2.0

Contributors

Thanks to contributors:

Made with contrib.rocks.

Documentation

Overview

Package simpleiot is a collection of Go code that is useful for implementing cloud and edge applications.

See http://simpleiot.org/ for more information.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Options

type Options struct {
	StoreType         store.Type
	DataDir           string
	HTTPPort          string
	DebugHTTP         bool
	DisableAuth       bool
	NatsServer        string
	NatsDisableServer bool
	NatsPort          int
	NatsHTTPPort      int
	NatsWSPort        int
	NatsTLSCert       string
	NatsTLSKey        string
	NatsTLSTimeout    float64
	AuthToken         string
	ParticleAPIKey    string
	AppVersion        string
	OSVersionField    string
}

Options used for starting Simple IoT

type Siot added in v0.0.37

type Siot struct {
	// contains filtered or unexported fields
}

Siot is used to manage the Siot server

func NewSiot added in v0.0.37

func NewSiot(o Options) *Siot

NewSiot create new siot instance

func (*Siot) Close added in v0.0.37

func (s *Siot) Close() error

Close the siot server

func (*Siot) Start added in v0.0.37

func (s *Siot) Start() (*natsgo.Conn, error)

Start Simple IoT data store. The nats connection returned can be used with helper functions in the simpleiot nats package. Note, this function cannot be used directly because we don't checkin the frontend assets for the SIOT web ui. See this example for how you can embed SIOT in your project by adding it as a submodule: https://github.com/simpleiot/custom-application-examples/tree/main/example-1

Source Files

Directories

Path Synopsis
Package api implments the SIOT http interface.
Package api implments the SIOT http interface.
Package assets includes generated code from embedded assets (frontend, etc).
Package assets includes generated code from embedded assets (frontend, etc).
cmd
Package contrib contains systemd example service files, etc.
Package contrib contains systemd example service files, etc.
Package data contains key data structures that are used throughout the project.
Package data contains key data structures that are used throughout the project.
Package file contains file utilties.
Package file contains file utilties.
Package frontend includes web UI frontend code.
Package frontend includes web UI frontend code.
Package gps contains code to parse GPS data.
Package gps contains code to parse GPS data.
Package modbus contains modbus RTU/TCP client/server code.
Package modbus contains modbus RTU/TCP client/server code.
Package nats contains utilties for reading/writing data using NATS.
Package nats contains utilties for reading/writing data using NATS.
Package natsserver is used to embed the NATS server in an application.
Package natsserver is used to embed the NATS server in an application.
Package network contains drivers to manage various network interfaces including modems.
Package network contains drivers to manage various network interfaces including modems.
Package node contains functionality to manage different types of nodes.
Package node contains functionality to manage different types of nodes.
Package particle is used to interface with devices through the particle.io cloud.
Package particle is used to interface with devices through the particle.io cloud.
Package respreader provides a convenient way to frame response data from devices that use prompt/response protocols such as Modbus, other RS485 protocols, and modem AT commands.
Package respreader provides a convenient way to frame response data from devices that use prompt/response protocols such as Modbus, other RS485 protocols, and modem AT commands.
Package sensors implements code to read various sensors.
Package sensors implements code to read various sensors.
Package store implements database store code -- currently Genji and Influxdb.
Package store implements database store code -- currently Genji and Influxdb.
Package system implements system specific functionality.
Package system implements system specific functionality.
Package tools is use to lock down versions of various tool packages we use.
Package tools is use to lock down versions of various tool packages we use.
Package internal include protobuf definitions.
Package internal include protobuf definitions.
pb

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL