Grow-IoT
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:
- Make a new
CustomComponent.jsx
file inimports/things/'
ornpm install package-name
if the component is published on npm. - Open
imports/app/components/things/index.js
. import CustomComponent from './CustomComponent'
- Lastly, add
CustomComponent
to the exportedcomponents
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.
- Graph-QL
- MQTT
- User profiles
- Camera
- Image storage and retreival with IPFS
- Environments (creating groups of things)
- Administration and device management (a green house or lab involves more than one user often)
License
Grow-IoT is released under the 2-Clause BSD License, sometimes referred to as the "Simplified BSD License" or the "FreeBSD License".