This is my first post in 'Forgot Me Not' challenge. I'm one of the FMN challenge finalists, not the Top 15, but one in the Lucky 5 gang. So I'll be receiving the basic kit -- Raspberry Pi B+, enocean sensor kit and an enocean Pi . And this is going to be first rPi. I'm going to deviate from my original project proposal due to some budget constrains. I'll have to cut down my shopping list and include some into my lending list. The idea will still remain the same, but I'll be dropping a few sensors and try to manage most of the things in software. So you are going to see that my project will take sudden turns and twists as and when I manage to get/lend any new hardware.
In this post, I'll be briefly discussing about my proposal and my initial thoughts.This includes my idea in brief and an architectural description. I'm writing this post assuming more people who are not a part of FMN challenge is also going to read this and so I'll be discussing about somethings which the other contestants may be already familiar/expertise with. Most of my posts will be a result of my experiences as a beginner with rPi and sensor kit. However I'll try to refer to other posts/links as much as possible to avoid redundancy and keep focused mostly on the topic.
My proposal is about building a home automation system that is super simple to use and powerful to expand. By super simple to use, I mean that even a non-technically oriented person should be able to operate, if not setup, the system. I have a seen a few home automation systems, but I can't recommend any of those to my Mom and Dad who just started to learn how to use computers. I wanted to build a system for them, which they will be able to operate with the easiness of how they use their mobile phones. The basic thing is then clear, I cannot have any of the cryptic sensor codes or status codes in my top layer of UI. First I thought of building a system on raspberry pi, which runs my own custom server software and GUI. Then I met FHEM, a perl server which is widely used for home automation. Good to start with, it supports many automation peripherals out of the box( includes enocean sensors support too ). Everything is good, except UI. So I thought I'll use FHEM in backend and use a custom webUI. That was my initial proposal. Now I'm going to take my first deviation -- I'll be using openHAB instead. Today morning I downloaded and setup my openHAB server in my ubuntu 14.04 machine, and it's neat. It supports many devices/protocols out-of-the-box. The default GUI is also clean and neat( I'll be soon posting my experiences while setting up openHAB for first time ). The only hurdle I'm seeing is to learn the 'openHAB' way of scripting and wiring things together which basically means learning their scripting language, openHAB designer and the interfaces to hardware.
As I said, I'm designing a system with simplicity to use in mind, there are three central ideas for my project :
The following diagram depicts my basic idea :
This project will consist of three main modules:
1. A Gateway module to interface between the network and room controllers. This module is responsible for taking the taking the status reports send by each room module and update this status to user. Also, for the enocean sensors which are deployed in each rooms this will act as a direct gateway to the system.
1. Gateway between user and home.
2. Gateway between different controllers in rooms.
3. Gateway of enocean sensors to the system.
Gateway will also be running a database to store the collected information for future visualization.
2. Room Controllers : Each room will be having individual controllers which will be updating current room status to the gateway and also switching the devices according to the commands from gateway. This module is responsible to the ambient condition measurement and forwarding it to the gateway. I'll be using arduinos/launchpads as room controllers with associated sensors.
3. User Interface : This module is will be the part user will be presented with. I'm planning to use the default openHAB UI.
So basically this is how it's going to work. You can setup the network by connecting the gateway module to your Wifi/Ethernet router. All the controller modules are connected to your gateway module. Once your gateway module is connected to you home network, you will be able to access the UI from you PC/tablet/smartphone which is also connected to your home network. This part does not require an internet connection to work. Everything is managed inside your home network. When you enable MQTT broker services in your gateway module, you will be able to monitor and control your home via public network.
For those who are new to MQTT, it is a light-weight publish/subscribe messaging protocol mainly used for machine-2-machine(M2M) communication. You can find more information at MQTT. But MQTT is just a protocol, we need softwares which can talk this. Eclipse Paho is a project which provides opensource implementation of tools and libraries of M2M protocols in a handful of different programming languages. openHAB also has MQTT bindings. We'll be using these bindings in our gateway module with openHAB. A good reading about why we need MQTT for communications can be found in IP Post 2: Designing A System Of IOTs- Rant! by ipv1.
So that's it for now. I hope you got a basic overview of my idea and the tools I'm planning to use. As I go, I may change a few, bend a few, twist a few. This project is going to be very agile. I'm eager to hear from you, suggestions, criticisms and new ideas.