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.
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.
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
.
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.
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:
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:
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)
Grow-IoT is released under the 2-Clause BSD License, sometimes referred to as the "Simplified BSD License" or the "FreeBSD License".