Jarvis Home Automation
Jarvis is a Home Assistant (https://home-assistant.io/) implementation with wake word detection, SMS commands, and a lot of automation control. While the Conversation component does it's job, it's currently a bit limited and without wake word detection it was almost useless to me. I also have tried the AlexaPi implementation as well as using Amazon Alexa products. However, creating custom intents was not as straight forward as I would have liked for quick and easy creation. Between wake word and API.AI for speech handling, it appears to work rather well. I have also decoupled the TTS services to make it easier to use that functionality elsewhere.
Firewall Note: The Jarvis firewall is setup so that only local clients and one specific public IP can access. The specific IP that can access Jarvis is a front end server with Apache as a reverse proxy and encryption. Any other external clients will connect to the front end server outside of the network that then connects direct to Jarvis.
Note: SMS commands will require a basic level of experience with PHP.
P.S.: This system is far from perfect, if you make some enhancements or have any ideas please feel free to share them. If you find any bugs you would like to report, you can do so via the following link: https://github.com/haynieresearch/jarvis/issues Keep in mind, generally any Home Assistant related issues should be raised on their side. If you are having a configuration problem, I would be glad to help.
You will need to read this section completely before using this software to ensure that everything works as designed. There is no other documentation other than this README file. Please note: this software comes with no guaranteed support. Furthermore, this software is licensed under the Apache License, Version 2.0. License text is provided in the LICENSE file.
This software makes a couple of assumptions, I will list them below and you can either update/install what is needed on your system or make the required changes. Even though the software is open source, some services currently are utilizing paid services. The main service is Wit AI Speech. While there are free alternatives for speech-to-text services. I have found them to be less than desirable. Luckily, most have a free tier available to use.
For everything to work, you will need the following API keys:
If you want SSL you can purchase and install a certificate. However, I find it much easier to sign up for a free Cloud Flare (https://www.cloudflare.com) plan and encrypt your external site that way.
Note: I am going to include my current configuration and layout as an example. The systemd services are included in the resources folder if you wish to edit them. The installer will take care of setting this up for you.
If you utilize the install script it will set you up with ready to edit configuration files. Otherwise, you can copy the .example files located in each primary directory.
This assumes you are setting up Home Assistant from scratch.
If all is well, your system will be 100% ready to go. If you have an attached screen/touch screen the main panel will appear after all systems boot. If not, navigate to http://[raspberry pi IP]:8123.
Once installed you can use the following system services to restart/control the entire system.
Restart Everything:
sudo service jarvis* restart
Restart Home Assistant:
sudo service jarvis-base restart
Restart Speech to Text:
sudo service jarvis-stt restart
Restart Text to Speech:
sudo service jarvis-tts restart
Restart Kiosk:
sudo service jarvis-web restart
If you get a TLS fingerprint mismatch error with Pianobar/Pandora run this command to get the updated one:
openssl s_client -connect tuner.pandora.com:443 < /dev/null 2> /dev/null | \
openssl x509 -noout -fingerprint | tr -d ':' | cut -d'=' -f2