/humble-roots-project-lua

Grow room automation control

Primary LanguageLua

Summary

The Humble Roots Project is a grow room automation control system designed for stable non-stop operation. It is managed through a single configuration file and can communicate with an administrator over SMS text messages. Data visualization is provided in the form of Grafana dashboards powered by InfluxDB.

Dependencies

Any platform capable of running Lua + sockets + file system support. Tested under Ubuntu 16, 17, 18+ and Raspbian.

CMake

sudo apt-get install cmake build-essential

Git

sudo apt-get install git

LuaDist

Install LuaDist in the home folder.

Humble Roots Project

cd ~
git clone https://github.com/fabienroyer/humble-roots-project-lua.git
cd humble-roots-project-lua
cp -R * ~/LuaDist/share


# Compile the Serial Communication Library
cd ~/LuaDist/share/lua-serial
make

# Copy the library to the project folder. For 32-bit platforms:
cp ./build/lin32/libserial.so ~/LuaDist/share/weed
# or 64-bit platforms
cp ./build/lin64/libserial.so ~/LuaDist/share/weed

# Compile the SMS PDU encoding / decoding library
cd ~/LuaDist/share/smspdu
make

# Copy the library to the project folder. For 32-bit platforms
cp ./build/lin32/smspdu.so ~/LuaDist/share/weed
# or 64-bit platforms
cp ./build/lin64/smspdu.so ~/LuaDist/share/weed

# Copy the template config file to a usable .toml config file
cd ~/LuaDist/share/weed/config
mv config.tpl config.toml
cd ..
# Start the project
./../../bin/lua control.lua

On startup, the project will show a console output like this:

[TRACE 14:15:30] ./replay.lua:14: Replay data lines: 713
[INFO  14:15:30] control.lua:178: The Humble Roots Project
[INFO  14:15:30] control.lua:179: 
			                  |
			                 |.|
			                 |.|
			                |\./|
			                |\./|
			.               |\./|               .
			 \^.\          |\\.//|          /.^/
			  \--.|\       |\\.//|       /|.--/
			    \--.| \    |\\.//|    / |.--/
			     \---.|\    |\./|    /|.---/
			        \--.|\  |\./|  /|.--/
			           \ .\  |.|  /. /
			 _ -_^_^_^_-  \ \\ // /  -_^_^_^_- _
			   - -/_/_/- ^ ^  |  ^ ^ -\_\_\- -
					  	|


[INFO  14:15:30] control.lua:180: Copyright (c) 2017 Fabien Royer
[INFO  14:15:30] control.lua:185: Gateway started
[INFO  14:15:30] ./listener.lua:17: TCP listener @ ::1:42024
[DEBUG 14:15:31] control.lua:172: Replay node=2&rssi=-43&t=srh&bat=4.77&low=0&pwr=1&p=1
[DEBUG 14:15:32] control.lua:172: Replay node=20&rssi=-31&t=rly&bat=5.00&low=0&pwr=1&r=4&s=1
[DEBUG 14:15:33] control.lua:172: Replay node=20&rssi=-31&t=rly&bat=5.00&low=0&pwr=1&r=5&s=1
[DEBUG 14:15:34] control.lua:172: Replay node=20&rssi=-30&t=rly&bat=5.00&low=0&pwr=1&r=5&s=1
[DEBUG 14:15:35] control.lua:172: Replay node=40&rssi=-44&t=clm&bat=3.78&low=0&pwr=0&tmp=24.58&rh=55
...

InfluxDB

All sensor data is logged to influxdb. Once influxdb is installed, create a 'sensors' and an 'events' database, then enable influxdb logging in ./config/config.toml. See /weed/config/influxdb-udp.conf for a ready to use config snippet for communicating with InfluxDB over UDP (recommended over HTTP).

Grafana

Uses Grafana to plot sensor data. Once Grafana is installed, configure it to use the Influxdb instance previously installed and import the Humble Roots Project dashboard from ./dashboard/grafana/Lab.json.