Smart Home: An Example of Development and Implementation. Part 3
Smart Home: An Example of Development and Implementation. Part 3
In the final part of our series, I will share my experience of developing a smart home system. The first two parts described my approach to design and the process of developing a smart home solution.
3 трав 2021
1269
Інші статті
How to incrementally migrate the data from RDBMS to Hadoop using Sqoop Incremental Last Modified technique?
How to implement Slowly Changing Dimensions(SCD) Type 2 in Spark?
How to incrementally migrate the data from RDBMS to Hadoop using Sqoop Incremental Append technique?
Why MongoDB don't fetch all the matching documents for the query fired
How to solve the issue of full disk utilization in HDFS Namenode
Can We Use HDFS as Back-up Storage?
How to do Indexing in MongoDB with Elastic Search? Part 1
How to do Indexing in MongoDB with Elastic Search? Part 2
How to store data on browser using NoSQL IndexedDB?
How to Apply MBTI in HR: Motivation for every day. Groups of People & their Motivations
Implementation
To implement a smart home system, you need to select a hardware solution (which is not covered by this article) and a software platform. Today there are many open-source software solutions in the market. In my opinion, the following projects are worth considering (systems that I have had experience with):- OpenHAB is a well-known system written in Java. In my opinion, it is difficult to set and provide a logical connection between smart home devices. You can also use Google Blockly as logic programming tools
- Node-red is a system for implementing simple smart home logic, provided that devices are connected via standard application level protocols (rest, mqtt, etc.). I recommend it for simple solutions, such as a security system, presence imitation system
- ioBroker is a system written in JavaScript (Node JS). It has a simple and appropriate architecture which is sufficiently stable and supports a wide range of devices. It utilizes a simple paradigm: devices with sets of state and capability to subscribe to changes of state. For programming the smart home logic, you can use JavaScript, Google Blockly, or Node-red within ioBroker. It is this system that I have used for the second version of my smart home launched in September 2019
The smart home itself is now implemented on the basis of Rapsberry PI 3 and the Rapsberrian operating system. As already mentioned, ioBroker is used as a control system. The lightning and power supply control is based on the Noolite technology. As additional hardware a GSM module is used, which is utilized for emergency alarms in the absence of an Internet connection, and as an additional channel to control the system through SMS from trusted phones.
A JavaScript script is an ordinary program for NodeJS. For example, this is how a chime of bells is implemented in the author’s smart home:
schedule('0 0,8-23 * * *',() =>
{
let currentTime = new Date();
let hour = currentTime.getHours();
if(hour > 12)
hour -= 12;
let file = hour.toString() + 'h.mp3';
playSound('audio/' + file);
});
The ioBroker code every hour within the interval 8:00AM-11:00PM calls a function that forms the name of the file in which the chime is recorded for a relevant time and plays the required audio file on an external device.
Google Blockly enables you to write code in a visual programming language, without going into details of JavaScript. For example, this method is used to turn on the light in the hall by motion sensor: after sunset the light is turned on to 100%, at night to 10% of brightness.
Here we can see the subscription to the event of the motion sensor’s change state. This code will be called once the state changes and will contain “true.”
Once the sensor changes its state, Node-red blocks are executed automatically. When the sensor transmits a “turn off” command, the script provides a 5-minute delay and then turns off the light. If during 5 minutes the sensor sends the “turn on” command, the delay will be canceled and the light will remain on. Detailed discussion of how to implement Node-red block is outside the scope of this article.
Thus, by treating the smart home as a system for increasing the quality of life, I have managed to realize my dream without substantial expenses. By the time of launching the project for a two-room apartment, its cost was around $810.
Pavel Tsytovich
.NET & C++ Consultant