Menu

Tree [69eb3b] master /
 History

HTTPS access


File Date Author Commit
 ad2usbcoll 2017-02-25 Tim Rightnour Tim Rightnour [5796bc] The icaddy collector has to be built with the r...
 alarmcoll 2017-02-26 Tim Rightnour Tim Rightnour [9bae8c] Rewrite the wtype to be a flag field. Add more...
 astrocoll 2017-02-26 Tim Rightnour Tim Rightnour [69eb3b] Fix the multiple event bug. Slightly better lo...
 brulcoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 common 2017-02-22 Tim Rightnour Tim Rightnour [b753cb] Add the alarmcoll. A simple collector that wat...
 data 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 fakecoll 2017-02-19 Tim Rightnour Tim Rightnour [8d0c79] Lots of tiny fixes to make things work properly...
 gnhastd 2017-02-19 Tim Rightnour Tim Rightnour [8d0c79] Lots of tiny fixes to make things work properly...
 gnhastweb 2017-02-22 Tim Rightnour Tim Rightnour [55ae8e] Fix the weather widget to only update every 20 ...
 gtk-gnhast 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 gtk-insteonedit 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 handlers 2017-01-16 Tim Rightnour Tim Rightnour [b572ae] Turns out I need to know if it's dawn vs dusk, ...
 icaddycoll 2017-02-25 Tim Rightnour Tim Rightnour [5796bc] The icaddy collector has to be built with the r...
 insteoncoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 jsmn 2014-05-08 Tim Rightnour Tim Rightnour [6766ab] Add: Venstar 5800/5900 collector
 jsoncgicoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 libconfuse 2017-02-12 Tim Rightnour Tim Rightnour [2ba325] Convert common into a shared library, libgnhast...
 linux 2013-06-12 Tim Rightnour Tim Rightnour [846d60] Merge branch 'master' of ssh://git.code.sf.net/...
 moncoll 2017-02-22 Tim Rightnour Tim Rightnour [55ae8e] Fix the weather widget to only update every 20 ...
 owsrvcoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 rrdcoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 tools 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 urtsicoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 venstarcoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 wmr918coll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 wupwscoll 2017-02-12 Tim Rightnour Tim Rightnour [d073cd] Convert everything else to use libgnhast shared...
 AUTHORS 2014-07-09 Tim Rightnour Tim Rightnour [53cc07] Add a spec file for 0.2.3 gnhast (soon to be nu...
 COPYING 2013-04-24 Tim Rightnour Tim Rightnour [2f66bf] Fix the COPYING file
 ChangeLog 2017-02-05 Tim Rightnour Tim Rightnour [a9fe5c] Update the changelog.
 INSTALL 2013-04-21 Tim Rightnour Tim Rightnour [c013c7] Initial commit
 Makefile.am 2017-02-22 Tim Rightnour Tim Rightnour [b753cb] Add the alarmcoll. A simple collector that wat...
 Makefile.in 2017-02-22 Tim Rightnour Tim Rightnour [b753cb] Add the alarmcoll. A simple collector that wat...
 NEWS 2013-04-21 Tim Rightnour Tim Rightnour [c013c7] Initial commit
 README 2013-05-27 Tim Rightnour Tim Rightnour [34e64b] Create README, add insteon.db file
 aclocal.m4 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 autogen.sh 2013-04-21 Tim Rightnour Tim Rightnour [c013c7] Initial commit
 compile 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 config.guess 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 config.sub 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 configure 2017-02-22 Tim Rightnour Tim Rightnour [b753cb] Add the alarmcoll. A simple collector that wat...
 configure.ac 2017-02-22 Tim Rightnour Tim Rightnour [b753cb] Add the alarmcoll. A simple collector that wat...
 depcomp 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 gnhast.spec 2016-03-29 Tim Rightnour Tim Rightnour [268691] Fixup spec file for 0.4
 install-sh 2013-06-13 Tim Rightnour Tim Rightnour [6c6d0f] Add skeleton wupwscoll config examples, and mak...
 lic 2013-04-21 Tim Rightnour Tim Rightnour [c013c7] Initial commit
 ltmain.sh 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 missing 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...
 stamp-h1 2013-04-21 Tim Rightnour Tim Rightnour [c013c7] Initial commit
 ylwrap 2016-10-29 Tim Rightnour Tim Rightnour [e3716f] Completely rewrite alarm system. Now alarms ha...

Read Me

gnhast
======

Garbled's NetBSD Home Automation Scripting Tools
------------------------------------------------

Gnhast is an event based home automation suite of tools.  It relies on a
central daemon, which handles all the coordination of work, and collectors
which handle all the actual work.  While the primary development
environment is NetBSD, it should also work on any other version of UNIX or
Linux. 

The gnhast daemon itself runs on a server, and feeds data to/is fed data
from collectors.  It can respond to a change in the state of a device, by
executing an external program.  This program, is itself, a form of
collector. 

The collectors perform all the actual work in gnhast. A collector can
perform a number of different functions: 

1) Monitor a device, and tell gnhastd about the changes in that device. 
For example, monitoring a one-wire temperature probe, and continually
updating gnhastd with the current temperature. 

2) Make changes to a device.  For example, the central daemon might tell
the collector to turn off a light switch.  The collector will issue the
command to the light switch it controls, and update gnhastd with the
status. 

3) Simply collect data.  A collector (such as rrdcoll) can simply receive
data from gnhastd, and use it to update rrd files for making pretty
graphs. 

4) Make decisions.  An external script (which is a form of collector)
could be informed that the temperature of a one-wire device has changed. 
It can look at this new value, and decide that it's time to turn on a fan. 
It would tell gnhastd that the fan device should be turned on, and gnhastd
will contact the appropriate collector. 

The core system of gnhast is written in C.  However, because the
collectors are simply separate processes that communicate with gnhastd,
they can be written in any language.  Additionally, collectors that are
not directly launched by gnhastd (scripts) com municate to gnhastd via a
simple TCP API. Because of this, they could even reside on a different
machine, or machines, than the master gnhastd. 

Design Philosophy
-----------------

Gnhast is based on UNIX, and attempts to make home automation more
UNIX-like.  If you like the way UNIX works, you will like gnhast.  If you
despise all the fiddly bits of UNIX, this is not for you. 

There is no built-in pseudo-coding language for making decisions based on
sensor data.  Writing a good language parser is hard, and many people are
better at it than I am.  They wrote languages, alot of them even.  Some
people like perl, some people despi se it.  Gnhast works similarly to a
UNIX kernel, it handles all the hardware, and provides a set API for
working with it.  If you want to write code that says "when it's light
out, turn the outside lights off", then just do that.  Write it in perl,
python , whatever, and have gnhast just run your executable. 

Do you want your garage door to open every night at 18:00? (yikes) Write a
script to open the door, and put it in *cron*. 

Finally, it's distributed.  Each collector runs on a machine, and gnhastd
runs on a machine.  The machines do not have to be the same machine. 
Perhaps you wish to run the core gnhastd on a big server with a massive
UPS, but you want to run the insteon co llector on a Raspberry PI next to
a power outlet in the laundry room.  Maybe you have a dedicated machine
running Cacti, and you want to run the rrd collector locally there. 
Gnhast lets you do all this. 

Gnhast does not need to run as root.  The only caveat, is that some of the
collectors will need access to the serial devices connected to hardware,
log files, and conf files.  Use chown/chmod. 

More Documentation
------------------

http://sourceforge.net/projects/gnhast/
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.