Software apps and online services
The World's Smartest Home Featuring Jarvis Farley
People talk about "Smart Homes" -- but I have created what I believe is the "World's Smartest." The (fun) videos below are a demonstration of my custom home automation (a private/in development Alexa Skill named Jarvis), which features an innovative implementation of blockchain and cryptocurrency to manage our kid's chores and entertainment.
The videos also show integrated real-time vehicle tracking, alarm surveillance, DASH buttons, TV control, house-wide music, smart fitness coaching, mobile phone notifications, wifi colored lights, homework scoring, thermostats, sprinklers, power monitoring, motion and vibration sensors, and Echo dots in every room.
Learn more @ http://jarvisfarley.com
01/11 Blockchain Chores & Crypto -
02/11 Vehicle Tracking -
03/11 Automated Fitness -
04/11 TV Control -
05/11 Alarm & Surveillance -
06/11 Whole Home Music -
07/11 Mobile Integration -
08/11 Satellite Touchpanels -
09/11 Homework Scoring -
10/11 Chatbot, GUI, Hardware -
11/11 Extras (Dinner Gong, Home Videos) -
- Jarvis is the name of a custom application and server we created to power our home automation
- Amazon's Alexa (which we use as an intermediary to speak to Jarvis), requires developers to choose an arbitrary name to invoke their applications. We chose Jarvis, named after the AI in the Iron Man movies
- Specifications: Ubuntu Linux, 32GB RAM, 2TB storage, 64-bit quad core Intel CPU
- Application Logic: Python, Java, PHP, BASH, Ruby
- Voice: Speak out loud anywhere in the house "Alexa, tell Jarvis to....."
- Graphical User Interface (GUI): Try tapping the touchscreen panels in our kitchen, gym, master bath, or master closet.
- Chatbot: An instant-messaging style interface that allows you to interact with Jarvis as if you had spoken to him with audible voice commands.
- Web Service: JSON REST
- CLI: 'jarvis' executable command-line scriptable interface
- A localized etheruem blockchain has been installed and configured the main linux server (Jarvis)
- Our interactive Children's Chore Chart and associated rewards are tracked as a home-grown cryptocurrency on the ethereum blockchain mentioned above
- Children's Chore Chart - say out loud "Alexa, tell Jarvis to remove one point from Blake", or
- "Alexa, ask Jarvis to report on the status of the kid's points", or
- Go to one of the touchpanels in the house and tap the "Chores" dashboard.
- Each point is a cryptocurrency token and can be exchanged for 30 minutes of electronic entertainment (TV, Video Games) or $1.00 USD
- Jarvis has been programmed as a virtual fitness trainer (daily custom workouts that do not repeat)
- Family scripture study is automated by Jarvis (loads the 'next chapter' in our study, reads it to us out loud, and scrolls synchronized text on screen)
- Virtual Fitness Trainer - Go in to the gym and say out loud "Alexa, tell Jarvis to start a demonstration workout", or
- Use the touchpanel in the gym to select a demo workout.
- Family Scripture Study - Ask Alexa to tell Jarvis you'd like to do a scripture study, or use the touchpanel "Scriptures" dashboard.
- Home energy usage is monitored in real-time by Sense Energy Monitor -- which uses machine learning to detect physical devices based on their power signatures
- Alexa Voice Recognition is pervasive throughout the house via recessed ceiling mounted Amazon Echo Dot devices. Spoken commands can be routed to the home server Jarvis for actioning
- Our daughter's educational journal reports are graded daily by Jarvis, who then awards cryptocurrency based on the grade
- Jarvis can also be contacted through an interactive chatbot interface
- Sense Energy Monitor can be viewed on the Jarvis GUI. On touchpanels, tap the "Power Sense" tab.
- Alexa Voice Recognition is pervasive throughout the house. Try saying "Alexa, ask Jarvis to repeat...anything..."
- Educational Journal Grading by Jarvis, ask Jarvis how Kalani's school work is shaping up today: "Alexa, ask Jarvis how school is going."
- The Chatbot interface can be viewed on the touchpanel GUIs under the "Utilities > Chat" tab, but it's best used with a physical keyboard.
- Our vehicles are outfitted with real-time GPS tracking that is relayed to our server (Jarvis) and can be viewed on wall-mounted touchpanel GUIs in the house
- Networked Sprinkler System allows Jarvis to control lawn watering
- Wifi IoT buttons are placed throughout the house to perform various on-demand automation (burglar alarm, chore completion, watch specific cartoon, toggle lights, etc)
- Connected Motion Sensors trigger actions based on the location and time of day
- Raspberry Pi Zeros are mounted on the three garage doors with Vibration Sensors to provide alerting and tracking
- PoE Smart Surveillance Cameras are installed both indoors and out (these are controlled by Jarvis who alerts us when someone is at the front door and displays a live feed on our TVs)
- The alarm system has been modded with an ethernet card that allows Jarvis to monitor and control it
- Comcast Cable TV-Over-Ethernet is provided by an HDHomeRun Networked Tuner (Comcast can thus be viewed on any device/TV in the house, and recorded by the server)
- Wifi Body Scale tracks our health metrics and sends them to the cloud for analysis
- Both thermostats are wifi-enabled and can be controlled by our custom touchpanels and Jarvis
- Wifi colored lights are installed throughout the house to provided color-coded visual notifications for events such as text messages, doors opening, front-door visitors, vehicle ignition, etc
- Real-time Vehicle Tracking - tap the 'Cars' tab on the touchpanels or speak aloud "Alexa, ask Jarvis where my cars are?"
- Networked Sprinkler System - tap the 'Sprinkler' tab on any of the touchpanels.
- Wifi IoT buttons - buttons in the office will start kid's cartoons in the livingroom, buttons on the fridge mark chores complete, "Red Alert" buttons sound the burglar alarm. Try the dinner gong on the fridge.
- Connected Motion Sensors - approach the front door and a live camera feed will appear on all the TV's in the house. Walk in to the master bathroom and the closet lights come on.
- Vibration Sensors - open or close our garage doors and Jarvis will make an audible announcement via Alexa.
- Smart Surveillance Cameras can be viewed on the Cameras tab in the Jarvis GUI. Tap any camera to view the live feed or ask Jarvis (via Alexa) to display the camera feeds and they'll appear on the nearest TV.
- Connected Alarm System - turn off Matt and Tia's phone and Jarvis will think we left and will arm the alarm for us (and send us a text).
- TV-Over-Ethernet - ask Alexa to "tell Jarvis I want to watch the History Channel" and the nearest TV will turn on and tune to the channel (live).
- Thermostats can be controlled on the touchpanels under the "Thermostat" tab.
- Wifi colored lights - send an SMS text to Matt and watch the lights flash and listen to Alexa read it aloud while Jarvis displays the message on all TVs and computers.
- When Jarvis detects Matt leaving for work in the mornings, he sends a text to Matt's carpool partner to let him know Matt is on the way to pick him up.
- Remove a point from Blake ("Alexa, tell Jarvis to remove one point from Blake", or use the touchpanel), and watch the count down synchronize with the colored wifi light strip upstairs -- the lighted bar will slowly "drain" as his 30 minute timer winds down.
- Asking Jarvis to "shuffle home videos" will display a random cycle of home videos (four at once) on the nearest TV.
- View the "Weather" tab on the touchpanel GUI. This is what autoloads and displays in the master closet while Matt gets ready for work (it shows traffic and weather).
- After a courtesy warning to all present, a "Yellow" Alert demo can be started to simulate a "Red" Alert which sounds a siren, opens the surveillance camera feeds on all screens in the house, and sends camera snapshots and text messages to nearby family and friends.
- Four touchpanels are currently in use: Living Area, Gym, Master Bathroom, Master Closet. They all display the interactive Jarvis dashboard GUI.
- Whole-house audio can be controlled on the Music tab on the Jarvis GUI. Supported music includes Pandora, hand-picked Internet Radio Stations, and our own music library (mp3).
- After a power outage, I can ask Jarvis to ping every device in the house and he'll let me know what's offline.
- Storage - entire network is synchronized to cloud storage provider
- Compute - additional server functionality and "offsite logic" is provided by a cloud linux server subscription
- Camera Phone Photos are synchronized in near real-time between the phone, cloud, and Jarvis (immediately available in a home-grown 'Flickr' style cloud photo system called Farley Image Server)
Where did you get the Jarvis software? (the automation, the user interface, etc)
Most of it I made myself. The webpage GUI for the Sense Energy Monitor and Sprinkler Systems are exceptions -- I've just embedded those pages as iframes in the Jarvis GUI.
It's also worth mentioning that majority of the work on my part was integrating various API's across device hardware, operating systems (Linux), and web services. For example, I didn't create my own GPS vehicle tracking system, I simply leveraged the vendor's API to get the data Jarvis needs to take action.
I also made use of many open-source libraries to do a lot of backend heavy lifting (e.g. image processing, alarm system interface, wifi light interaction, etc).
What language is Jarvis written in?
As opposed to being a single application, Jarvis represents the integration of many pieces of software and hardware. The languages used throughout this integration are:
- Real-time vehicle tracking
- Alarm system integration/monitoring
- Wifi light control
- Motion & vibration sensors
- House-wide notifications
- Red Alert
- Many helper/orchestration scripts
Solidity (C++ like language for Ethereum)
- FarleyCoin – smart contract / cryptocurrency
- HTML5 frontend logic
- Chatbot interface
- Server-side interactions with the Ethereum blockchain
- Custom android app I created to forward notifications from our phones to Jarvis
- The JSON web service that accepts a sentence/phrase and responds accordingly this is the main point of interaction/integration for Amazon Alexa e.g. I speak a phrase out loud to an Echo, which sends the sound to Amazon for processing, which then sends the results (the speech-to-text sentence/phrase) back to my web service
- the HTML5 GUI buttons / DASH Buttons / Chatbot / CLI simply send phrases to this same web service
- The majority of the logic behind use cases not mentioned above
- HTML5 GUI backend
How can I install this at my house? Will you / have you shared the code (GitHub? Open Source?)
Jarvis was 'hand-crafted' for our home, our specific devices, our brand of cameras, our server, etc. For example, Jarvis controls the TVs and soundbars by using the specific infrared TV remote codes unique to our specific make/model of TVs. So in essence, Jarvis was built from the ground up as a custom piece of software unique to our home's ecosystem. He would require significant "reprogramming" to work at someone else's house.
Why do you refer to Jarvis as a 'he'?
I guess it's a side-effect of modern voice-interaction systems. When you are barking orders to an entity, with a name, you subconciously personify that entity. For our family, Jarvis has become a valued assistant upon whom we rely on a daily basis. We naturally have started referring to Jarvis as 'him' and 'he'.
What's the point of this website and demonstrations if no one else can use Jarvis?
I hope to inspire other home-hackers with new ideas and use cases they could implement specific to their home and needs.
The majority of what you see here was inspired by the work of others. I want to do my part to pay-it-forward and hopefully inspire not only individuals, but vendors (like Amazon) to enable new functionality that would eliminate the need for us to create it ourselves (e.g. Alexa Push Notifications).
Learn more @ http://jarvisfarley.com