Software packages for smart growing environments.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github
.meteor
.sandstorm
ai/classifier
client
docs
imports
packages
public
server
test
.babelrc
.codeclimate.yml
.dockerignore
.eslintignore
.eslintrc
.flowconfig
.gitignore
.travis.yml
Dockerfile
Dockerfile-dev
LICENSE
README.md
development.settings.json
docker-compose.override.yml
docker-compose.yml
lerna.json
package-lock.json
package.json

README.md

Grow-IoT

Backers on Open Collective Sponsors on Open Collective Gitter BSD license Build Status

The Grow-IoT project is managed as a mono-repo with a bunch of seperately published packages such as:

See our basic Raspberry pi example to get started with devices.

Installing Grow-IoT

You need to install Meteor first (if you haven't already).

You will also need to install yarn, which we use to manage all the packages that comprise Grow-IoT!

You will also need to install yarn, which we use to manage all the packages that comprise Grow-IoT! See the yarn website for platform specific installation instructions.

Then clone the repo and enter the new directory:

git clone https://github.com/CommonGarden/Grow-IoT
cd Grow-IoT

Finally install the needed software dependencies:

yarn

Start the Grow-IoT server with the meteor command:

meteor

And that's it! Visit http://localhost:3000 with your browser of choice; you should now have the application running.

Connecting devices (or virtual things)

Create a new device (click the '+' button) and create a device. Enter "test" for both the uuid and token. Then run the mock device driver (in a seperate terminal):

node packages/Grow.js/examples/test-grow-hub.js

You can find the ui component for this device in imports/app/components/things/Device/Device.jsx.

Connecting sensors and actuators

In the packages directory, we've started 2 libraries to help you connect sensors and actuators and create grow systems out of them.

  • Thing.js: A general purpose internet of things library... basically a fancy event emitter
  • Grow.js: extends the Thing class with a bunch of useful things for growers like scheduling, registering listeners and alerts, etc.

Hardware examples live in those packages' examples folder. Corresponding UI components live in imports/things/.

See Thing.js for more info on creating and connecting devices.

Adding custom components

To do so:

  1. Make a new CustomComponent.jsx file in imports/things/' or npm install package-name if the component is published on npm.
  2. Open imports/app/components/things/index.js.
  3. import CustomComponent from './CustomComponent'
  4. Lastly, add CustomComponent to the exported components object.

Example devices and grow systems:

Organization

In the repo you'll find the following directories and files:

File/Folder Provides
.meteor Meteor stuff, well documented in other places.
.sandstorm Sandstorm.io stuff
ai AI and Machine learning code
client Imports things and starts the React app.
docs Project documentation
imports API, App, and thing web component examples live here
packages Grow.js, Thing.js, and other standalone packages live here.
public Fonts and other static, public assets live here.
tests Unit and Thread conformance tests
server Imports the server code.
test Tests

Our wiki also contains a growing assortment of useful info, including:

Roadmap

There's a lot to do.

License

Grow-IoT is released under the 2-Clause BSD License, sometimes referred to as the "Simplified BSD License" or the "FreeBSD License".