You may remember webkeezer, the multiple temperature reading and relay switching project with an ok web status page. I've recently been working on a greenhouse controller for a friend and figured I may as well learn node.js and write a generalized controller. The latest rendition is now fully customizable for any inputs and outputs. The code is pretty messy right now (it'll be on github once it's cleaned up a bit), but everything works and I'm excited to share!
Firstly, any number of devices of any type can (potentially) be used. Here I'm using 2 DS18B20s and the relay expansion dock. These devices are small node.js wrappers to the command line functions.
Direct pinIO is also supported with a wrapper for gpioctl. It'll be fairly trivial to to add functionality for a humidity sensor, light sensor, or anything else - assuming conversion to digital for analog sensors.
With the devices setup, the node.js class has helper functions to return helpful data for making control decisions. Then with this inputs the controller can evaluate logic values like GreaterThan (gt), LessThan (lt), and and/or. Finally, based on these values a device can be triggered to perform an action.
With everything now customizable and editable on the fly WebKeezer is being laid to rest. But much more is now possible.
One of the features I'm most excited about is the data logging.
I used chartjs to make some nice plots and the web interface allows the user to look at any log file.
Stay tuned for the code if you're into that sort of thing.