Repository navigation
The Smart House System Overview
The Smart House System is an autonomous system which receives data from house sensors, stores it in a database and runs applications that operate based on this data.
The system keeps track of the well being and day to day activity of the user. It monitors the user's state via the sensors and analyzes his or her behavior via the applications. The system can send alerts and notifications, and on request from an application through the defined API, will contact the appropriate contacts (according to their emergency-level).
The system acts as a mediator between the sensors and the applications. The sensors send data to the system and the system notifies the applications that a new data has been received.
Applications and sensors that are developed by 3rd party developers, must implement the platform's API.
This is the core of the whole system. It manages the communication with all other parts, passing information from one part to another. It has several main responsibilities:
- Receiving information from sensors.
- Storing gathered information in databases.
- Retrieving information from databases and passing it to applications.
The core acts as an intermediary between the different parts:
- It receives information from all the sensors and stores it in the database. To receive the information, it provides a common interface that all sensors must comply to in order to be added to the system.
- It supplies an interface for modules to ask for information, or to add their listeners for data coming from the sensors.
The database will hold all the gathered information, mainly data collected from the sensors. When new information is available, the sensor sends it to the core, which updates the database accordingly. This data is then used by modules/applications to make decisions.
Sensors are physical components, usually coupled with a low level software application (firmware), that are able to receive information from the outside world, process it into a readable format (e.g. JSON) and pass it to other parts of the system. In our system, the data will be sent to the system core and stored in the database for future access.
Applications are parts of the system that receive the gathered data and decide what to do; they implement the logic, e.g. - an application can ask for information regarding the heart rate of an elder person (if such a sensor has been deployed) and decide whether or not to alert him or her if the heart rate has exceeded a certain limit.
Applications have two options if they want to receive data:
- An application can send a request to the system core, to fetch the needed data.
- An application is able to add a listener (provided by an interface in the system) for some data. When the requested data arrives, it is automatically sent to the application.
For testing purposes, several sensors and applications were created.
The SOS button can be pressed in case of emergency.
The SOS Application listens to this sensor. If the button was pressed, the application will send an alert to the client’s contacts via email and presents an alert screen.

A stove that can be turned on or off. If the stove is on, its temperature can be measured.
The Stove application processes the information being gathered by the stove sensor (is it on and what is the current temperature). The application defines threshold for abnormal behaviors when the stove is operating (has been running for too long or is too hot). These thresholds are either the default set by the application or configured by the client using the configuration screen. When the thresholds are passed, the application will send an alert to the client’s contacts via email.
A wristband that measures the client’s pulse and blood pressure (systolic and diastolic).
The Vitals application processes the information being gathered by the vitals sensor (pulse and blood pressure). If the application detects an abnormal (i.e., too high or too low) pulse or blood pressure, it alerts the client’s contacts via email.
The application can be launched from the command line with the following commands:
-
mvn exec:java@main- launches the system -
mvn exec:java@sensor_sim_sos- launches the SOS sensor -
mvn exec:java@sensor_sim_stove- launches the Stove sensor -
mvn exec:java@sensor_sim_vitals- launches the Vitals sensor
To view the sensors management window, open the sensors tab.
All of the connected sensors are listed on the right panel. You can select a location for each sensor from the drop-down menu. The sensors that their location is defined, appear on the map.
To view the applications management window, open the applications tab.
The installed applications are listed on the left panel. Click on their names to open their application window. Note that the applications are always running in the background.
To open the installer window, press the green plus button:
Click on Browse to browse for a jar file that contains the application, and then press Install.
If the installation is successful, the application's name will be added to the list on the left panel. If not, an error message will popup, for example:
(here the application weren't installed because an essential sensor that is used by the application, is not connected to the system)
Save the user's personal info
Add information of emergency contacts, and choose their emergency level.
There are several emergency levels, in case a contact is defined with a specific emergency level, he will be informed on any occasion matching his emergency level. The emergency levels are:
- Notify Elderly: Send a notification to the client, and notify him there is an abnormality.
- Email Emergency Contact: Send an email to the emergency contacts in this category.
- SMS Emergency Contact: Send a SMS to the emergency contacts in this category.
- Call Emergency Contact: Call the emergency contacts in this category.
- Contact Police: Notify the emergency contacts in this category in any case requiring contacting the police.
- Contact Hospital: Notify the emergency contacts in this category in any case requiring contacting the hospital.
- Contact Fire Fighters: Notify the emergency contacts in this category in any case requiring contacting the fire fighters.
The system is designed to handle 3rd party sensors and applications.
- Sensors that wish to communicate with the system must follow this communication protocol: The Sensors Communication Protocol
- Applications that wish to be installed on the system must implement the following API: The SmartHouseApplication API
Overview
Quick Start
Smarthouse Usage for Owners
Development Manuals
Continuous Development
Misc.
