-
Notifications
You must be signed in to change notification settings - Fork 5
Home
IntelliHome - Domotic control software
##########################################################
ATTENTION! This project is not an official Google Project
##########################################################
Do you like Google services? Would you like to bring them at home too? So are we, so this is why we started the deployment of this project. Google@Home aim is to let control your home in your own way that could be with android device or for example your voice, with the feature of an easy installation on every kind of embedded device that have GPIO inteface and could run GNU/Linux.
Would be great to fuse the Google Now functions in your domotic control of the house: the goal is to speak to your home to make google searches, use google now capability and open doors, gates and shutter at the same time.
Picture that:
Let's suppose that we are an electronic/computer enthusiast that want to enhance our home with some domotics control, but in non-expansive way. Then probably our choise would be to take some RaspberryPi and relay boards, then link the relayboards to the interested points (shutters, lights, dim lights, etc...) we plan to control: maybe a raspberry for floor it's enough, maybe not, but that doesn't matter. Then we install G@H and we can control those points using the voice, web interface, or even mobile device.
It's just easy as to say "open shutter" or a touch on your mobile phone.
IntelliHome is a set of Perl libraries to handle all the domotic needs, like dispatching information on nodes, saving configurations, plugin handling and much more that bound together with google services form Google-at-Home, a complete, easy and affordable solution for your home control.
For now you can setup some agents and a master: you speak at the microphone at an agent and the master compute the answer.
Really, really prototype.
Some things works, others don't, that's because it's currently in development so doesn't expect to run something successfully every time now, code is also ugly and obscure in some parts.
Until we reach a proper state of functionalities, won't be released a major release.
Some things must be properly redesigned yet.
There are 2 kind of nodes:
- masters,
- agents or basics nodes.
A basic node can either be an agent or a master.
The master takes the requests of agent's nodes, process them in a unique interface and send a reply back, so you will talk to the same Entity but you can ask things in parallel in different places on the house/infrastructure. The Agents can be a PC or an embedded device and we plan to give also a display interface.
For now, we use SoX for recording on the mic so files are split up by silence (avoiding storage leaks) you have to calibrate properly those params (a proper wiki page will be prepared soon).
For testing the default configuration are enough: they are configured
so the master is also the node. You can set up the audio device by
setting HW according to what aplay -l
gives you (need to find
your recording device looking at the card,device
pair).
For testing the default configuration are enough. This file represent the configuration of the database backend, the language can be set there.
You can install all deps typing cpanm --installdeps .
(user install)
If you want to have the dependencies avaible system wide run the
command as root sudo cpanm --installdeps .
The nodes needs only sox
installed in the box as external
dependency. The master needs the proper database installed and
configured:
For now it's implemented the MongoDB Backend, this requires mongodb installed only in the box of the master node.
This repository ships out a default configuration of master and node on the same pc.
You don't need to install the software, you can just clone this
repository and launch intellihome-master
or intellihome-node
. If
you wish to install:
perl Build.PL
./Build
./Build install # only if you want main modules installed in your libpath
Google@Home needs a backend to store all informations and data, currently is supported SQLite and MongoDB. By the way, you might want to install the SQLite Backend that is aligned with all the features: have a look at IntelliHome::Deployer::Schema::SQLite to deploy the SQL schemas
You wanna just try out? fire up your terminal, clone the repository and launch :
git clone https://github.com/mudler/Google-at-Home.git
cd Google-at-Home
cpanm --installdeps .
./intellihome-deployer -b SQLite -c prepare
./intellihome-deployer -b SQLite -c install
./intellihome-master
and in another terminal:
./intellihome-node
Now your PC will work both as master and node(default configuration).
The plugin system is working, and the database setup it's WiP.
If you want to run in foreground to debug , the -f
attribute flag is available e.g.
./intellihome-master -f
The plugin systems allow to extend the system by triggers that can be invoked by voice. Currently plugins are WiP so api can change and most of them are drafts:
Once you downloaded and installed the plugin via CPAN you can install the plugin easily:
$ sudo perl intellihome-master -i Relay
$ ...
$ sudo perl intellihome-master -i Wikipedia
$ sudo perl intellihome-master -r Relay
$ ...
$ sudo perl intellihome-master -r Wikipedia
- IntelliHome::Plugin::Hailo - Makes your computer speak with MegaHAL! - just for fun :)
- IntelliHome::Plugin::Relay - Allow to command the agents relays
- IntelliHome::Plugin::Wikipedia - Allow to search in wikipedia with the "wikipedia " trigger
- ...
The android application its in WiP, if you are interested contributing, here it is the repository
- Making a wrapper to linux gpio functionality
- Make the node communicate
- Delivering functions on a master node
- Master node accept and respond to requests
- Speech interface thru google
- SpeechToText thru google
- Ideas for a better database schema to collect and display informations
- Auto-Calibration of mic
- Write an api so to open the possibility to build an Android app or a web interface
- Relay control plugin
- Google Now functionality interface
- Write Display interface
- Agents offline routines
- Video surveillance and alarm
- Simple majordomo interface with a personality (did you remember Jarvis?:P)
----
mudler, skullbocks, vytas and all the contributors
----
Released under GPL-3 ----
Suggestions, pull request or contributors, Bugs report, everything is well accepted. E-Mail: mudler@dark-lab.net, skullbocks@dark-lab.net
IRC: irc.perl.org , #google-at-home
----
Everything is released under GPLv3